Euch wird sicher aufgefallen sein das ihr im Cashshop beim kauf eines Items wo ihr eigentlich z.B. 10 bekommen solltet immer nur 1 Item bekommen habt.
Hier ist der Passende Fix dazu:
Code:
ALTER PROCEDURE [dbo].[TCashItemBuy] @dwCash INT OUTPUT, @dwCashBonus INT OUTPUT, @szPresent VARCHAR(50) OUTPUT, @dwUserID INT, @wCashItemID SMALLINT, @dwMoney INT, @bBuyType TINYINT, @dwTarget INT AS DECLARE @nRet INT DECLARE @bConsumType TINYINT --구매 타입(0:자동, 1:캐쉬, 2:마일리지) DECLARE @bMsgCode TINYINT --오류정보(0:오류 없음, 1:아이템이 없음, 2:캐쉬 포인트가 없음, 3:캐쉬가 부족) DECLARE @dwPcBangID INT DECLARE @dwRealTarget INT DECLARE @szLoginIP VARCHAR(50) DECLARE @dCurTime SMALLDATETIME DECLARE @dSetTime SMALLDATETIME DECLARE @wUseTime SMALLINT DECLARE @bLocalCount INT DECLARE @szItemID INT SET @bConsumType = 0 SET @dwPcBangID = 0 SET @szLoginIP = '' SET @nRet = 0 SET @szPresent = '' SET @dCurTime = GetDate() SET @dwCash = 0 SET @dwCashBonus = 0 SET @wUseTime = 0 SET @bLocalCount = 0 SELECT @szPresent = szName, @wUseTime = wUseTime, @szItemID = wID FROM TCASHSHOPITEMCHART WHERE wID = @wCashItemID IF(@@ROWCOUNT <> 1 OR @szPresent IS NULL) BEGIN SET @szPresent = '' RETURN 1 END SELECT @dwPcBangID = dwPcBangID, @szLoginIP = szLoginIP FROM TCURRENTUSER WHERE dwUserID = @dwUserID -- TEST TABLE############################ SELECT @dwCash = dwCash, @dwCashBonus=dwBonus FROM TCASHTESTTABLE WHERE dwUserID = @dwUserID IF(@@ROWCOUNT < 1 OR @dwCash<@dwMoney) RETURN 3 SET @dwCash = @dwCash - @dwMoney UPDATE TCASHTESTTABLE SET dwCash = @dwCash WHERE dwUserID = @dwUserID SELECT @bLocalCount = bCount FROM TCASHSHOPITEMCHART WHERE wID = @wCashItemID IF(@@ROWCOUNT <> 1 OR @bLocalCount <= 0) BEGIN SET @bLocalCount = 15 RETURN 1 END --###################################### --EXEC @nRet = [192.168.1.9,6121].FourStory_Cash.FourStory_Web.Fun_BuyTheItem @bConsumType, @wCashItemID, @dwUserID, @dwMoney, @dwPcBangID, @bBuyType, @dwTarget, @szLoginIP, @bMsgCode OUTPUT, @dwCash OUTPUT, @dwCashBonus OUTPUT IF(@nRet = 0) BEGIN SET @dSetTime = DATEADD(MINUTE, 60-DATEPART(MINUTE, @dCurTime), @dCurTime) -- SET @dSetTime = DATEADD(HOUR, 24-DATEPART(HOUR, @dSetTime), @dSetTime) + 1 IF(@bBuyType = 2) SET @dwRealTarget = @dwTarget ELSE SET @dwRealTarget = @dwUserID IF EXISTS(SELECT * FROM TCASHBONUSITEMCHART WHERE wCashItemID = @wCashItemID) BEGIN IF(@wUseTime > 0) INSERT INTO TCASHITEMCABINETTABLE( dwUserID, 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 @dwRealTarget, CS.wItemID, CS.bLevel, @bLocalCount, CS.bGLevel, CS.dwDuraMax, CS.dwDuraCur, CS.bRefineCur, @dSetTime+wUseTime, bGradeEffect, bMagic1, bMagic2, bMagic3, bMagic4, bMagic5, bMagic6, wValue1, wValue2, wValue3, wValue4, wValue5, wValue6, dwTime1, dwTime2, dwTime3, dwTime4, dwTime5, dwTime6 FROM TCASHSHOPITEMCHART AS CS INNER JOIN TCASHBONUSITEMCHART AS CB ON CS.wID = CB.wBonusItem WHERE CB.wCashItemID = @wCashItemID ELSE INSERT INTO TCASHITEMCABINETTABLE( dwUserID, 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 @dwRealTarget, CS.wItemID, CS.bLevel, @bLocalCount, CS.bGLevel, CS.dwDuraMax, CS.dwDuraCur, CS.bRefineCur, 0,bGradeEffect, bMagic1, bMagic2, bMagic3, bMagic4, bMagic5, bMagic6, wValue1, wValue2, wValue3, wValue4, wValue5, wValue6, dwTime1, dwTime2, dwTime3, dwTime4, dwTime5, dwTime6 FROM TCASHSHOPITEMCHART AS CS INNER JOIN TCASHBONUSITEMCHART AS CB ON CS.wID = CB.wBonusItem WHERE CB.wCashItemID = @wCashItemID UPDATE TCASHITEMCABINETTABLE SET dlID = 8718968878589280256+dwID WHERE dlID=0 --UPDATE TCASHITEMCABINETTABLE SET bCount = @bLocalCount WHERE @wCashItemID = @szItemID END END RETURN @nRet
Ihr könnt den Fix recht einfach durchführen.
Ihr geht in: TGLOBAL_GSP -> Functions -> TCashItemBuy und ersetzt den Code aus den Spoiler durch den alten Code.
Das war es auch schon.
Jetzt müsst ihr den Server einfach neustarten und Fertig.
Danke an Lordmau5 der an den Fix mit beigesteuert hat!
Grezz