Clan Irk Değiştirme Kodu

Konu sahibi son olarak 2429 gün önce görüldü
CLAN IRK TRANSFERİ
Özellikler:
-Clandaki oyuncular ile birlikte Clan karşı ırka geçer
-Clandaki oyuncuların yan karakterleri de karşı ırka geçer
-Clandaki bir oyuncu Online ise AKUMA'nın Sistemi olan ve neredeyse tüm
Database'lerde bulunan ACCOUNT NATION TRANSFER sistemine devredilir, Oyuncu ilk relog da işlem tamamlanır. Yani Server açıkken ya da oyuncu online iken dahi Clan Transferini yapabilirsiniz.
-Yeni Eklenen: Clan Lideri veya liderin yan karakterleri online ise transfer islemi yapilmaz.
-Yeni Eklenen: Clan IDNum degisimi eklendi. Bir arkadasin uyarisi uzerine guncelleme yaptim.
Karus Idnum 1-5000, Human IDNum 15000-20000 arasi Update olacaktir. 24.03.2011



KULLANIM:


Kod:
EXEC CLAN_NATION_TRANSFER 'CLAN_İSMİ'


PROSEDÜR

Random Sayi Uretmek icin Gerekli Tablo.
Bu tabloyu ekleyin ve silmeyin.



Kod:
USE [kn_online]
GO
/****** Object:  Table [dbo].[CLANREF]    Script Date: 03/25/2011 02:00:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CLANREF](
    [GNum] [int] NULL
) ON [PRIMARY]
GO
 
DECLARE @sayac Int = 0
WHILE 1=1
BEGIN
Set @sayac = @sayac + 1
If @sayac > 20000 BREAK
Insert Into CLANREF Values(@sayac)
End


Yukardaki kod SQL 2000 de hata verirse, bu dosyayı indirip içindeki kodu QA da uygulayın.[/size]


Prosedurumuz


Kod:
USE [kn_online]
GO
/****** Object:  StoredProcedure [dbo].[CLAN_NATION_TRANSFER]    Script Date: 03/24/2011 23:42:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[CLAN_NATION_TRANSFER]
@ClanName varchar(21)
AS
/*
Yapan : AKI
16.02.2011
Update:24.03.2011
*/
DECLARE @bNation tinyint, @NewNation tinyint,@ClanNation tinyint,@ClanNum smallint
 
SELECT @ClanNum=IdNum, @ClanNation=Nation from KNIGHTS where IDName=@ClanName
 
    DECLARE @ClanUser Char(21)
    DECLARE @Class tinyint
    DECLARE @Race tinyint
 
    DECLARE CLAN CURSOR FOR
    SELECT strUserID,Class,Race FROM USERDATA WHERE Knights = @ClanNum
 
    OPEN CLAN
 
    FETCH NEXT FROM CLAN INTO @ClanUser,@Class,@Race
    WHILE @@FETCH_STATUS =0
    BEGIN
 
    DECLARE @AccountId char(21)
        SELECT @AccountId=strAccountID from ACCOUNT_CHAR WHERE  strCharID1=@ClanUser or strCharID2=@ClanUser or strCharID3=@ClanUser
        SELECT @bNation = bNation FROM ACCOUNT_CHAR WHERE strAccountID = @AccountId
 
        IF @bNation = 1
            SET @NewNation = 2
        ELSE
            SET @NewNation = 1
            SET @ClanUser = NULL
        SET @Race = 0
        SET @Class = 0
 
        SELECT @ClanUser = strCharID1 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID AND strCharID1 IS NOT NULL
        IF @ClanUser IS NOT NULL
        BEGIN
            SELECT @Race = Race,@Class = Class FROM USERDATA WHERE strUserId = @ClanUser
            IF @Race = 1
                SET @Race = 12
            ELSE IF @Race = 2
                SET @Race = 12
            ELSE IF @Race = 3
                SET @Race = 13
            ELSE IF @Race = 4
                SET @Race = 13
            ELSE IF @Race = 11
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 204
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 211
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 212
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 204
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 211
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 212
                SET @Race = 4
 
            IF @NewNation = 1
                SET @Class = @Class - 100
            ELSE
                SET @Class = @Class + 100
 
            UPDATE USERDATA SET Nation = @NewNation,Race = @Race,Class =  @Class, Rank = 0, Title = 0 FROM USERDATA WHERE strUserId = @ClanUser
END
        SET @ClanUser = NULL
        SET @Race = 0
        SET @Class = 0
 
        SELECT @ClanUser = strCharID2 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID AND strCharID2 IS NOT NULL
 
        IF @ClanUser IS NOT NULL
        BEGIN
            SELECT @Race = Race,@Class = Class FROM USERDATA WHERE strUserId = @ClanUser
 
            IF @Race = 1
                SET @Race = 12
            ELSE IF @Race = 2
                SET @Race = 12
            ELSE IF @Race = 3
                SET @Race = 13
            ELSE IF @Race = 4
                SET @Race = 13
            ELSE IF @Race = 11
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 204
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 211
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 212
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 204
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 211
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 212
                SET @Race = 4
 
            IF @NewNation = 1
                SET @Class = @Class - 100
            ELSE
                SET @Class = @Class + 100
 
            UPDATE USERDATA SET Nation = @NewNation,Race = @Race,Class =  @Class, Rank = 0, Title = 0 FROM USERDATA WHERE strUserId = @ClanUser
 
