Shaiya PServer Development -> Shaiya Private Server
#Moved to the right section
Normally this will happen when the items were duped, so when the user relogs the server will know that those items didn't exist in the first place, and remove them (or make them be the original amount)
In that case it seems to be an issue with the charitems table, you might want to check under this one, and procedures that might affect it during login/out
I have this problem, everytime ppl trade a part of a stack of items the rest of the items in there inventory goes poof after relog.
Anyone knows a fix for this?
Tnx Bo
This happens if you didnt clearly execute dupe fix scripts, i had the same problem, please Re-run dupe fix scripts and be sure you dont have any error while you're executing them or you can just run these, i use these and i dont have Item appearing problem anymore. Credits goes to EarthCrusher for his fixes
USE [PS_GameLog]
GO
/****** Object: StoredProcedure [dbo].[usp_Insert_Action_Log_E] Script Date: 09/09/2012 02:14:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[usp_Insert_Action_Log_E]
BEGIN
SELECT @UID = um.UserID FROM PS_UserData.dbo.Users_Master as um
INNER JOIN PS_GameData.dbo.Chars as c ON c.UserUID = um.UserUID
inner join PS_GameLog.dbo.ActionLog as a on a.Value1 = c.CharID Where c.CharID = @Value1 AND ActionType = 103
SELECT @KIP = um.UserIp FROM PS_UserData.dbo.Users_Master as um
INNER JOIN PS_GameData.dbo.Chars as c ON c.UserUID = um.UserUID
inner join PS_GameLog.dbo.ActionLog as a on a.Value1 = c.CharID Where c.CharID = @Value1 AND ActionType = 103
Select @DIP = um.UserIP FROM PS_UserData.dbo.Users_Master as um
INNER JOIN PS_GameLog.dbo.ActionLog as a on um.UserID = a.UserID WHERE um.UserID=@UserID AND ActionType = 103
USE [PS_UserData]
GO
/****** Object: StoredProcedure [dbo].[usp_Try_GameLogin_Taiwan] Script Date: 09/09/2012 02:16:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
/****** Object: Stored Procedure dbo.usp_Try_GameLogin_Taiwan Script Date: 2008-6-7 18:34:05 ******/
/*================================================= =
-1 Invalid ID and Password
-2 Can't connect with the account since it's not selected as free challenger
-3 Account doesn't exist
-4 ID inprocess of termination follwing user's request.
-5 Your account is blocked now. You can't log into the game.
-6 Your account is blocked now. You can't log into the game.
-7 Account still restricted
================================================== */
SET @Status = -1
SET @LoginTime = GETDATE()
--------------------------------------------------
SET @CompanyIP = '61.107.81'
SET @UserIP = LTRIM( RTRIM(@UserIP) )
--------------------------------------------------
SET @Check = 0
--------------------------------------------------
SELECT @UserUID=[UserUID], @Status=[Status], @Leave=[Leave], @LeaveDate=LeaveDate
FROM Users_Master
WHERE UserID = @UserID AND Pw = @InPassword
-- NotExist User OR Leave User
IF( @UserUID = 0)
BEGIN
SET @Status = -3
END
ELSE IF (@Leave = 1) --This blocks a logged in account from being kicked
BEGIN
SET @Status = -5
END
ELSE IF (DATEDIFF(SECOND, @LeaveDate, GETDATE()) < 6)--This is the time delay
BEGIN
SET @Status = -7
END
-- BlockUser Check
IF( (@Status >= 2) AND (@Status <= 6) )
BEGIN
-- Get Block Limit Date AND Replace date text
DECLARE @BlockEndDate datetime
SELECT @BlockEndDate = BlockEndDate FROM Users_Block WHERE UserUID = @UserUID
IF ( @@ROWCOUNT <> 0 )
BEGIN
-- Block Release
IF ( @BlockEndDate <= @LoginTime )
BEGIN
SET @Status = 0
UPDATE Users_Master SET Status = @Status WHERE UserUID = @UserUID
END
END
END
-- Admin IP Check(2006-02-21)
/*
IF( @Status = 16 OR @Status = 32 OR @Status = 48 OR @Status = 64 OR @Status = 80 )
BEGIN
SET @TempIP = LEFT(@UserIP, 9)
IF( @TempIP <> @CompanyIP )
BEGIN
SET @Status = -999
END
END
*/
-- Select
SELECT @Status AS Status, @UserUID AS UserUID
-- Log Insert
IF( @Status = 0 OR @Status = 16 OR @Status = 32 OR @Status = 48 OR @Status = 64 OR @Status = 80 )
BEGIN
UPDATE Users_Master SET Leave = 1, JoinDate = GETDATE() WHERE UserUID = @UserUID
END
SET NOCOUNT OFF
USE [PS_UserData]
GO
/****** Object: StoredProcedure [dbo].[usp_Try_GameLogout_R] Script Date: 09/09/2012 02:17:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @LoginTime datetime
DECLARE @LastPlayTime int
DECLARE @OldPoint int
DECLARE @LoginSession bigint
SET @LoginSession=(select LoginSession from PS_userdata.dbo.UserLoginStatus where useruid=@useruid)
SET @LastPlayTime=(select LastPlayTime from PS_userdata.dbo.UserLoginStatus where useruid=@useruid)
SET @LoginTime=(select LoginTime from PS_userdata.dbo.UserLoginStatus where useruid=@useruid)
SET @OldPoint=(select Point from PS_userdata.dbo.Users_Master where useruid=@useruid)
IF (@SessionID=@LoginSession)
BEGIN
Update PS_userdata.dbo.Users_Master
SET point=point+@LastPlayTime/2
WHERE useruid=@useruid
INSERT INTO PS_userdata.dbo.UserOnlineTimeLog(UserUid,OldPoint ,Addpoint,LoginTime,LogoutTime,SessionID)
values(@UserUid,@OldPoint,@LastPlayTime,@LoginTime ,@LogTime,@SessionID)
end
SET NOCOUNT OFF