======================================================== RETURN VALUE ======================================================== 0 : SUCCESS 1 : NO GROUP 2 : DUPLICATE NAME 3 : INVALID SLOT 4 : Non Class ID
======================================================== PROCESS ======================================================== 1. Check duplicate name 2. Check slot 3. Insert character data
*/
ALTER PROCEDURE [dbo].[TCreateChar] @bCreateCnt TINYINT OUTPUT, @szNAME VARCHAR(50), @dwCharID INT OUTPUT, @dwUserID INT, @bGroup TINYINT, @bSlot TINYINT, @bClass TINYINT, @bRace TINYINT, @bCountry TINYINT, @bSex TINYINT, @bHair TINYINT, @bFace TINYINT, @bBody TINYINT, @bPants TINYINT, @bHand TINYINT, @bFoot TINYINT AS DECLARE @dwCharSeq INT DECLARE @dwMP INT DECLARE @dwHP INT DECLARE @fPosX FLOAT DECLARE @fPosY FLOAT DECLARE @fPosZ FLOAT DECLARE @wDIR SMALLINT DECLARE @wSpawnID SMALLINT DECLARE @nCheckGlobal INT DECLARE @bRealSex TINYINT
SET @bCreateCnt = 0 SET @dwCharID = 0 SET @dwMP = 2 SET @dwHP = 2
SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TCLASSCHART WHERE bClassID = @bClass SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TRACECHART WHERE bRaceID = @bRace
SET @dwHP = 7 * @dwHP + 1 SET @dwMP = 9 * @dwMP + 1
IF EXISTS( SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE szNAME = @szNAME) RETURN 2 /* * Duplicate npc name */ IF EXISTS(SELECT TOP 1 * FROM TNPCCHART WHERE szNAME = @szNAME) RETURN 2 /* * Duplicate monster name */ IF EXISTS(SELECT TOP 1 * FROM TMONSTERCHART WHERE szNAME = @szNAME) RETURN 2 /* * Invalid slot */ IF EXISTS(SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE dwUserID = @dwUserID AND bSlot = @bSlot AND bDelete = 0) RETURN 3 /* * Check the country */
DECLARE @bOriCountry TINYINT DECLARE @bLevel TINYINT DECLARE @dwExp INT DECLARE @wSkillPoint SMALLINT SET @bOriCountry = 3 SET @bLevel = 10 SET @dwExp = 66287555 SET @wSpawnID = 15003 SET @wSkillPoint = 90
SELECT TOP 1 @bOriCountry = bOriCountry FROM TCHARTABLE WHERE dwUserID=@dwUserID AND bDelete=0 AND bOriCountry < 2 IF(@bOriCountry < 2) BEGIN SET @bCountry = @bOriCountry SET @bLevel = 10 SET @wSkillPoint = 90 SELECT @dwExp = dwExp FROM TLEVELCHART WHERE bLevel = 92
IF(@bOriCountry = 0) SET @wSpawnID = 15001 ELSE SET @wSpawnID = 15002 END ELSE IF(@bCountry <> 4) RETURN 4
SET @fPosX = 587.04 SET @fPosY = 31.33 SET @fPosZ = 603.82 SET @wDIR = 1640
INSERT INTO TCABINETTABLE VALUES(@dwCharID, 0, 1) INSERT INTO TSKILLTABLE SELECT @dwCharID, wSkillID, 1, 0 FROM TSTARTSKILL WHERE bClassID=@bClass COMMIT TRAN TCREATECHAR
DECLARE @bStartInven TINYINT DECLARE @bStartSlot TINYINT DECLARE @bStartChartType TINYINT DECLARE @wStartItemID SMALLINT DECLARE @bStartCount TINYINT DECLARE CUR_STARTITEM CURSOR FOR SELECT bInven, bSlot, bChartType, wItemID, bCount FROM TSTARTITEMCHART WHERE bCountry=@bCountry AND bClass = @bClass OPEN CUR_STARTITEM FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount WHILE @@FETCH_STATUS = 0 BEGIN EXEC TPutItemInInven @dwCharID, @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount END CLOSE CUR_STARTITEM DEALLOCATE CUR_STARTITEM
-- 편지보내기 ------------------------------------------------------------------------------------ DECLARE @dwPostID INT DECLARE @dwRecvID INT DECLARE @szTitle VARCHAR(256) DECLARE @szMessage VARCHAR(2048) DECLARE @bLenTitle BINARY(4) DECLARE @bLenMessage BINARY(4) DECLARE @szT VARCHAR(8) DECLARE @szM VARCHAR(8) DECLARE @dateCreated SMALLDATETIME SET @dateCreated = GetDate() SET @szTitle = 'test' SET @szMessage = 'test!' SET @bLenTitle = DATALENGTH(@szTitle) SET @bLenMessage = DATALENGTH(@szMessage) SET @szT = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenTitle), 8) SET @szTitle = @szT + @szTitle SET @szM = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenMessage), 8) SET @szMessage = @szM + @szMessage EXEC TSavePost @dwPostID OUTPUT, @dwRecvID OUTPUT, 0, @dwCharID, @szName, 'test',@szTitle,@szMessage,0,0,99999,0,0,@dateCreated -----------------------------------------------------------------------------------------------------------------------------
UPDATE TGLOBAL_GSP.DBO.TALLCHARTABLE SET dwCharID = @dwCharID WHERE dwSeq = @dwCharSeq
UPDATE THOTKEYTABLE SET wID12 = 1+@bRace WHERE dwCharID = @dwCharID and bInvenID = 1
IF EXISTS( SELECT bClassID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry) BEGIN DECLARE @dwMonID INT DECLARE @wMonTemp SMALLINT DECLARE @dwATTR INT DECLARE @dwMaxHP INT DECLARE @dwMaxMP INT SET @wMonTemp = 0 SELECT @wMonTemp = wMonID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry IF(@wMonTemp > 0) BEGIN SELECT @dwATTR = wSummonAttr FROM TMONSTERCHART WHERE wID= @wMonTemp SELECT @dwMaxHP=dwMaxHP, @dwMaxMP = dwMaxMP FROM TMONATTRCHART WHERE wID=@dwATTR AND bLevel=1 UPDATE TCHARTABLE SET wTemptedMon = @wMonTemp WHERE dwCharID = @dwCharID SET @dwATTR = @dwATTR + POWER(2,16) EXEC TCreateRecallMon @dwMonID OUTPUT, @dwCharID, @wMonTemp, 0, @dwATTR, 1, @dwMaxHP, @dwMaxMP, 1, @fPosX, @fPosY,