كود PHP:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_AddNewChar] Script Date: 16/12/2016 10:48:07 ص ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_AddNewChar]
@UserJID INT,
--@CharSlot INT,
@RefCharID INT,
@CharName varchar (64),
@CharScale tinyINT,
@StartRegionID INT,
@StartPos_X real,
@StartPos_Y real,
@StartPos_Z real,
@DefaultTeleport INT,
@RefMailID INT,
@RefPantsID INT,
@RefBootsID INT,
@RefWeaponID INT,
@RefShield INT,
@DurMail tinyINT,
@DurPants tinyINT,
@DurBoots tinyINT,
@DurWeapon tinyINT,
@DurShield tinyINT,
@DefaultArrow INT
AS
SET NOCOUNT ON
DECLARE @Slot INT
DECLARE @temp INT
DECLARE @NewCharID INT
SET @NewCharID = 0
-----------------------------------------------------------------------------
-- 1. أ„³¸¯أ…أچ ½½·أ” ³أ‘¹أ¶°آ، validأ‡أ‘ °أچأ€أژأپأ¶, ±×¸®°أ* آ؛أ³½½·أ”أ€أŒ ¸أ‚´أ‚أپأ¶ ¸أ•أ€أ؛ أƒ¼أ…©أ‡أ‘´أ™.
-----------------------------------------------------------------------------
-- start by novice.
SELECT @temp = count(CharID) FROM _User WITH (NOLOCK) WHERE UserJID = @UserJID
IF (@temp >= 4)
BEGIN
-- ³أٹ¹« ¸¹أ€أڑ³آھ
RETURN -2
END
-- finish by novice.
-----------------------------------------------------------------------------
-- 2. أ„³¸¯أ…أچ أƒأں°آ،أ‡أڈ±â
-----------------------------------------------------------------------------
IF (@CharScale > 68) -- 0100 0100 --> 68 أ€أŒ´أ™!
BEGIN
-- أ„³¸¯أ…أچ »أ½¼آ؛ ½أ‡أ†أگ! ½آ؛أ„أ‰أ€أڈ °آھأ€أŒ أ€أŒ»أ³أ‡أڈ´أ™!
RETURN -3
END
EXEC @temp = _IsExistingCharName @CharName
IF (@temp <> 0)
BEGIN
-- أ€أŒ¹أŒ »çآ؟ëأپأںأ€أژ أ€أŒ¸§أ€أŒ¶أ³´أ‚µ¥?
RETURN -4
END
BEGIN TRANSACTION
-- ى¸ëچکى‹œىٹ¤ي…œى´ ى*پىڑ©ëگکë©´ى„œ 마ى§€ë§‰ى—گ WorldIDى™€ 1ê°’ى„ ëچ” ë„£ى–´ ى£¼ى—ˆë‹¤!
INSERT INTO _Char (RefObjID, CharName16, Scale, Strength, Intellect, LatestRegion,PosX, PosY, PosZ, AppointedTeleport, InventorySize,
LastLogout, CurLevel, MaxLevel, RemainGold, RemainStatPoint, RemainSkillPoint, HP, MP, JobLvl_Trader, JobLvl_Hunter, JobLvl_Robber, WorldID)
VALUES (@RefCharID, @CharName, @CharScale, 20, 20, @StartRegionID, @StartPos_X, @StartPos_Y, @StartPos_Z, @DefaultTeleport, 109,
GetDate(), 1, 1, '1000000', 0, 300000, 200,200, 1, 1, 1, 1)
SET @NewCharID = @@IDENTITY
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- أ„³¸¯أ…أچ »أ½¼آ؛ ½أ‡أ†أگ!
ROLLBACK TRANSACTION
RETURN -5
END
-- start by novice.
-- أ€أŒأپ¦ Slot ¾أˆ¾´´أ™.. ±×³أ‰ Insert ¸¸..
INSERT INTO _User VALUES (@UserJID, @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 _Inventory(CharID, Slot, ItemID)
SELECT @NewCharID, cnt, 0
FROM _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,
8: EQUIP_SLOT_EARRING,
9: EQUIP_SLOT_NECKLACE,
10: EQUIP_SLOT_L_RING,
11: EQUIP_SLOT_R_RING,
*/
DECLARE @ItemID BIGINT
SET @ItemID = 0
-- ىƒپê°‘
IF (@RefMailID <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 1, @RefMailID, @DurMail
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -8
END
END
-- ë°”ى§€
IF (@RefPantsID <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 4, @RefPantsID, @DurPants
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -9
END
END
-- Boots
IF (@RefBootsID <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 5, @RefBootsID, @DurBoots
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -10
END
END
-- Weapon
IF (@RefWeaponID <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 6, @RefWeaponID, @DurWeapon
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -11
END
END
-- ë°©يŒ¨
IF (@RefShield <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 7, @RefShield, @DurShield
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -12
END
END
-- يک¹ى‹œ defaultë،œ ى„*يƒي•œ 무기가 ي™œى´ë¼ë©´ ي™”ى‚´ 250개들ى´ ي™œي†µëڈ„ ي•¨ê»ک ى¤€ë‹¤. ى£*ى¹ک?
IF (@DefaultArrow <> 0)
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 7, @DefaultArrow, 5000
IF (@ItemID <= 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -13
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 _InventoryForAvatar(CharID, Slot, ItemID)
SELECT @NewCharID, cnt, 0
FROM _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 = _GetObjCountry @RefCharID
INSERT INTO _CharSkillMastery (CharID, MasteryID, Level)
SELECT @NewCharID, MasteryID, 0
FROM _RefCharDefault_SkillMastery with(nolock)
WHERE Race = @country or Race = 3
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -15
END
INSERT INTO _CharSkill (CharID,SkillID,Enable)
SELECT @NewCharID, SkillID, 1
FROM _RefCharDefault_Skill with(nolock)
WHERE Race = @country or Race = 3
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -16
END
-----------------------------------------------------------------------------
-- ±âآ؛» أ„ù½آ؛أ†® ³أ–¾îأپأ–±â
-----------------------------------------------------------------------------
INSERT INTO _CharQuest (CharID, QuestID, Status, AchievementCount, StartTime, EndTime, QuestData1, QuestData2)
SELECT @NewCharID, ID, 1, 0, getdate(), getdate(), 0, 0
FROM _RefQuest
WHERE CodeName in (SELECT CodeName FROM _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 _StaticAvatar(CharID) values(@NewCharID)
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -18
END
-----------------------------------------------------------------------------
-- Trijob أƒ¤آ؟أ¶³أ–±â!!!!!
-----------------------------------------------------------------------------
INSERT INTO _CharTrijob VALUES (@NewCharID, 0, 1, 0, 0, 0)
IF (@@ERROR <> 0)
BEGIN
-- أ€أژآ؛¥أ…أ¤¸® »أ½¼آ؛ ½أ‡أ†أگ!
ROLLBACK TRANSACTION
RETURN -19
END
-----------------------------------------------------------------------------
-- CharListى—گ ID ë„£ى–´ى£¼ê¸°
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
INSERT _CharNameList VALUES(@CharName, @NewCharID)
IF @RefCharID<=1919 AND @RefCharID>=1907
BEGIN
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 5912,'1000','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 5913,'1000','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24449,'10','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24448,'50','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24662,'0','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24413,'0','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 35778,'10','0'
END
IF @RefCharID<=1932 AND @RefCharID>=1920
BEGIN
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 5912,'1000','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 5913,'1000','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24449,'10','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24448,'50','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24662,'0','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 24414,'0','0'
EXEC SRO_VT_SHARD.[dbo].[_RoyalAddEquipment] @NewCharID , 35778,'10','0'
END
-----------------------------------Starting with CHINA
IF @RefCharID<=1919 AND @RefCharID>=1907
BEGIN
IF @RefMailID = '3643' -- Chinesse Male Gear CLOTHES
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 791, 39 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 863, 39 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 971, 39 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
END
Else IF @RefMailID = '3637' -- Chinesse Male Gear ARRMOR
begin
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 287, 48 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 359, 48 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 467, 48 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
end
Else IF @RefMailID = '3640' -- Chinesse Male Gear LIGHT
begin
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 539, 44 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 611, 44 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 719, 44 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
END
END
------ Woman SET
IF @RefCharID<=1932 AND @RefCharID>=1920
BEGIN
IF @RefMailID = '3652' -- Chinesse Woman Gear CLOTHES
BEGIN
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 1547, 39 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 1619, 39 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 1727, 39 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
END
ELSE IF @RefMailID = '3646' -- Chinesse Woman Gear ARRMOR
begin
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 1043, 48 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 1115, 48 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 1223, 48 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
end
Else IF @RefMailID = '3649' -- Chinesse Woman Gear LIGHT
begin
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 0, 1295, 44 --HAT
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 2, 1367, 44 --SHOULDER
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 3, 1475, 44 --HAND
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 9, 1835, 0 --Earring
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 10, 1871, 0 --NECKLACE
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 11, 1799, 0 --RING
EXEC @ItemID = _FN_ADD_INITIAL_EQUIP @NewCharID, 12, 1799, 0 --RING
END
END
DECLARE @CharID int = (SELECT CharID FROM _Char WHERE CharName16 = @CharName)
EXEC _TRAINING_CAMP_CREATE @CharID
-- Quick Slot ى*•ë³´ ى*€ى¥ىڑ©!!!
exec _AddNewClientConfig @NewCharID -- by novice...... for saving client configurations...
DELETE FROM _CharQuest WHERE QuestID=1 AND CharID=@NewCharID
INSERT INTO _CharQuest (CharID, QuestID, Status,AchievementCount,StartTime,EndTime,QuestData1,QuestData2)
VALUES (@NewCharID,1,5,0, getdate(),getdate(),31458135,0)
COMMIT TRANSACTION
RETURN @NewCharID