09-10-2018, 11:22 AM
|
#15
|
|
• الانـتـسـاب » Aug 2009
|
• رقـم العـضـويـة » 63477
|
• المشـــاركـات » 684
|
• الـدولـة » أم الدنيــــا
|
• الـهـوايـة » Silkroad
|
• اسـم الـسـيـرفـر » Private Server
|
• الـجـنـس » Male
|
• نقـاط التقييم » 17
|
|
|
رد: ارجو الحل
أعمل واحد من دول على حسب البلص عندك وأشتغل بفيلتر وحدد الماكس بلص بعد كده بADV
أعمل ده الاول لو منفعشى اعمل التانى
[Procedure: [SRO_VT_LOG].[dbo].[_AddLogItem
كود:
/* Item upgrading */
IF (@Operation = 90 OR @Operation = 160)
BEGIN
/* Start: Max Plus */
DECLARE @strDescStrip VARCHAR(128)
DECLARE @ItemID INT
DECLARE @MaxOptLevel TINYINT
SET @MaxOptLevel = 12
/* Get current fused plus */
SET @len_desc1 = CHARINDEX (']', @strDesc)
IF (@len_desc1 = 9)
BEGIN
SET @strDesc = SUBSTRING(@strDesc, 0, 9)
SET @strDescStrip = SUBSTRING(@strDesc, 8, 1)
END
ELSE IF (@len_desc1 = 10)
BEGIN
SET @strDesc = SUBSTRING(@strDesc, 0, 10)
SET @strDescStrip = SUBSTRING(@strDesc, 8, 2)
END
/* Check if OptLevel above @MaxOptLevel */
IF (@strDescStrip >= @MaxOptLevel)
BEGIN
/* Get ItemID */
SELECT @ItemID = ID64 from [SRO_VT_SHARD].[dbo].[_Items] WHERE Serial64 = @ItemSerial
/* Update items if has more than @MaxOptLevel without Adv elixir*/
UPDATE [SRO_VT_SHARD].[dbo].[_Items] SET OptLevel = @MaxOptLevel WHERE OptLevel > @MaxOptLevel AND Serial64 = @ItemSerial
/* Delete Adv elixir effect for item if has more than @MaxOptLevel with Adv elixir */
DELETE FROM [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] WHERE nItemDBID IN (
SELECT a.ID64 FROM [SRO_VT_SHARD].[dbo].[_Items] a WITH (NOLOCK)
INNER JOIN [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] b ON a.ID64 = b.nItemDBID
WHERE a.ID64 = @ItemID AND (a.OptLevel + b.nOptValue) > @MaxOptLevel
AND b.bOptType = 2
)
END
RETURN -1
/* End: Max Plus */
END
[Procedure: [SRO_VT_LOG].[dbo].[_AddLogChar
كود:
/* Login/Logout sequence (4 = Login, 6 = Logout) */
IF (@EventID = 4 OR @EventID = 6)
BEGIN
/*
* Begin: Item Plus check
*/
DECLARE @UserJID INT, @GuildID INT, @MaxOptLevel TINYINT
SET @MaxOptLevel = 12 -- Set Max Plus value (change this)
/*
* Get JID and GuildID info
*/
SELECT @UserJID = a.UserJID, @GuildID = b.GuildID FROM [SRO_VT_SHARD].[dbo].[_User] a WITH (NOLOCK)
INNER JOIN [SRO_VT_SHARD].[dbo].[_Char] b ON a.CharID = b.CharID WHERE a.CharID = @CharID
/*
* 1. INVENTORY: Update items in inventory if has more than +12 without Adv elixir
*/
UPDATE [SRO_VT_SHARD].[dbo].[_Items] SET OptLevel = @MaxOptLevel WHERE OptLevel > @MaxOptLevel AND ID64 IN (
SELECT ItemID FROM [SRO_VT_SHARD].[dbo].[_Inventory] WITH (NOLOCK)
WHERE CharID = @CharID AND ItemID > 0
)
/*
* 2. INVENTORY: Remove Adv elixir effect for items in inventory if has more than +12 with Adv elixir
*/
DELETE FROM [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] WHERE nItemDBID IN (
SELECT a.ItemID FROM [SRO_VT_SHARD].[dbo].[_Inventory] a WITH (NOLOCK)
INNER JOIN [SRO_VT_SHARD].[dbo].[_Items] b ON a.ItemID = b.ID64
INNER JOIN [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] c ON a.ItemID = c.nItemDBID
WHERE a.CharID = @CharID AND a.ItemID > 0 AND (b.OptLevel + c.nOptValue) > @MaxOptLevel
AND c.bOptType = 2
)
/*
* 3. PERSONAL STORAGE: Update items in personal storage if has more than +12 without Adv elixir
*/
UPDATE [SRO_VT_SHARD].[dbo].[_Items] SET OptLevel = @MaxOptLevel WHERE OptLevel > @MaxOptLevel AND ID64 IN (
SELECT ItemID FROM [SRO_VT_SHARD].[dbo].[_Chest] WITH (NOLOCK)
WHERE UserJID = @UserJID AND ItemID > 0
)
/*
* 4. PERSONAL STORAGE: Remove Adv elixir effect for items in personal storage if has more than +12 with Adv elixir
*/
DELETE FROM [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] WHERE nItemDBID IN (
SELECT a.ItemID FROM [SRO_VT_SHARD].[dbo].[_Chest] a WITH (NOLOCK)
INNER JOIN [SRO_VT_SHARD].[dbo].[_Items] b ON a.ItemID = b.ID64
INNER JOIN [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] c ON a.ItemID = c.nItemDBID
WHERE a.UserJID = @UserJID AND a.ItemID > 0 AND (b.OptLevel + c.nOptValue) > @MaxOptLevel
AND c.bOptType = 2
)
/*
* 5. GUILD: If character is guild member, check Item Plus in Guild Inventory
*/
IF (@GuildID <> 0)
BEGIN
/*
* 5.1. Update items in guild storage if has more than +12 without Adv elixir
*/
UPDATE [SRO_VT_SHARD].[dbo].[_Items] SET OptLevel = @MaxOptLevel WHERE OptLevel > @MaxOptLevel AND ID64 IN (
SELECT ItemID FROM [SRO_VT_SHARD].[dbo].[_GuildChest] WITH (NOLOCK)
WHERE GuildID = @GuildID AND ItemID > 0
)
/*
* 5.2. Remove Adv elixir effect for items in guild storage if has more than +12 with Adv elixir
*/
DELETE FROM [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] WHERE nItemDBID IN (
SELECT a.ItemID FROM [SRO_VT_SHARD].[dbo].[_GuildChest] a WITH (NOLOCK)
INNER JOIN [SRO_VT_SHARD].[dbo].[_Items] b ON a.ItemID = b.ID64
INNER JOIN [SRO_VT_SHARD].[dbo].[_BindingOptionWithItem] c ON a.ItemID = c.nItemDBID
WHERE a.GuildID = @GuildID AND a.ItemID > 0 AND (b.OptLevel + c.nOptValue) > @MaxOptLevel
AND c.bOptType = 2
)
END
/*
* END: Item Plus check
*/
END
من غير فيلتر ده او ده هيعمل معاك الواجب
|
|
التعديل الأخير تم بواسطة #3mr ; 09-10-2018 الساعة 11:32 AM
|