Code:
USE [MuOnline]
GO
/****** Object: StoredProcedure [dbo].[WZ_CreateCharacter] Script Date: 01/02/2017 23:42:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER Procedure [dbo].[WZ_CreateCharacter]
@accountID varchar(10), --// °èÁ¤ Á¤º¸
@name varchar(10), --// ij¸¯ÅÍ
@class tinyint --// Class Type
AS
Begin
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @result tinyint
--// °á°ú°ª ÃʱâÈ
SET @result = 0x00
--====================================================================================
-- ij¸¯ÅÍ Á¸Àç¿©ºÎ È®ÀÎ
--====================================================================================
If EXISTS ( SELECT Name FROM Character WHERE Name = @name )
begin
SET @result = 0x01 --// µ¿ÀÏ Ä³¸¯Å͸í Á¸Àç
GOTO ProcEnd
end
BEGIN TRAN
--====================================================================================
-- °èÁ¤ Á¸Àç ¿©ºÎ È®ÀÎ ¹× ºó ½½·Ô Á¤º¸ È®ÀÎÇÏ¿© ÀúÀå
--====================================================================================
If NOT EXISTS ( SELECT Id FROM AccountCharacter WHERE Id = @accountID )
begin
INSERT INTO dbo.AccountCharacter(Id, GameID1, GameID2, GameID3, GameID4, GameID5, GameIDC)
VALUES @accountID, @name, NULL, NULL, NULL, NULL, NULL)
SET @result = @@Error
end
else
begin
--// ij¸¯ÅÍ ºó ½½·Ô ¼³Á¤
Declare @g1 varchar(10), @g2 varchar(10), @g3 varchar(10), @g4 varchar(10), @g5 varchar(10)
SELECT @g1=GameID1, @g2=GameID2, @g3=GameID3, @g4=GameID4, @g5=GameID5 FROM dbo.AccountCharacter Where Id = @accountID
if( ( @g1 Is NULL) OR (Len(@g1) = 0))
begin
UPDATE AccountCharacter SET GameID1 = @name
WHERE Id = @accountID
SET @result = @@Error
end
else if( @g2 Is NULL OR Len(@g2) = 0)
begin
UPDATE AccountCharacter SET GameID2 = @name
WHERE Id = @accountID
SET @result = @@Error
end
else if( @g3 Is NULL OR Len(@g3) = 0)
begin
UPDATE AccountCharacter SET GameID3 = @name
WHERE Id = @accountID
SET @result = @@Error
end
else if( @g4 Is NULL OR Len(@g4) = 0)
begin
UPDATE AccountCharacter SET GameID4 = @name
WHERE Id = @accountID
SET @result = @@Error
end
else if( @g5 Is NULL OR Len(@g5) = 0)
begin
UPDATE AccountCharacter SET GameID5 = @name
WHERE Id = @accountID
SET @result = @@Error
end
else
--// ÇØ´ç ºó ½½·Ô Á¤º¸°¡ Á¸Àç ÇÏÁö ¾Ê´Ù.
begin
SET @result = 0x03
GOTO TranProcEnd
end
end
--====================================================================================
-- ij¸¯ÅÍ Á¤º¸ ÀúÀå
--====================================================================================
if( @result <> 0 )
begin
GOTO TranProcEnd
end
else
begin
INSERT INTO dbo.Character(AccountID, Name, cLevel, LevelUpPoint, Class, Strength, Dexterity, Vitality, Energy, Leadership, Inventory, MagicList,
Life, MaxLife, Mana, MaxMana, BP, MaxBP, Shield, MaxShield, MapNumber, MapPosX, MapPosY, MDate, LDate, Quest, DbVersion, EffectList )
SELECT @accountID As AccountID, @name As Name, Level, 200, @class As Class,
Strength, Dexterity, Vitality, Energy, Leadership, Inventory, MagicList, Life, MaxLife, Mana, MaxMana, 0, 0, 0, 0, MapNumber, MapPosX, MapPosY,
getdate() As MDate, getdate() As LDate, Quest, DbVersion, EffectList
FROM DefaultClassType WHERE Class = @class
SET @result = @@Error
end
TranProcEnd: -- GOTO
IF ( @result <> 0 )
ROLLBACK TRAN
ELSE
COMMIT TRAN
ProcEnd:
SET NOCOUNT OFF
SET XACT_ABORT OFF
--====================================================================================
-- °á°ú°ª ¹Ýȯ ó¸®
-- 0x00 : ij¸¯ÅÍ Á¸Àç, 0x01 : ¼º°ø¿Ï·á, 0x02 : ij¸¯ÅÍ »ý¼º ½ÇÆÐ , 0x03 : ºó½½·Ô Á¸ÀçÇÏÁö ¾Ê´Â´Ù
--====================================================================================
SELECT
CASE @result
WHEN 0x00 THEN 0x01 --// ¼º°ø ¹Ýȯ
WHEN 0x01 THEN 0x00 --// ij¸¯ÅÍ Á¸Àç
WHEN 0x03 THEN 0x03 --// ºó½½·ÔÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
ELSE 0x02 --// ±âŸ ¿¡·¯ÄÚµå´Â »ý¼º »øÆÐ ¹Ýȯ
END AS Result
End