Put it in TSAVECHARDATAEND
Put it in TLOGOUT in tgame
Code:
ALTER PROCEDURE [dbo].[TSaveCharDataEnd] @dwCharID INT AS DECLARE @dwUserID INT SELECT @dwUserID = dwUserID FROM TCHARTABLE WHERE dwCharID = @dwCharID BEGIN TRAN SAVECHAREND DELETE TINVENTABLE WHERE dwCharID = @dwCharID DELETE TCABINETTABLE WHERE dwCharID = @dwCharID DELETE TITEMUSEDTABLE WHERE dwCharID = @dwCharID DELETE TEXPITEMTABLE WHERE dwCharID = @dwCharID INSERT INTO TINVENTABLE SELECT * FROM TTEMPINVENTABLE WHERE dwCharID = @dwCharID INSERT INTO TCABINETTABLE SELECT * FROM TTEMPCABINETTABLE WHERE dwCharID = @dwCharID INSERT INTO TITEMUSEDTABLE SELECT * FROM TTEMPITEMUSEDTABLE WHERE dwCharID = @dwCharID INSERT INTO TEXPITEMTABLE SELECT * FROM TTEMPEXPITEMTABLE WHERE dwCharID = @dwCharID COMMIT TRAN SAVECHAREND EXEC TGLOBAL_GSP.DBO.TSaveDuringItem @dwUserID
Code:
/* LOGOUT PROCESS
========================================================
PARAMETER
========================================================
@dwUserID INT
========================================================
RETURN VALUE
========================================================
0 : SUCCESS
1 : NO USER
========================================================
PROCESS
========================================================
--1. Check TCURRENTUSER table
--2. Delete user from TCURRENTUSER
--3. Update log data
*/
ALTER PROCEDURE [dbo].[TLogout]
@dwUserID INT,
@dwCharID INT
AS
DECLARE @nResult INT
DECLARE @bLevel TINYINT
DECLARE @dwExp INT
DECLARE @dwPlayTime INT
DECLARE @dwGold INT
DECLARE @dwSilver INT
DECLARE @dwCooper INT
DECLARE @bWorldID TINYINT
DECLARE @dCurDate SMALLDATETIME
SET @bLevel = 0
SET @dwExp = 0
SET @dwGold = 0
SET @dwSilver = 0
SET @dwCooper = 0
SET @dCurDate = GetDate()
IF(@dwCharID <> 0)
BEGIN
SELECT @bLevel = bLevel, @dwExp = dwEXP, @dwGold=dwGold, @dwSilver=dwSilver, @dwCooper=dwCooper FROM TCHARTABLE WHERE dwCharID = @dwCharID
EXEC TUpdateActiveChar @dwCharID
UPDATE TCHARTABLE SET dLogoutDate = @dCurDate WHERE dwCharID=@dwCharID
EXEC @nResult = TGLOBAL_GSP.dbo.TLogout @dwUserID, @dwCharID, @bLevel, @dwExp
IF(@nResult = 0)
BEGIN
SELECT @bWorldID = bWorld+1 FROM TDBITEMINDEXTABLE
EXEC TGLOBAL_GSP.dbo.TUpdateCharMoney @bWorldID, @dwCharID, @dwGold, @dwSilver, @dwCooper
END
END
EXEC TGLOBAL_GSP.DBO.TPcBangLogout @dwUserID, @dwPlayTime OUTPUT
/*
IF(@dwGuildID <> 0 AND @dwPlayTime <> 0)
BEGIN
INSERT INTO TGUILDPLAYLOG(dwGuildID, dwUserID, dwCharID, dwPlayTime) VALUES(@dwGuildID, @dwUserID, @dwCharID, @dwPlayTime)
UPDATE TGUILDTABLE SET dwPlayTime = dwPlayTime + @dwPlayTime WHERE dwID = @dwGuildID
END
*/
-- DELETE TITEMTABLE WHERE @dwCharID = dwOwnerID AND bOwnerType=0 AND wItemID = 7605
SELECT @dwUserID = dwUserID FROM TCHARTABLE WHERE dwCharID = @dwCharID
BEGIN TRAN SAVECHAREND
DELETE TITEMTABLE WHERE dwOwnerID = @dwCharID AND bOwnerType = 0 AND bStorageType <> 2
DELETE TITEMTABLE WHERE dlID IN(SELECT dlID FROM TTEMPITEMTABLE WHERE dwOwnerID = @dwCharID)
INSERT INTO TITEMTABLE(
dlID, bStorageType, dwStorageID, bOwnerType, dwOwnerID, bItemID, wItemID, bLevel, bCount, bGLevel, dwDuraMax, dwDuraCur, bRefineCur,dEndTime,bGradeEffect,
bMagic1, bMagic2, bMagic3, bMagic4, bMagic5, bMagic6,
wValue1, wValue2, wValue3, wValue4, wValue5, wValue6,
dwTime1, dwTime2, dwTime3, dwTime4, dwTime5, dwTime6)
SELECT * FROM TTEMPITEMTABLE WHERE dwOwnerID = @dwCharID
DELETE TSKILLTABLE WHERE dwCharID = @dwCharID
INSERT INTO TSKILLTABLE SELECT * FROM TTEMPSKILLTABLE WHERE dwCharID = @dwCharID
COMMIT TRAN SAVECHAREND
EXEC TGLOBAL_GSP.DBO.TSaveDuringItem @dwUserID