USE [SRO_KINGDOLLAR_EVENT]
GO
/****** Object: StoredProcedure [dbo].[_KingDollar_CreateFULLCharacter] Script Date: 03/08/2016 07:10:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[_KingDollar_CreateFULLCharacter]
@

varchar(24),
@Password varchar(50),
@CharName varchar (64),
@CharType varchar(8),
@CharGender varchar(6),
@

varchar(64),
@CharLevel tinyint,
@CharStr smallint,
@CharInt smallint,
@CharGold bigint,
@CharSP int,
@CharHP int,
@CharMP int,
@CharInv varchar(145),
@

Name varchar(264),
@

Type varchar(64),
@

Degree varchar(24),
@ArmorName varchar(264),
@ArmorType varchar(64),
@ArmorDegree varchar(24),
@AccountType varchar(25)
AS
SET NOCOUNT ON
--################################################## ###########################
--################################################## ###########################
--###############/* TROY ONLINE PROCEDURES -- KING DOLLAR -- */--##############
--################################################## ###########################
--################################################## ###########################
SELECT @AccountType = CASE WHEN @AccountType = 'GM' THEN '1' WHEN @AccountType = 'Player' THEN '3' END
IF NOT EXISTS (SELECT StrUserID FROM SRO_VT_ACCOUNT.dbo.TB_User WHERE StrUserID = @

)
BEGIN
INSERT INTO SRO_VT_ACCOUNT..TB_User (StrUserID,password,sec_content,sec_primary) values @

,LOWER(CONVERT(varchar(50),HASHBYTES('MD5',@Passwo rd), 2)),@AccountType,@AccountType)
END
ELSE IF EXISTS (SELECT StrUserID FROM SRO_VT_ACCOUNT.dbo.TB_User WHERE StrUserID = @

)
BEGIN
PRINT 'User already exists'
END
DECLARE @

JID INT
DECLARE @Slot INT
DECLARE @

INT
DECLARE @NewCharID INT
SET @NewCharID = 0
SELECT @

JID = JID FROM SRO_VT_ACCOUNT..TB_User WHERE StrUserID = @
/* DECLARING SOME SHITS */
DECLARE @CharScale tinyint
DECLARE @ArmorGender varchar(7)
DECLARE @RefCharID int
DECLARE @StartRegionID INT
DECLARE @StartPos_X real
DECLARE @StartPos_Y real
DECLARE @StartPos_Z real
/* SELECTING SOME SHITS */
SELECT @CharScale = CONVERT(int,34+(64-34)*RAND());
SELECT @RefCharID = CASE WHEN @CharType = 'Chinese' AND @CharGender = 'Male' THEN (SELECT CONVERT(int,1907+(1919-1907)*RAND())) WHEN @CharType = 'Chinese' AND @CharGender = 'Female' THEN (SELECT CONVERT(int,1920+(1932-1920)*RAND())) WHEN @CharType = 'Europe' AND @CharGender = 'Male' THEN (SELECT CONVERT(int,14875+(14887-14875)*RAND())) WHEN @CharType = 'Europe' AND @CharGender = 'Female' THEN (SELECT CONVERT(int,14888+(14900-14888)*RAND())) END
IF @

= 'Jangan')
BEGIN
SET @StartRegionID = '25000'
SET @StartPos_X = '995'
SET @StartPos_Y = '-32'
SET @StartPos_Z = '1132'
END
ELSE IF @

= 'Donwhang')
BEGIN
SET @StartRegionID = '26265'
SET @StartPos_X = '957'
SET @StartPos_Y = '-80'
SET @StartPos_Z = '1508'
END
ELSE IF @

= 'Hotan')
BEGIN
SET @StartRegionID = '23687'
SET @StartPos_X = '1138'
SET @StartPos_Y = '250'
SET @StartPos_Z = '153'
END
ELSE IF @

= 'SamarKand')
BEGIN
SET @StartRegionID = '27244'
SET @StartPos_X = '271'
SET @StartPos_Y = '180'
SET @StartPos_Z = '1438'
END
ELSE IF @

= 'Constantinople')
BEGIN
SET @StartRegionID = '26959'
SET @StartPos_X = '1030'
SET @StartPos_Y = '80'
SET @StartPos_Z = '512'
END
ELSE
BEGIN
SET @StartRegionID = '25000'
SET @StartPos_X = '995'
SET @StartPos_Y = '-32'
SET @StartPos_Z = '1132'
END
-----------------------------------------------------------------------------
-- 1. 캐릭터 슬롯 넘버가 valid한 것인지, 그리고 빈슬롯이 맞는지 먼저 체크한다.
-----------------------------------------------------------------------------
-- start by novice.
SELECT @

