I hope it was useful for you
You can add or subtract silk/giftsilk/silkpoint without teleport character .
exec SRO_VT_ACCOUNT.._SilkSystem @charname,@silktype,@SilkAmount,@type -- cong or tru
USE [SRO_VT_ACCOUNT]
GO
/****** Object: StoredProcedure [dbo].[_SilkSystem] Script Date: 06/16/2019 1:50:26 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[_SilkSystem]
@Charname varchar(25),
@SilkType varchar(20),
@SilkAmount int,
@type varchar(5)
as
DECLARE @UserJID int = (SELECT JID FROM SRO_VT_ACCOUNT.dbo.TB_User U WITH(NOLOCK)JOIN SRO_VT_SHARD.dbo._User U2 WITH(NOLOCK) ON U.JID = U2.UserJID JOIN SRO_VT_SHARD.dbo._Char C WITH(NOLOCK) ON U2.CharID = C.CharID WHERE C.CharName16 = @Charname)
DECLARE @Cursilk INT = (SELECT silk_own FROM SRO_VT_ACCOUNT.dbo.SK_Silk where JID = @UserJID)
DECLARE @Cursilkpoint INT = (SELECT silk_point FROM SRO_VT_ACCOUNT.dbo.SK_Silk where JID = @UserJID)
DECLARE @Cursilkgift INT = (SELECT silk_gift FROM SRO_VT_ACCOUNT.dbo.SK_Silk where JID = @UserJID)
BEGIN TRY
BEGIN TRANSACTION
if @type = 'cong'
begin
IF not exists(SELECT JID from SRO_VT_ACCOUNT.dbo.SK_Silk WITH(NOLOCK) where JID = @UserJID)
BEGIN
IF(@SilkType = 'SILK')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,0,0)
INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,@SilkAmount,0,0)
END
ELSE IF (@SilkType = 'Silk_Gift')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,1,2)
INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,0,@SilkAmount,0)
END
ELSE IF (@SilkType = 'Silk_Point')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,2,2)
INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,0,0,@SilkAmount)
END
end
ELSE
BEGIN
IF(@SilkType = 'SILK')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount+@Cursilk,@SilkAmount,0 ,0)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_own += @SilkAmount WHERE JID = @UserJID
END
ELSE IF(@SilkType = 'Silk_Gift')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount+@Cursilkgift,@SilkAmou nt,1,2)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_gift += @SilkAmount WHERE JID = @UserJID
END
ELSE IF(@SilkType = 'Silk_Point')
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount+@Cursilkpoint,@SilkAmo unt,2,2)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_point += @SilkAmount WHERE JID = @UserJID
END
end
end
else if @type = 'tru'
begin
IF not exists(SELECT JID from SRO_VT_ACCOUNT.dbo.SK_Silk WITH(NOLOCK) where JID = @UserJID)
BEGIN
INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,0,0,0)
end
ELSE
BEGIN
IF(@SilkType = 'SILK')
BEGIN
if @Cursilk - @SilkAmount < 0
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilk-@Cursilk,@Cursilk,0,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_own -= @Cursilk WHERE JID = @UserJID
end
else
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilk-@SilkAmount,@SilkAmount,0,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_own -= @SilkAmount WHERE JID = @UserJID
END
end
ELSE IF(@SilkType = 'Silk_Gift')
BEGIN
if @Cursilkgift - @SilkAmount < 0
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilkgift-@Cursilkgift,@Cursilkgift,1,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_gift -= @Cursilkgift WHERE JID = @UserJID
end
else
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilkgift-@SilkAmount,@SilkAmount,1,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_gift -= @SilkAmount WHERE JID = @UserJID
END
end
ELSE IF(@SilkType = 'Silk_Point')
BEGIN
if @Cursilkpoint - @SilkAmount < 0
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilkpoint-@Cursilkpoint,@Cursilkpoint,2,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_point -= @Cursilkpoint WHERE JID = @UserJID
end
else
begin
INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID,silk_r emain,silk_offset,silk_type,reason) VALUES(@UserJID,@Cursilkpoint-@SilkAmount,@SilkAmount,2,5)
UPDATE SRO_VT_ACCOUNT.dbo.SK_Silk set silk_point -= @SilkAmount WHERE JID = @UserJID
END
end
end
end
okay fine ,I'm so nucking foob
but i know it's really working
You can add or subtract silk/giftsilk/silkpoint without teleport character
If you can fix it become perfect,congratulations, you're not a noob like me
Maybe, it help you! Too fast too furious.
btw... Silk_Point useless. It's contain a bug in database. If you don't fixed, you can buy anything sell as silk_point with 0 silk_point. :-)
Silk_Point reduce but it'll back after you reload your character!
PHP Code:
use SRO_VT_ACCOUNT
go
declare @Charname16 varchar(64)
declare @silk int,@gsilk int,@cursilk int
declare @accjid int, @CharID int
declare @AccountID varchar(55)
set @silk = 4000 --- Put silk number to add (increase). Negative number if decrease
set @gsilk = 0
set @Charname16 = '' --- You need type only Charname16 or AccountID
set @AccountID = ''
set @CharID = (select CharID from sro_vt_shard.dbo._Char where Charname16 = @Charname16)
begin
if @AccountID = ''
begin
set @accjid = (select UserJID from sro_vt_shard.dbo._user where CharID = @CharID)
set @cursilk = (select Silk_Own from SK_Silk where JID = @accjid)
set @AccountID = (select StrUserID from SRO_VT_ACCOUNT..TB_User where JID = @accjid)
if @accjid > 0 and (@silk != 0 or @gsilk != 0)
begin
update SK_Silk set silk_own = silk_own + @silk, silk_gift = silk_gift + @gsilk where JID = @accjid
end
else
begin
print 'Error! Cant find CharName or User Account'
end
end
--@@@@@@@@@@@@@@@
else if @Charname16 = ''
begin
set @accjid = (select JID from TB_User where StrUserID = @AccountID)
set @cursilk = (select Silk_Own from SK_Silk where JID = @accjid)
if @accjid > 0 and (@silk != 0 or @gsilk != 0)
begin
update SK_Silk set silk_own = silk_own + @silk, silk_gift = silk_gift + @gsilk where JID = @accjid
end
else
begin
print 'Error! Cant find CharName or User Account'
end
end
end
USE [SRO_VT_ACCOUNT] GO /****** Object: StoredProcedure [dbo].[_SilkSystem] Script Date: 06/16/2019 1:50:26 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
CREATE proc [dbo].[_SilkSystem] @Charname varchar(25), @SilkType varchar(20), @SilkAmount int as
DECLARE @UserJID int = (SELECT JID FROM SRO_VT_ACCOUNT.dbo.TB_User U WITH(NOLOCK)JOIN SRO_VT_SHARD.dbo._User U2 WITH(NOLOCK) ON U.JID = U2.UserJID JOIN SRO_VT_SHARD.dbo._Char C WITH(NOLOCK) ON U2.CharID = C.CharID WHERE C.CharName16 = @Charname or C.NickName16 = @Charname)
IF(@SilkType = 'SILK') BEGIN IF not exists(SELECT JID from SRO_VT_ACCOUNT.dbo.SK_Silk WITH(NOLOCK) where JID = @UserJID) BEGIN INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,0,0) INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,@SilkAmount,0,0) end ELSE INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,0,0) UPDATE SK_Silk SET silk_own += @SilkAmount WHERE JID = @UserJID END
IF (@SilkType = 'Silk_Gift') BEGIN IF not exists(SELECT JID from SRO_VT_ACCOUNT.dbo.SK_Silk WITH(NOLOCK) where JID = @UserJID) BEGIN INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,1,2) INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,0,@SilkAmount,0) end ELSE INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,1,2) UPDATE SK_Silk SET silk_gift += @SilkAmount WHERE JID = @UserJID END
IF (@SilkType = 'Silk_Point') BEGIN IF not exists(SELECT JID from SRO_VT_ACCOUNT.dbo.SK_Silk WITH(NOLOCK) where JID = @UserJID) BEGIN INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,2,2) INSERT SRO_VT_ACCOUNT.dbo.SK_Silk(JID,silk_own,silk_gift, silk_Point)VALUES(@UserJID,0,0,@SilkAmount) END ELSE INSERT SRO_VT_ACCOUNT.dbo.SK_SilkChange_BY_Web(JID, silk_remain,silk_offset,silk_type,reason) VALUES(@UserJID,@SilkAmount,@SilkAmount,2,2) UPDATE SK_Silk SET silk_Point += @SilkAmount WHERE JID = @UserJID END
Fix if Char use job
PHP Code:
C.CharName16 = @Charname or C.NickName16 = @Charname
PHP Code:
DECLARE @UserJID int = (SELECT JID FROM SRO_VT_ACCOUNT.dbo.TB_User U WITH(NOLOCK)JOIN SRO_VT_SHARD.dbo._User U2 WITH(NOLOCK) ON U.JID = U2.UserJID JOIN SRO_VT_SHARD.dbo._Char C WITH(NOLOCK) ON U2.CharID = C.CharID WHERE C.CharName16 = @Charname or C.NickName16 = @Charname)
I used Athena filter. But Reward silk system per hour is not working..
And procedure here
USE [ATHENA]
GO
/****** Object: StoredProcedure [dbo].[_RewardSystem] Script Date: 6/17/2019 1:20:38 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_RewardSystem]
@struserID varchar(64),
@Cur_level int,
@itemID varchar(64),
@optLevel int
AS
BEGIN
/*
EXAMPLE CODE, FOR REWARD LEVEL RESTRICT
IF @Cur_level < 100)
BEGIN
RETURN;
END
*/
DECLARE @jid bigint = (SELECT JID FROM [SRO_VT_ACCOUNT].[dbo].[TB_User] WITH(NOLOCK) WHERE StrUserID = @struserID);
IF NOT EXISTS(SELECT JID FROM [SRO_VT_ACCOUNT].[dbo].[SK_silk] WITH(NOLOCK) WHERE JID = @jid)
BEGIN
--- INSERT THEIR SHIT
INSERT INTO [SRO_VT_ACCOUNT].[dbo].[SK_silk] (JID, silk_own, silk_gift, silk_point) VALUES @jid, 0, 0, 0);
END
/*
EXAMPLE CODE:
IF @Curlevel BETWEEN 0 AND 50)
BEGIN
-- Higher reward for level 0-50?
SET @optLevel = 32;
END
*/
IF @itemID = 'silk')
BEGIN
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_own = (silk_own + @optLevel) WHERE JID = @jid;
END
ELSE IF @itemID = 'gift')
BEGIN
--- fyll refund oqe?
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_gift = (silk_gift + @optLevel) WHERE JID = @jid;
END
ELSE IF @itemID = 'point')
BEGIN
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_point = (silk_point + @optLevel) WHERE JID = @jid;
END
ELSE
BEGIN
EXEC [SRO_VT_SHARD].[dbo].[_ADD_ITEM_EXTERN_CHEST] @jid, @itemID, 0, @optLevel;
END
END
I used Athena filter. But Reward silk system per hour is not working..
And procedure here
USE [ATHENA]
GO
/****** Object: StoredProcedure [dbo].[_RewardSystem] Script Date: 6/17/2019 1:20:38 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_RewardSystem]
@struserID varchar(64),
@Cur_level int,
@itemID varchar(64),
@optLevel int
AS
BEGIN
/*
EXAMPLE CODE, FOR REWARD LEVEL RESTRICT
IF @Cur_level < 100)
BEGIN
RETURN;
END
*/
DECLARE @jid bigint = (SELECT JID FROM [SRO_VT_ACCOUNT].[dbo].[TB_User] WITH(NOLOCK) WHERE StrUserID = @struserID);
IF NOT EXISTS(SELECT JID FROM [SRO_VT_ACCOUNT].[dbo].[SK_silk] WITH(NOLOCK) WHERE JID = @jid)
BEGIN
--- INSERT THEIR SHIT
INSERT INTO [SRO_VT_ACCOUNT].[dbo].[SK_silk] (JID, silk_own, silk_gift, silk_point) VALUES @jid, 0, 0, 0);
END
/*
EXAMPLE CODE:
IF @Curlevel BETWEEN 0 AND 50)
BEGIN
-- Higher reward for level 0-50?
SET @optLevel = 32;
END
*/
IF @itemID = 'silk')
BEGIN
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_own = (silk_own + @optLevel) WHERE JID = @jid;
END
ELSE IF @itemID = 'gift')
BEGIN
--- fyll refund oqe?
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_gift = (silk_gift + @optLevel) WHERE JID = @jid;
END
ELSE IF @itemID = 'point')
BEGIN
UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_silk] SET silk_point = (silk_point + @optLevel) WHERE JID = @jid;
END
ELSE
BEGIN
EXEC [SRO_VT_SHARD].[dbo].[_ADD_ITEM_EXTERN_CHEST] @jid, @itemID, 0, @optLevel;
END
END
Switch case in SQL is used to define variables' value, so you cannot use it to do other operations like updating a table or inserting. Hope you realize that.
Switch case in SQL is used to define variables' value, so you cannot use it to do other operations like updating a table or inserting. Hope you realize that.
Splendor-online| D11 |Cap: 110 | SilkSystem | vsro System | Play2Win 03/05/2016 - SRO PServer Advertising - 32 Replies SplendorOnline
Opening Date
31-01-2016 After 12 hour from The Post
Home Splendor Sro - Silkroad Online Private Server
Registration Splendor Sro - Silkroad Online Private Server
Download Splendor Sro - Silkroad Online Private Server
Main Server Information
Cap: 110