Res Nasıl Atılıyor Bilen Varmı ACİLLL ÇOK ÖNEMLİ LÜTFEN YARDM EDİİN.!

  • Konbuyu başlatan Konbuyu başlatan muzo1998
  • Başlangıç tarihi Başlangıç tarihi
Konu Yazar

muzo1998

Member
Haz
836
0
Cevap: Res Nasıl Atılıyor Bilen Varmı ACİLLL ÇOK ÖNEMLİ LÜTFEN YARDM EDİİN.!

muzo1998 @hotmail.com.tr
ekleyn

ÇOK LAZIM BİLEN EKLESİN... YAPMASINI ÖGRETENE GMLİK WERİCEM...

muzo1998 @hotmail.com.tr [ßoSLuqu Siilin...]
 
Cevap: Res Nasıl Atılıyor Bilen Varmı ACİLLL ÇOK ÖNEMLİ LÜTFEN YARDM EDİİN.!

Selamlar,Okulların tatil olmasıyla bir çok acemi arkadaşımız server açmaya başladı ve forumda bu konu hakkında şuanki tarihimizde bir çok konu gördüm ve bu konuyu açma gereği duydum..buyrun başlayalım.


Öncelikle reset kodumuzun özellikleri.


Askıda kalanlar charlar,(online sıfırlama)
Clan kolluğu ve rank güncellemeleri.
Oyun hesabı bloklanan userlerin oyun listelerinde gözükmemesi.
Oyun yetkililerinin adına benzer alınmış nicklerin engellenmesi.


Aşağıdaki kodları serverınıza nasıl ekleyeceğiniz hakkında bir fikriniz yoksa şöyle başlayalım.


Başlat Menüsünden SQL Serverin kurulu olduğu klasöre gidiyoruz.orada Query Analy..tıklıyoruz ve açılan pencerinin üst kısmından databasemizi seçiyoruz ve aşağıdaki boş metin kutusuna aşağıdaki kodları sırayla tek tek giriyoruz ve play f5 tuşlarını kullanarak aktif hale getiriyoruz.
Kod:
CREATE PROCEDURE OYUNCU_SIRALAMA_GUNCELLE
AS
/*
******* 
*/
DECLARE @strUserId char(21)
DECLARE @Loyalty int
DECLARE @Knights int
DECLARE @KnightName char(50)
DECLARE @IsValidKnight int
DECLARE @Index smallint
DECLARE @IsValidCount tinyint
DECLARE @RankName varchar(30)




SELECT @IsValidCount = Count(*) FROM USER_KNIGHTS_RANK




IF @IsValidCount < 100
BEGIN




   SET @Index = 1




   WHILE @Index < 101
   BEGIN




      IF @Index = 1
      BEGIN
         SET @RankName = 'Gold Knight'
      END
      IF @Index > 1 AND @Index <= 4
      BEGIN
         SET @RankName = 'Silver Knight'
      END
      IF @Index > 4 AND @Index <= 9
      BEGIN
         SET @RankName = 'Mirage Knight'
      END
      IF @Index > 9 AND @Index <= 10
      BEGIN
         SET @RankName = 'Shadow Knight'
      END
      IF @Index > 25 AND @Index <= 50
      BEGIN
         SET @RankName = 'Mist Knight'
      END
      IF @Index > 50 AND @Index <= 100
      BEGIN
         SET @RankName = 'Training Knight'
      END
      
      INSERT INTO USER_KNIGHTS_RANK (shIndex,strName,strElmoUserID,strElmoKnightsName,nElmoLoyalty,strKarusUserID,strKarusKnightsName,nKarusLoyalty,nMoney) VALUES (@Index,@RankName,NULL,NULL,0,NULL,NULL,0,1000000)
   
      SET @Index = @Index + 1
   END
END




SET @Index = 1
SET @strUserId = NULL
SET @Loyalty = 0
SET @Knights = 0




DECLARE RANKING_CRS CURSOR FOR




SELECT TOP 100 strUserId,Loyalty,Knights FROM USERDATA WHERE Nation = 1 AND Authority = 1 ORDER BY Loyalty DESC




OPEN RANKING_CRS
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@Loyalty,@Knights
WHILE @@FETCH_STATUS = 0 
BEGIN




SET @KnightName = NULL
SET @IsValidKnight = 0




IF @Knights <> 0
BEGIN
   SELECT @IsValidKnight = COUNT(IDName) FROM KNIGHTS WHERE IDNum = @Knights
   
    IF @IsValidKnight <> 0
    BEGIN
      SELECT @KnightName = IDName FROM KNIGHTS WHERE IDNum = @Knights
    END