= count(CharID) FROM SRO_VT_SHARD.dbo._User WITH (NOLOCK) WHERE UserJID = @

JID
IF @

>= 4)
BEGIN
-- 너무 많자나
RETURN -2
END
-- finish by novice.
-----------------------------------------------------------------------------
-- 2. 캐릭터 추가하기
-----------------------------------------------------------------------------
IF (@CharScale > 68) -- 0100 0100 --> 68 이다!
BEGIN
-- 캐릭터 생성 실패! 스케일 값이 이상하다!
RETURN -3
END
EXEC @

= SRO_VT_SHARD.dbo._IsExistingCharName @CharName
IF @

<> 0)
BEGIN
print 'Charname exist but account created succesfully,you can use proc of [_KingDollar_AddCharacter_ToAccount]'
-- 이미 사용중인 이름이라는데?
RETURN -4
END
BEGIN TRANSACTION
-- 인던시스템이 적용되면�* 마지막에 WorldID와 1값을 더 넣어 주었다!
INSERT INTO SRO_VT_SHARD.dbo._Char (RefObjID, CharName16, Scale, Strength, Intellect, LatestRegion,PosX, PosY, PosZ, AppointedTeleport, InventorySize,
LastLogout, CurLevel, MaxLevel, RemainGold , RemainSkillPoint, HP, MP, JobLvl_Trader, JobLvl_Hunter, JobLvl_Robber, WorldID)
VALUES (@RefCharID, @CharName, @CharScale, @CharStr, @CharInt, @StartRegionID, @StartPos_X, @StartPos_Y, @StartPos_Z, 0, @CharInv,
GetDate(), @CharLevel, @CharLevel, @CharGold, @CharSP, @CharHP,@CharMP, 1, 1, 1, 1)
SET @NewCharID = @@IDENTITY
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 캐릭터 생성 실패!
ROLLBACK TRANSACTION
RETURN -5
END
SET @NewCharID = @@IDENTITY
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 캐릭터 생성 실패!
ROLLBACK TRANSACTION
RETURN -5
END
-- start by novice.
-- 이제 Slot 안쓴다.. 그냥 Insert 만..
INSERT INTO SRO_VT_SHARD.._AccountJID values @

, @

JID,0)
INSERT INTO SRO_VT_SHARD.._User VALUES @

JID, @NewCharID)
-- finish by novice.
-----------------------------------------------------------------------------
-- 3-1. 장비 슬롯 채우기
-- [인벤토리 슬롯 96개] + [장비슬롯 13개] <- 인벤토리 확장 �*비스 후 48개에�* 96개로 증가!!!(woos0)
-----------------------------------------------------------------------------
--PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!
INSERT INTO SRO_VT_SHARD.._Inventory(CharID, Slot, ItemID)
SELECT @NewCharID, cnt, 0
FROM SRO_VT_SHARD.._RefDummySlot with( nolock )
WHERE cnt < 109
IF (@@ERROR <> 0)
BEGIN
-- 인벤토리 생성 실패!
ROLLBACK TRANSACTION
RETURN -7
END
--PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!
-- 디폴트로 선택한 아이템을 다시 넣어주자...
/* 요런 순�*로 정의되어 있다.
0: EQUIP_SLOT_HELM
1: EQUIP_SLOT_MAIL,
2: EQUIP_SLOT_SHOULDERGUARD,
3: EQUIP_SLOT_GAUNTLET,
4: EQUIP_SLOT_PANTS,
5: EQUIP_SLOT_BOOTS,
6: EQUIP_SLOT_WEAPON,
7: EQUIP_SLOT_SHIELD or ARROW,
9: EQUIP_SLOT_EARRING,
10: EQUIP_SLOT_NECKLACE,
11: EQUIP_SLOT_L_RING,
12: EQUIP_SLOT_R_RING,
*/
/* SELECTING SHITS -- STARTED BY KINGDOLLAR */
-- BEGIN
SELECT @

Type = CASE WHEN @

Type = 'Normal' THEN + '_A' WHEN @

Type = 'Sos' THEN + '_A_RARE' WHEN @

Type = 'Moon' THEN + '_B_RARE' WHEN @

