Code:
USE [YourDB]
GO
/****** Coded By ThElitEyeS ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[purchase]
@char varchar(50),
@code varchar(129),
@price int,
@amount int,
@plus int
AS
IF ((SELECT TOP 1 silk_own FROM SRO_VT_ACCOUNT.DBO.SK_Silk WHERE JID = (SELECT JID FROM SRO_VT_ACCOUNT.DBO.TB_User WHERE StrUserID = @char)) >= @price)
BEGIN
DECLARE @empty int
SELECT top 1 @empty = Slot FROM SRO_VT_SHARD.DBO._Inventory WHERE CharID = (SELECT CharID FROM SRO_VT_SHARD.DBO._Char WHERE CharName16 = @char) AND Slot >= 13 AND ItemID = 0 order by slot
IF (@empty >= (SELECT InventorySize FROM SRO_VT_SHARD.DBO._Char WHERE CharName16 = @char))
BEGIN
SELECT 'Inventory is full.' AS INFO
END
ELSE
BEGIN
SELECT 'Item was placed on the selected Character.' AS INFO;
DECLARE @itemid int
DECLARE @serial varchar(129)
DECLARE @newid bigint
SELECT @itemid = ID FROM SRO_VT_SHARD.DBO._RefObjCommon WHERE CodeName128 = @code
SELECT @serial = LatestItemSerial FROM SRO_VT_SHARD.DBO._LatestItemSerial
SELECT @newid = ID64 FROM SRO_VT_SHARD.DBO._Items WHERE Serial64 = @serial
INSERT INTO SRO_VT_SHARD.DBO._Items (RefItemID, OptLevel, Data, MagParamNum, Serial64) VALUES (@itemid, @plus, @amount, 0, @serial)
INSERT INTO SRO_VT_SHARD.DBO._ItemPool (ItemID, InUse) VALUES (@newid, 1)
UPDATE SRO_VT_SHARD.DBO._Inventory SET ItemID = @newid WHERE Slot = @empty AND CharID = (SELECT CharID FROM SRO_VT_SHARD.DBO._Char WHERE CharName16 = @char)
UPDATE SRO_VT_ACCOUNT.DBO.SK_Silk SET silk_own = silk_own - @price WHERE JID = (SELECT JID FROM SRO_VT_ACCOUNT.DBO.TB_User WHERE StrUserID = @char)
INSERT INTO mall_log(character, code, price, amount, plus, date) VALUES (@char, @code, @price, @amount, @plus, GETDATE())
END
END
ELSE
BEGIN
SELECT 'Not enough silks' AS INFO
END
GO
Code:
USE [YourDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[mall_log](
[id] [int] IDENTITY(1,1) NOT NULL,
[character] [varchar](50) NULL,
[code`] [varchar](129) NULL,
[price] [int] NULL,
[amount] [int] NULL,
[plus] [int] NULL,
[date] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO