[FIX]Skill Bug

04/21/2013 12:39 julianjl#1
Put it in TSAVECHARDATAEND

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
Put it in TLOGOUT in tgame

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
04/21/2013 13:17 glossypvp#2
It's for skill(bar) bug or skill (buff) disappearing bug?
04/21/2013 13:41 julianjl#3
for skill bar
04/21/2013 13:53 stotterer09#4
It's exactly the same like this:
[Only registered and activated users can see links. Click Here To Register...]
04/21/2013 13:58 julianjl#5
a eu ... sorry

I have edited the post
04/21/2013 17:19 EliteTuerie#6
Quote:
Originally Posted by julianjl View Post
Put it in TSAVECHARDATAEND

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
Put it in TLOGOUT in tgame

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
#CloseRequest Fix has already made ​​several times was
04/21/2013 17:31 julianjl#7
develop your small server and fool me peace
04/21/2013 17:36 jibi1996#8
Quote:
Originally Posted by julianjl View Post
Put it in TSAVECHARDATAEND

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
Put it in TLOGOUT in tgame

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
repost... repost everywhere ;)
04/23/2013 20:15 derpierre65#9
works it?
04/23/2013 20:18 Weom#10
#closerequest
[Only registered and activated users can see links. Click Here To Register...]