Type = 'Sun' THEN + '_C_RARE' END
SELECT @ArmorName = CASE WHEN @ArmorName = 'Garment' THEN '_CLOTHES_' WHEN @ArmorName = 'Protector' THEN '_LIGHT_' WHEN @ArmorName = 'Armor' THEN '_HEAVY_' END
SELECT @ArmorType = CASE WHEN @ArmorType = 'Normal' THEN '_A' WHEN @ArmorType = 'Sos' THEN '_A_RARE' WHEN @ArmorType = 'Moon' THEN '_B_RARE' WHEN @ArmorType = 'Sun' THEN '_C_RARE' END
SELECT @ArmorGender = CASE WHEN @CharGender = 'Male' THEN '_M' WHEN @CharGender = 'Female' THEN '_W' END
-- END
/* DECLARING SHITS -- STARTED BY KINGDOLLAR */
-- BEGIN
DECLARE @

_Codename varchar(129)
DECLARE @Hat_Codename varchar(129)
DECLARE @Chest_Codename varchar(129)
DECLARE @Legs_Codename varchar(129)
DECLARE @Shoulder_Codename varchar(129)
DECLARE @Hand_Codename varchar(129)
DECLARE @Foot_Codename varchar(129)
DECLARE @Shield_Codename varchar(129)
DECLARE @Ring_Codename varchar(129)
DECLARE @Earring_Codename varchar(129)
DECLARE @Necklace_Codename varchar(129)
-- END
/* SELECTING SHITS PART 2 -- STARTED BY KINGDOLLAR */
-- BEGIN
IF (@RefCharID BETWEEN 1907 AND 1932)
BEGIN
SELECT @

_Codename = CASE WHEN @

Name = 'Sword' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_SWORD_' @

Degree @

Type) WHEN @

Name = 'Blade' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_BLADE_' @

Degree @

Type) WHEN @

Name = 'Glavie' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_TBLADE_' @

Degree @

Type) WHEN @

Name = 'Bow' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_BOW_' @

Degree @

Type) WHEN @

Name = 'Spear' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_SPEAR_' @

Degree @

Type) END
SELECT TOP 1 @Hat_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_H A'+@ArmorType
SELECT TOP 1 @Chest_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_B A'+@ArmorType
SELECT TOP 1 @Legs_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_L A'+@ArmorType
SELECT TOP 1 @Shoulder_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_S A'+@ArmorType
SELECT TOP 1 @Hand_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_A A'+@ArmorType
SELECT TOP 1 @Foot_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH'+@ArmorGender+@ArmorName+@ArmorDegree+'_F A'+@ArmorType
SELECT TOP 1 @Shield_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_SHIELD_' @

Degree @

Type
SELECT TOP 1 @Ring_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_RING_' @

Degree @

Type
SELECT TOP 1 @Earring_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_EARRING_' @

Degree @

Type
SELECT TOP 1 @Necklace_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_CH_NECKLACE_' @

Degree @

Type
END
ELSE IF (@RefCharID BETWEEN 14875 AND 14900)
BEGIN
SELECT @

_Codename = CASE WHEN @

Name = 'Staff' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_TSTAFF_' @

Degree @

Type) WHEN @

Name = 'TwoHandedSword' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_TSWORD_' @

Degree @

Type) WHEN @

Name = 'OneHanded' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_SWORD_' @

Degree @

Type) WHEN @

Name = 'Dagger' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_DAGGER_' @

Degree @

Type) WHEN @

Name = 'CrossBow' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_CROSSBOW_' @

Degree @

Type) WHEN @

Name = 'WarLock' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_DARKSTAFF_' @

Degree @

Type) WHEN @

Name = 'Cleric' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_STAFF_' @

Degree @

Type) WHEN @

Name = 'Harp' THEN (SELECT TOP 1 CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_HARP_' @

Degree @

Type) END
SELECT TOP 1 @Hat_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_H A'+@ArmorType
SELECT TOP 1 @Chest_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_B A'+@ArmorType
SELECT TOP 1 @Legs_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_L A'+@ArmorType
SELECT TOP 1 @Shoulder_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_S A'+@ArmorType
SELECT TOP 1 @Hand_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_A A'+@ArmorType
SELECT TOP 1 @Foot_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU'+@ArmorGender+@ArmorName+@ArmorDegree+'_F A'+@ArmorType
SELECT TOP 1 @Shield_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_SHIELD_' @

Degree @

Type
SELECT TOP 1 @Ring_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_RING_' @

Degree @

Type
SELECT TOP 1 @Earring_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_EARRING_' @

Degree @

Type
SELECT TOP 1 @Necklace_Codename = CodeName128 FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = 'ITEM_EU_NECKLACE_' @

Degree @