END
 
        SET @ClanUser = NULL
        SET @Race = 0
        SET @Class = 0
 
        SELECT @ClanUser = strCharID3 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID AND strCharID3 IS NOT NULL
 
        IF @ClanUser IS NOT NULL
        BEGIN
            SELECT @Race = Race,@Class = Class FROM USERDATA WHERE strUserId = @ClanUser
 
            IF @Race = 1
                SET @Race = 12
            ELSE IF @Race = 2
                SET @Race = 12
            ELSE IF @Race = 3
                SET @Race = 13
            ELSE IF @Race = 4
                SET @Race = 13
            ELSE IF @Race = 11
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 201
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 205
                SET @Race = 1
            ELSE IF @Race = 13 AND @Class = 206
                SET @Race = 1
            ELSE IF @Race = 12 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 202
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 207
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 208
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 203
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 209
                SET @Race = 3
            ELSE IF @Race = 13 AND @Class = 210
                SET @Race = 3
            ELSE IF @Race = 12 AND @Class = 204
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 211
                SET @Race = 2
            ELSE IF @Race = 12 AND @Class = 212
                SET @Race = 2
            ELSE IF @Race = 13 AND @Class = 204
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 211
                SET @Race = 4
            ELSE IF @Race = 13 AND @Class = 212
                SET @Race = 4
 
            IF @NewNation = 1
                SET @Class = @Class - 100
            ELSE
                SET @Class = @Class + 100
 
            UPDATE USERDATA SET Nation = @NewNation,Race = @Race,Class =  @Class, Rank = 0, Title = 0 FROM USERDATA WHERE strUserId = @ClanUser
        END
 
        UPDATE ACCOUNT_CHAR SET bNation = @NewNation WHERE strAccountID = @AccountID
 
        DECLARE [USER=6298]Onu[/USER]ser tinyint
        SELECT [USER=6298]Onu[/USER]ser = Count(*) FROM CURRENTUSER WHERE strAccountID = @AccountID
        IF [USER=6298]Onu[/USER]ser <> 0 
        BEGIN
            INSERT INTO ACCOUNT_NATION_TRANSFERS_QUEUE  (AccountID,Process,Description,UpdatedTime) VALUES (@AccountID,0,'Henüz  İşlem Yapılmadı.',GETDATE())
        END
 
    FETCH NEXT FROM CLAN INTO @ClanUser,@Class,@Race
END
CLOSE CLAN
DEALLOCATE CLAN
 
    DECLARE @NewCAH smallint,@NewCAK smallint
        SET @NewCAK = (SELECT TOP 1 GNum FROM CLANREF WHERE(GNum Between  15001 AND 20000) AND GNum Not In (SELECT IDNum FROM KNIGHTS) ORDER BY  NewID())
        SET @NewCAH = (SELECT TOP 1 GNum FROM CLANREF WHERE(GNum Between  1 AND 5000) AND GNum Not In (SELECT IDNum FROM KNIGHTS) ORDER BY  NewID())        
        IF @ClanNation =1
        BEGIN
            UPDATE USERDATA SET Knights=@NewCAK WHERE Knights=@ClanNum
            UPDATE KNIGHTS_RATING SET shIndex=@NewCAK WHERE shIndex=@ClanNum
            UPDATE KNIGHTS_USER SET sIDNum=@NewCAK WHERE sIDNum=@ClanNum
            UPDATE KING_ELECTION_LIST SET nKnights=@NewCAK WHERE nKnights=@ClanNum
            UPDATE KNIGHTS_SIEGE_WARFARE SET sMasterKnights=@NewCAK WHERE sMasterKnights=@ClanNum
            UPDATE KNIGHTS SET Nation=@NewNation, IDNum=@NewCAK WHERE IDNum=@ClanNum
        END
 
        IF @ClanNation =2
        BEGIN
            UPDATE USERDATA SET Knights=@NewCAH WHERE Knights=@ClanNum
            UPDATE KNIGHTS_RATING SET shIndex=@NewCAH WHERE shIndex=@ClanNum
            UPDATE KNIGHTS_USER SET sIDNum=@NewCAH WHERE sIDNum=@ClanNum
            UPDATE KING_ELECTION_LIST SET nKnights=@NewCAH WHERE nKnights=@ClanNum
            UPDATE KNIGHTS_SIEGE_WARFARE SET sMasterKnights=@NewCAH WHERE sMasterKnights=@ClanNum
            UPDATE KNIGHTS SET Nation=@NewNation, IDNum=@NewCAH WHERE IDNum=@ClanNum
        END
 
        IF @NewNation = 1
        BEGIN
            PRINT '# ' + @ClanName + ' Clani Human IRK''ından Karus IRK''ına Transfer Edildi.'
        END
        ELSE
        BEGIN
            PRINT '# ' + @ClanName + ' Clani Karus IRK''ından Human IRK''ına Transfer Edildi.'
        END


İyi Forumlar...

~Saygılar
 
Geri