Kann man nur empfehlen, klappt wunderbar :D
:rtfm:Quote:
Das Thema hatte gegen die Regen verstoßen.
Wie der Fix zustande kam und wer daran alles beteidigt war werde ich auf Weom's wunsch nicht erwähnen weil er die ehre für einen Müll fix (Es entstehen neue bugs und der fix ist sehr unsicher) alleine will.
Für die Leute die keine Lust haben sich alles runterzuladen:
Die Fixes sind sehr einfach aufgebaut.
Hier nochmal die Fixes die ich erstellt habe (Sollten ungefähr genauso laufen wie die von Weom):
Was müsst ihr machen?:
Ihr geht in TGAME_GSP --> Functions und sucht dort folgende Funktionen und ersetzt den vorhandenen Code durch den hier:
Die erste der beiden Daten (TLOGOUT):
Und die andere (TSaveCharDataEnd):PHP 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
*/
-- 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
Sollte so passen.PHP 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
Grezz
/* 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
*/
-- DELETE TITEMTABLE WHERE @dwCharID = dwOwnerID AND bOwnerType=0 AND wItemID = 7605
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
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
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
RETURN @nResult