Kod:
CREATE PROCEDURE CHANGE_KNIGHTS_LEADER
(
@KnightsLeaderOld varchar(30),
@KnightsLeaderNew varchar(30)
)
AS
/*
Author : Frmtr.com / 0uikShare
*/
BEGIN TRAN
DECLARE
@KnightsNumOldLeader int,
@FameStatusOldLeader tinyint,
@NationOldLeader tinyint,
@InGameStatusOldLeader tinyint,
@KnightsNumNewLeader int,
@NationNewLeader tinyint,
@InGameStatusNewLeader tinyint,
@KnightsName varchar(50),
@CheckChief1 tinyint,
@CheckChief2 tinyint,
@CheckChief3 tinyint,
@CheckAssist tinyint,
@CheckAssistStatus tinyint,
@CheckLeaderOld tinyint,
@CheckLeaderNew tinyint
/*
Check Assist Status
1 : On - Checking Assist
2 : Off - Not Check
*/
-- Start
SET @CheckAssistStatus = 1
-- End
SELECT @CheckLeaderOld = COUNT(strUserID) FROM USERDATA WHERE strUserID = @KnightsLeaderOld
SELECT @CheckLeaderNew = COUNT(strUserID) FROM USERDATA WHERE strUserID = @KnightsLeaderNew
IF @CheckLeaderOld = 0
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderOld)) + ' Kullanıcı Adında Bir Oyuncu Bulunamadı.'
END
ELSE IF @CheckLeaderNew = 0
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderNew)) + ' Kullanıcı Adında Bir Oyuncu Bulunamadı.'
END
ELSE
BEGIN
SELECT @InGameStatusOldLeader = COUNT(strCharID) FROM CURRENTUSER WHERE strCharID = @KnightsLeaderOld
SELECT @InGameStatusNewLeader = COUNT(strCharID) FROM CURRENTUSER WHERE strCharID = @KnightsLeaderNew
IF @InGameStatusOldLeader <> 0
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderOld)) + ' Kullanıcısı Oyundadır, Bu Sebeplen Clan Lider Değişimi Yapılamadı.'
END
ELSE IF @InGameStatusNewLeader <> 0
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderOld)) + ' Kullanıcısı Oyundadır, Bu Sebeplen Clan Lider Değişimi Yapılamadı.'
END
ELSE
BEGIN
SELECT @KnightsNumOldLeader = Knights, @FameStatusOldLeader = Fame, @NationOldLeader = Nation FROM USERDATA WHERE strUserID = @KnightsLeaderOld
SELECT @KnightsName = IDName FROM KNIGHTS WHERE IDNum = @KnightsNumNewLeader
IF @FameStatusOldLeader = 0
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderOld)) + ' Clan Lideri Değil, Bu Sebepten Dolayı İşlem Yapılamadı.'
END
ELSE
BEGIN
SELECT @KnightsNumNewLeader = Knights, @NationNewLeader = Nation FROM USERDATA WHERE strUserID = @KnightsLeaderNew
IF @NationOldLeader = @NationNewLeader
BEGIN
IF @KnightsNumOldLeader <> @KnightsNumNewLeader
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderNew)) + ' Kullanıcısı Farklı Bir Clanda, Lider Değişimi İçin Kullanıcın Aynı Clanda Olması ve Assist Gerekmektedir.'
END
ELSE IF @CheckAssistStatus = 1
BEGIN
SELECT @CheckChief1 = Count(ViceChief_1) FROM KNIGHTS WHERE ViceChief_1 = @KnightsLeaderNew AND ViceChief_1 is not null
SELECT @CheckChief2 = Count(ViceChief_2) FROM KNIGHTS WHERE ViceChief_2 = @KnightsLeaderNew AND ViceChief_2 is not null
SELECT @CheckChief3 = Count(ViceChief_3) FROM KNIGHTS WHERE ViceChief_3 = @KnightsLeaderNew AND ViceChief_3 is not null
IF (@CheckChief1 <> 0) OR (@CheckChief2 <> 0) OR (@CheckChief3 <> 0)
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderNew)) + ' Kullanıcısı ' + RTRIM(LTRIM(@KnightsName)) + ' Clanında Assist Değildir, Lütfen Assist Yapınız.'
END
END
ELSE
BEGIN
-- Updating Table for Old Leader
UPDATE USERDATA SET Knights = @KnightsNumOldLeader, Fame = 0 WHERE strUserID = @KnightsLeaderOld
-- Updating Table for New Leader
UPDATE KNIGHTS SET ViceChief_1 = NULL WHERE Chief = @KnightsLeaderNew AND ViceChief_1 is not null
UPDATE KNIGHTS SET ViceChief_2 = NULL WHERE Chief = @KnightsLeaderNew AND ViceChief_2 is not null
UPDATE KNIGHTS SET ViceChief_3 = NULL WHERE Chief = @KnightsLeaderNew AND ViceChief_3 is not null
UPDATE KNIGHTS SET Chief = @KnightsLeaderNew WHERE Chief = @KnightsLeaderOld
UPDATE USERDATA SET Fame = 1 WHERE strUserID = @KnightsLeaderNew
PRINT RTRIM(LTRIM(@KnightsName)) + ' Clanın, Clan Lideri ' + RTRIM(LTRIM(@KnightsLeaderNew)) + ' Olarak Değişmiştir.'
END
END
ELSE
BEGIN
PRINT RTRIM(LTRIM(@KnightsLeaderOld)) + ' İle ' + RTRIM(LTRIM(@KnightsLeaderNew)) + ' Farklı IRKlardan, Bu Sebeple Lider Değişimi Yapılamadı.'
END
END
END
END
COMMIT TRAN
GO
Kullanımı için:
Kod:
EXEC CHANGE_KNIGHTS_LEADER 'ESKICLANLIDERI','YENICLANLIDERI'
Örneğin EXEC CHANGE_KINGHTS_LEADER '0uikShare','FrmTR'