Type
END
-- END
/* DECLARING SHITS PART 2 -- STARTED BY KINGDOLLAR */
-- BEGIN
DECLARE @

_ID bigint
DECLARE @

_Dur bigint
DECLARE @

_Shield_Status tinyint
DECLARE @Hat_ID bigint
DECLARE @Hat_Dur bigint
DECLARE @Chest_ID bigint
DECLARE @Chest_Dur bigint
DECLARE @Legs_ID bigint
DECLARE @Legs_Dur bigint
DECLARE @Shoulder_ID bigint
DECLARE @Shoulder_Dur bigint
DECLARE @Hand_ID bigint
DECLARE @Hand_Dur bigint
DECLARE @Foot_ID bigint
DECLARE @Foot_Dur bigint
DECLARE @Ring_ID bigint
DECLARE @Earring_ID bigint
DECLARE @Necklace_ID bigint
DECLARE @Shield_ID bigint
DECLARE @Shield_Dur bigint
-- END
/* SELECTING SHITS PART 3 -- STARTED BY KINGDOLLAR */
-- BEGIN
SELECT TOP 1 @

_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @

_Codename
SELECT TOP 1 @Shield_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Shield_Codename
SELECT TOP 1 @Hat_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Hat_Codename
SELECT TOP 1 @Chest_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Chest_Codename
SELECT TOP 1 @Legs_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Legs_Codename
SELECT TOP 1 @Shoulder_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Shoulder_Codename
SELECT TOP 1 @Hand_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Hand_Codename
SELECT TOP 1 @Foot_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Foot_Codename
SELECT TOP 1 @Ring_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Ring_Codename
SELECT TOP 1 @Earring_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Earring_Codename
SELECT TOP 1 @Necklace_ID = ID FROM SRO_VT_SHARD.dbo._RefObjCommon WHERE CodeName128 = @Necklace_Codename
SELECT TOP 1 @

_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @

_Codename
SELECT TOP 1 @Shield_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Shield_Codename
SELECT TOP 1 @Hat_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Hat_Codename
SELECT TOP 1 @Chest_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Chest_Codename
SELECT TOP 1 @Legs_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Legs_Codename
SELECT TOP 1 @Shoulder_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Shoulder_Codename
SELECT TOP 1 @Hand_Dur = It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Hand_Codename
SELECT TOP 1 @Foot_Dur =It.Dur_U FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @Foot_Codename
SELECT TOP 1 @

_Shield_Status = It.TwoHanded FROM SRO_VT_SHARD.dbo._RefObjItem as It inner join SRO_VT_SHARD.dbo._RefObjCommon as RFC on RFC.Link = It.ID WHERE RFC.CodeName128 = @