END
   
    UPDATE USER_KNIGHTS_RANK SET strKarusUserID = @strUserId, strKarusKnightsName = @KnightName, nKarusLoyalty = @Loyalty WHERE shIndex = @Index
   
    SET @Index = @Index + 1
           
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@Loyalty,@Knights
END
CLOSE RANKING_CRS
DEALLOCATE RANKING_CRS




SET @Index = 1
SET @strUserId = NULL
SET @Loyalty = 0
SET @Knights = 0




DECLARE RANKING_CRS CURSOR FOR




SELECT TOP 100 strUserId,Loyalty,Knights FROM USERDATA WHERE Nation = 2 AND Authority = 1 ORDER BY Loyalty DESC




OPEN RANKING_CRS
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@Loyalty,@Knights
WHILE @@FETCH_STATUS = 0 
BEGIN




SET @KnightName = NULL
SET @IsValidKnight = 0




IF @Knights <> 0
BEGIN
   SELECT @IsValidKnight = COUNT(IDName) FROM KNIGHTS WHERE IDNum = @Knights
   
    IF @IsValidKnight <> 0
    BEGIN
      SELECT @KnightName = IDName FROM KNIGHTS WHERE IDNum = @Knights
    END
END
   
    UPDATE USER_KNIGHTS_RANK SET strElmoUserID = @strUserId, strElmoKnightsName = @KnightName, nElmoLoyalty = @Loyalty WHERE shIndex = @Index
   
    SET @Index = @Index + 1
           
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@Loyalty,@Knights
END
CLOSE RANKING_CRS
DEALLOCATE RANKING_CRS




Kod:
CREATE PROCEDURE OYUNCU_IRK_SIRALAMASI_GUNCELLE
AS
/*
******* 
*/
BEGIN TRAN




DECLARE @strUserId char(21)
DECLARE @LoyaltyMonthly int
DECLARE @Index smallint
DECLARE @IsValidCount tinyint
DECLARE @RankName varchar(30)
DECLARE @DifferenceBetweenUser int




SELECT @IsValidCount = Count(*) FROM USER_PERSONAL_RANK




IF @IsValidCount < 100
BEGIN
   
   SET @Index = 1




   WHILE @Index < 101
   BEGIN




      IF @Index = 1
      BEGIN
         SET @RankName = 'Gold Knight'
      END
      IF @Index > 1 AND @Index <= 4
      BEGIN
         SET @RankName = 'Silver Knight'
      END
      IF @Index > 4 AND @Index <= 9
      BEGIN
         SET @RankName = 'Mirage Knight'
      END
      IF @Index > 9 AND @Index <= 10
      BEGIN
         SET @RankName = 'Shadow Knight'
      END
      IF @Index > 25 AND @Index <= 50
      BEGIN
         SET @RankName = 'Mist Knight'
      END
      IF @Index > 50 AND @Index <= 100
      BEGIN
         SET @RankName = 'Training Knight'
      END
      
      INSERT INTO USER_PERSONAL_RANK (nRank,strPosition,nElmoUP,strElmoUserID,nElmoLoyaltyMonthly,nElmoCheck,nKarusUP,strKarusUserID,nKarusLoyaltyMonthly,nKarusCheck,nSalary) VALUES (@Index,@RankName,0,NULL,0,1000000,0,NULL,0,1000000,1000000)
         
      SET @Index = @Index + 1
   END
END




SET @Index = 1
SET @strUserId = NULL
SET @LoyaltyMonthly = 0




DECLARE RANKING_CRS CURSOR FOR




SELECT TOP 100 strUserId,LoyaltyMonthly FROM USERDATA WHERE Nation = 1 AND Authority = 1 ORDER BY LoyaltyMonthly DESC




OPEN RANKING_CRS
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@LoyaltyMonthly
WHILE @@FETCH_STATUS = 0 
BEGIN
   
    UPDATE USER_PERSONAL_RANK SET strKarusUserID = @strUserId, nKarusUP = @Index, nKarusLoyaltyMonthly = @LoyaltyMonthly WHERE nRank = @Index
   
    SET @DifferenceBetweenUser = 0
   
    IF @Index = 1
    BEGIN
   
      UPDATE USER_PERSONAL_RANK SET nKarusCheck = 0 WHERE nRank = @Index
   
    END
    ELSE
    BEGIN
   
      SELECT @DifferenceBetweenUser = nKarusLoyaltyMonthly FROM USER_PERSONAL_RANK WHERE nRank = @Index + 1
   
       SET @DifferenceBetweenUser = @LoyaltyMonthly - @DifferenceBetweenUser
   
       UPDATE USER_PERSONAL_RANK SET nKarusCheck = @DifferenceBetweenUser WHERE nRank = @Index + 1
      
    END
       
    SET @Index = @Index + 1
           
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@LoyaltyMonthly
END
CLOSE RANKING_CRS
DEALLOCATE RANKING_CRS




