[PAYLAŞIM] Otomatik Irk seçim , 2 Irk'ta eşit olsun...

  • Konbuyu başlatan Konbuyu başlatan Xpected
  • Başlangıç tarihi Başlangıç tarihi

Xpected

Member
Katılım
19 Haz 2012
Mesajlar
147
Reaction score
0
Puanları
16
Yaş
35
Konum
Istanbul
Merhaba,
Bizzat kendi serverım'da kullandığım ek olarak kattığım ufak bir çalışma sonucu ortaya çıkmış ihtiyaç olduğunu düşündüğüm koddur paylaşmak istedim bu sebeple serverlarda ırk eşitsizliği gibi sorunlar yaşanmaz daha eğlenceli bir oyun çıkarmak adına kullanabilirsiniz :)
Kodun ilk düzenlemesi daha önceden everybodyfool tarafından yapılmıştır.

Kod:
CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]@AccountID	varchar(21),
@Password	varchar(13),
@nRet		smallint	OUTPUT
AS
DECLARE @pwd varchar(32), @Authority int, @count int, @Nation int, @CharNum int,@Statu int,@Faruk int
SET @Statu = 1
BEGIN


	-- <RETRIEVE ACCOUNT DATA>
	SELECT @pwd = strPasswd, @Authority = strAuthority FROM TB_USER WHERE strAccountID = @AccountID
	-- </RETRIEVE ACCOUNT DATA>


	-- <ACCOUNT DOES NOT EXIST>
	IF @@ROWCOUNT = 0 
	BEGIN
		SET @nRet = 0
		RETURN
	END
	-- </ACCOUNT DOES NOT EXIST>


	-- <BANNED>
	IF @Authority = 255
	BEGIN
		SET @nRet = 0
		RETURN
	END
	-- </BANNED>
		
	-- <EMPTY PASSWORD>
	ELSE IF @pwd IS NULL
	BEGIN
		SET @nRet = 0
		RETURN
	END
	-- </EMPTY PASSWORD>
	
	-- <RETRIEVE NATION AND CHARACTER COUNT>
	SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
	SELECT @Faruk = COUNT(strAccountID) FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
	-- </RETRIEVE NATION AND CHARACTER COUNT>


	IF @Statu = 1
	BEGIN
		IF @Faruk > 0
		BEGIN
			SET @nRet = @Nation + 1
			RETURN
		END
		ELSE
		BEGIN
			DECLARE @K int,@H int,@CountAccount int
			SELECT @K = count(strAccountID) FROM ACCOUNT_CHAR WHERE bNation = 1
			SELECT @H = count(strAccountID) FROM ACCOUNT_CHAR WHERE bNation = 2
			IF @K < @H --Karus az
			BEGIN
				
				INSERT INTO ACCOUNT_CHAR (strAccountID, bNation ) VALUES (@AccountID, 1)
				INSERT INTO WAREHOUSE ( strAccountID ) VALUES (@AccountID)
				SET @nRet = 2
				RETURN
			END
			
			IF @H < @K --Human az
			BEGIN
				INSERT INTO ACCOUNT_CHAR (strAccountID, bNation ) VALUES (@AccountID, 2)
				INSERT INTO WAREHOUSE ( strAccountID ) VALUES (@AccountID)
				SET @nRet = 3
				RETURN
			END
			
			IF @H = @K --Irklar Eşit Kendisi Seçsin
			BEGIN
				SET @nRet = 1
				RETURN
			END
		END
	END
	ELSE
	BEGIN
		-- <NO NATION SELECTED>
		IF @Nation = 0 OR @CharNum = 0
		BEGIN
			SET @nRet = 1
		END
		-- </NO NATION SELECTED>
		ELSE
		-- <NATION ALREADY SELECTED>
		BEGIN
			SET @nRet = @Nation + 1
		END
		-- </NATION ALREADY SELECTED>
	END
END
 
Geri
Üst Alt