PoiSSioN Admin
Mesaj Sayısı : 127 Rep Puanı : 333 Kayıt tarihi : 02/08/09 Yaş : 29 Nerden : Bilmem x) Ruh hali : Takımın :
| Konu: [PAYLAŞIM] Clan Lideri Değişimi C.tesi Eyl. 26, 2009 7:57 pm | |
| Selamlar, Clan Lider Değişimi İçin Bir Procedure Oluşturdum, Umarım Herkeze Faydalı Olur. Özelliklerini Sayacak Olursak, 1. Hataya Sebebiyet Vermemesi Açısından Karakterler Kontrolü Yapılıyor,USERDATA da Varmı Yokmu Olayı. 2. IRK Kontrolü Yapıyor, Eğer Farklı Irklardan ise Lider Değişimi Olmuyor, Buna Gerek Yok Aslında Ama SQL i Yormamak Adına Alttaki Kodlar İletilmesin Diye Yaptım. 3. Clan Kontrolü Yapılıyor, Eğer Farklı Clanlardan ise Lider Değişimi Olmuyor. 4. Assist Kontrolü Yapılabiliyor, İsteğe Göre Kapatıp Açabilirsiniz yani Kısacası Assist Kontrolü Yapmadanda Sadece Clan Üyesi ise Bile Lider Değişimi Yaptırabilirsiniz. 5. Eski Lider ile Yeni Liderin Oyundaki Durumu CurrentUserdan Kontrol Ediliyor Eğer Oyunda ise Clan Değişimi Gerçekleşmiyor. 6. Eski Kullanıcının Clan Lideri Olup Olmadığı Kontrol Ediliyor. 7. Yukarıda Yazan Herşey İçin Hata Mesajları PRINT Edilmektedir. Kısacası Herşeyin Kontrolü Var - Kod:
-
CREATE PROCEDURE CHANGE_KNIGHTS_LEADER ( @KnightsLeaderOld varchar(30), @KnightsLeaderNew varchar(30) ) AS /* Author : Apex */ 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 = 2 -- 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 Kullanımına İlişkin Bilgiler ; - Kod:
-
Kullanım : EXEC CHANGE_KNIGHTS_LEADER 'ESKICLANLIDERI','YENICLANLIDERI' Örnek : EXEC CHANGE_KNIGHTS_LEADER 'Apex','GOUKI' Eğer Ben Assit Kontrolü Yaptırmayacam Clan ÜYeside Olsa Yapsın Lider Değişimini Diyorsanız Procedurenin En Üstüne Bakarsanız - Kod:
-
/* Check Assist Status 1 : On - Checking Assist 2 : Off - Not Check */ -- Start SET @CheckAssistStatus = 1 -- End Eğer Yukarıda "SET @CheckAssistStatus = 1" Bölümünü "2" Yaparsanız, Assist Kontrolü Yapılmaz. downloader in Dışına Çıkmaz İnşallah. Kolay Gelsin. | |
|