_Codename
-- END
DECLARE @ItemID BIGINT
SET @ItemID = 0
-- 상갑
IF (@Hat_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 0, @Hat_ID, @Hat_Dur --HAT
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Shoulder_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 2, @Shoulder_ID, @Shoulder_Dur --Shoulder
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Hand_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 3, @Hand_ID, @Hand_Dur --Hand
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Ring_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 11, @Ring_ID, 1 --Ring
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 12, @Ring_ID, 1 --Ring
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Earring_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 9, @Earring_ID, 1 --Hand
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Necklace_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 10, @Necklace_ID, 1 --Hand
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 상갑
IF (@Chest_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 1, @Chest_ID, @Chest_Dur --Chest
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- 바지
IF (@Legs_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 4, @Legs_ID, @Legs_Dur --Legs
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -9
END
END
-- Boots
IF (@Foot_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 5, @Foot_ID, @Foot_Dur --Foot
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -10
END
END
-- Weapon
IF @

_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 6, @

_ID, @

_Dur --Weapon
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -11
END
END
IF @

_Shield_Status = 0)
BEGIN
IF (@Shield_ID <> 0)
BEGIN
EXEC @ItemID = SRO_VT_SHARD.dbo._FN_ADD_INITIAL_EQUIP @NewCharID, 7, @Shield_ID, @Shield_Dur --Shield
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -11
END
END
END
-----------------------------------------------------------------------------
-- 3-2. 아바타 Inventory 슬롯 채우기
-- [아바타 인벤토리 슬롯 5개]
-- APPLY_AVATAR_SYSTEM이 적용되면�* 추가되는 부분
-----------------------------------------------------------------------------
--PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!
INSERT INTO SRO_VT_SHARD.._InventoryForAvatar(CharID, Slot, ItemID)
SELECT @NewCharID, cnt, 0
FROM SRO_VT_SHARD.._RefDummySlot with( nolock )
WHERE cnt < 5
IF (@@ERROR <> 0)
BEGIN
-- 아바타 인벤토리 생성 실패!
ROLLBACK TRANSACTION
RETURN -14
END
--PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!
-----------------------------------------------------------------------------
-- default skill넣어주기
-----------------------------------------------------------------------------
DECLARE @country tinyINT
EXEC @country = SRO_VT_SHARD.._GetObjCountry @RefCharID
INSERT INTO SRO_VT_SHARD.._CharSkillMastery (CharID, MasteryID, Level)
SELECT @NewCharID, MasteryID, 0
FROM SRO_VT_SHARD.._RefCharDefault_SkillMastery with(nolock)
WHERE Race = @country or Race = 3
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -15
END
INSERT INTO SRO_VT_SHARD.._CharSkill (CharID,SkillID,Enable)
SELECT @NewCharID, SkillID, 1
FROM SRO_VT_SHARD.._RefCharDefault_Skill with(nolock)
WHERE Race = @country or Race = 3
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -16
END
-----------------------------------------------------------------------------
-- 기본 퀘스트 넣어주기
-----------------------------------------------------------------------------
INSERT INTO SRO_VT_SHARD.._CharQuest (CharID, QuestID, Status, AchievementCount, StartTime, EndTime, QuestData1, QuestData2)
SELECT @NewCharID, ID, 1, 0, getdate(), getdate(), 0, 0
FROM SRO_VT_SHARD.._RefQuest
WHERE CodeName in (SELECT CodeName FROM SRO_VT_SHARD.._RefCharDefault_Quest with(nolock) WHERE (Race = @country or Race = 3) and RequiredLevel = 1 and Service = 1)
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -17
END
-----------------------------------------------------------------------------
-- Static Avatar Initial Record 넣기
-----------------------------------------------------------------------------
INSERT INTO SRO_VT_SHARD.._StaticAvatar(CharID) values(@NewCharID)
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -18
END
-----------------------------------------------------------------------------
-- Trijob 채워넣기!!!!!
-----------------------------------------------------------------------------
INSERT INTO SRO_VT_SHARD.._CharTrijob VALUES (@NewCharID, 0, 1, 0, 0, 0)
IF (@@ERROR <> 0)
BEGIN
-- 인벤토리 생성 실패!
ROLLBACK TRANSACTION
RETURN -19
END
-----------------------------------------------------------------------------
-- CharList에 ID 넣어주기
-----------------------------------------------------------------------------
INSERT SRO_VT_SHARD.._CharNameList VALUES(@CharName, @NewCharID)
/* inserting into chest */
-- BEGIN
DECLARE @Start tinyint = 0
DECLARE @End tinyint = 239
WHILE @Start < @End
BEGIN
SET @Start += 1
INSERT INTO SRO_VT_SHARD.._Chest (UserJID,Slot) VALUES @

JID,@Start)
END
exec SRO_VT_SHARD.._InsertToChestInfo
-- END
-- Quick Slot 정보 저장용!!!
exec SRO_VT_SHARD.dbo._AddNewClientConfig @NewCharID -- by novice...... for saving client configurations...
COMMIT TRANSACTION
print 'JID : '+CONVERT(varchar(25) @

JID)
print 'Username : ' @

print 'Password : '+@Password
print 'CharID : '+CONVERT(varchar(25),@NewCharID)
print 'Charname : '+@CharName
print 'CharType : '+@CharType
print 'CharGender : '+@CharGender
print 'CharTown : ' @

print 'CharScale : '+CONVERT(varchar(25),@CharScale)
print 'Charlevel : '+CONVERT(varchar(25),@CharLevel)
print 'Charstr : '+CONVERT(varchar(25),@CharStr)
print 'Charint : '+CONVERT(varchar(25),@CharInt)
print 'CharGold : '+CONVERT(varchar(25),@CharGold)
print 'CharSP : '+CONVERT(varchar(25),@CharSP)
print 'CharHP : '+CONVERT(varchar(25),@CharHP)
print 'CharMP : '+CONVERT(varchar(25),@CharMP)
print 'Char_InvSlot : '+CONVERT(varchar(25),@CharInv)
print 'Weapon_Name : ' @

Name
print 'Weapon_Type : ' @

Type
print 'Weapon_Degree : ' @

Degree
print 'Armor_Name : '+@ArmorName
print 'Armor_Type : '+@ArmorType
print 'Armor_Degree : '+@ArmorDegree
print 'character has been created successfully'
RETURN @NewCharID