SET @Index = 1
SET @strUserId = NULL
SET @LoyaltyMonthly = 0




DECLARE RANKING_CRS CURSOR FOR




SELECT TOP 100 strUserId,LoyaltyMonthly FROM USERDATA WHERE Nation = 2 AND Authority = 1 ORDER BY LoyaltyMonthly DESC




OPEN RANKING_CRS
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@LoyaltyMonthly
WHILE @@FETCH_STATUS = 0 
BEGIN
   
    UPDATE USER_PERSONAL_RANK SET strElmoUserID = @strUserId, nElmoUP = @Index, nElmoLoyaltyMonthly = @LoyaltyMonthly WHERE nRank = @Index   
   
    SET @DifferenceBetweenUser = 0
   
    IF @Index = 1
    BEGIN
   
      UPDATE USER_PERSONAL_RANK SET nElmoCheck = 0 WHERE nRank = @Index
   
    END
    ELSE
    BEGIN
   
      SELECT @DifferenceBetweenUser = nElmoLoyaltyMonthly FROM USER_PERSONAL_RANK WHERE nRank = @Index + 1
   
       SET @DifferenceBetweenUser = @LoyaltyMonthly - @DifferenceBetweenUser
   
       UPDATE USER_PERSONAL_RANK SET nElmoCheck = @DifferenceBetweenUser WHERE nRank = @Index + 1
      
    END
   
    SET @Index = @Index + 1
           
FETCH NEXT FROM RANKING_CRS INTO @strUserId,@LoyaltyMonthly
END
CLOSE RANKING_CRS
DEALLOCATE RANKING_CRS




UPDATE USER_PERSONAL_RANK SET nSalary = REPLACE(nElmoLoyaltyMonthly - nKarusLoyaltyMonthly,'-','')




COMMIT TRAN




Kod:
CREATE PROCEDURE KLAN_DERECE_GUNCELLE
AS
/*
*******
*/
DECLARE @RankingMAX tinyint
DECLARE @SuspendedPlayersIncluded tinyint
SET @RankingMAX = 5 -- MAX 255
SET @SuspendedPlayersIncluded = 0 -- 0 = Cezasýz Oyuncular / 1 = Cezasýz ve Cezalý Oyuncular (Game Master'lar Her Ýki Koþulda da Dahil Edilmez.)




-- KNIGHTS_RATING Tablosunu Boþaltýyoruz...
TRUNCATE TABLE KNIGHTS_RATING
-- KNIGHTS Tablosunu Güncelliyoruz...
IF @SuspendedPlayersIncluded = 0
   UPDATE KNIGHTS SET Points = (SELECT SUM(Loyalty) FROM USERDATA WHERE Authority = 1 AND Knights = IDNum)
ELSE
   UPDATE KNIGHTS SET Points = (SELECT SUM(Loyalty) FROM USERDATA WHERE Authority <> 0 AND Knights = IDNum)
-- KNIGHTS_RATING'i Dolduruyoruz...
INSERT INTO KNIGHTS_RATING SELECT IDNum, IDName, Points FROM KNIGHTS ORDER BY Points DESC
-- KNIGHTS Rankingi Ayarlýyoruz
UPDATE KNIGHTS SET Ranking = 0
UPDATE KNIGHTS SET Ranking = (SELECT nRank FROM KNIGHTS_RATING WHERE shIndex = IDNum AND nRank <= @RankingMAX) WHERE (SELECT nRank FROM KNIGHTS_RATING WHERE shIndex = IDNum AND nRank <= @RankingMAX) <= @RankingMAX




Kod:
CREATE PROCEDURE GUNCELLE
AS
******* 
BEGIN




-- Güncelleme
EXEC KLAN_DERECE_GUNCELLE
EXEC OYUNCU_IRK_SIRALAMASI_GUNCELLE
EXEC OYUNCU_SIRALAMA_GUNCELLE




-- Online Listesinin Son Kez Temizlenmesi
TRUNCATE TABLE CURRENTUSER




-- Sahte GM'lerin bannlanmasý...
UPDATE USERDATA SET authority = '255' WHERE struserid like '%GM' and authority = '1' or struserid like 'GM%' and authority = '1'




-- Bannlý userlarýn Aylýk ve Günlük NP'Lerinin sýfýrlanmasý...
UPDATE USERDATA SET Loyalty  =  '0' where Authority = '255'
UPDATE USERDATA SET LoyaltyMonthly = '0'where Authority = '255'




PRINT 'Reset tamamlandi.'




END




GO




İşlemleri tamamladıysanız aşağıdaki kodu kullanarak her defasında res atabilirsiniz.
Kod:
EXEC GUNCELLE
 
Geri
Üst Alt