19-04-2016, 09:03 PM
|
#24
|
|
|
• الانـتـسـاب » Jul 2013
|
|
• رقـم العـضـويـة » 112689
|
|
• المشـــاركـات » 1,050
|
|
• الـدولـة » Egypt - Tanta
|
|
• الـهـوايـة » always try for a best features
|
|
• اسـم الـسـيـرفـر » Private Server
|
|
• الـجـنـس » Male
|
|
• نقـاط التقييم » 34
|
|
|
|
رد: LOCK & Unlock System By Massage With Secret Word By HLP
|
|
المشاركة الأصلية كتبت بواسطة Black Shield
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
طيب انا عندي فكرة بسيطه مش بس مجربتهاش جربها كده يا رامي و شوف
بما اننا ملناش في ال C# يبقى خلينا في الي احنا نعرفه دلوقتي :D
اول حاجة ممكن تعمل تابل جديد زي _Item بظبط بكل الكولمنز بتاعته تمام بس هانلغي الريفرانس منه
اول حاجه تضيف في الـ _Memo_Add
جزأ يضيف الداتا بتاعت الاياتم الي هايتعمله Lock من _Item للتابل الجديد _LockedItems
|
|
|
INSERT INTO SRO_VT_SHARDLOG.._LockedItems SELECT * FROM SRO_VT_SHARD.._Items WHERE ID64 = @ItemID
|
و حط ده في _AddLogItem
|
|
|
IF (@strDesc = '%Opt:%') DECLARE @OptLevel int = (SELECT OptLevel FROM _LockedItems WHERE CharID = @CharID and ID64 IN (SELECT ItemID FROM _Inventory WHERE CharID = @CharID and Slot = 13)) Begin IF (@Operation = 41 dwData = 65540 and @ItemRefID in (SELECT ItemRefID FROM _LockedItems WHERE ItemRefID = @ItemRefID)) BEGIN UPDATE _Items SET OptLevel = @OptLevel WHERE ID64 IN (SELECT ItemID FROM _Inventory WHERE CharID = @CharID and Slot = 13) END END
|
انا مجربتهوش جربه انت و لو اشتغل قول لي نظبط بقى الستاتس و البلو كمان
اه متسناش في الUnlock خليه يمسح الرو بتاع الايتم من تابل _LockedItems
و ده كويري يعمل لك التابل على طول
|
|
|
USE SRO_VT_SHARDLOG GO
/****** Object: Table [dbo].[_Items] Script Date: 19/04/2016 06:57:56 م ******/ SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
SET ANSI_PADDING ON GO
CREATE TABLE [dbo].[_LockedItems]( [ID64] [bigint] NOT NULL, [RefItemID] [int] NOT NULL, [OptLevel] [tinyint] NULL, [Variance] [bigint] NULL, [Data] [int] NOT NULL, [CreaterName] [varchar](64) NULL, [MagParamNum] [tinyint] NOT NULL, [MagParam1] [bigint] NULL, [MagParam2] [bigint] NULL, [MagParam3] [bigint] NULL, [MagParam4] [bigint] NULL, [MagParam5] [bigint] NULL, [MagParam6] [bigint] NULL, [MagParam7] [bigint] NULL, [MagParam8] [bigint] NULL, [MagParam9] [bigint] NULL, [MagParam10] [bigint] NULL, [MagParam11] [bigint] NULL, [MagParam12] [bigint] NULL, [Serial64] [bigint] NOT NULL, )
SET ANSI_PADDING OFF GO
|
|
أولاً عشان اكون واضح في شرحي اللي جاي دا ،، اللوج دا ما هو إلا تنفيذ كيوري بعد تنفيذ المهمة من الجيم سيرفر ،،
بمعني ان ال EventID بتاع الألكيمي مينفعش انك تعمل قبله او في اي مكان في البروسيدور Select Old OptLevel لأن أصلاً البلص اللي هجيبه هو البلص الحالي للأيتم بعد الألكيمي فا بالتالي الكيوري اللي بتجيب البلص القديم وتحطه للأيتم اكنها معملتش حاجة ،، ممكن تتشقلب شوية وتجيبها من الجدول القديم زي منتا عامل كدا بس في حاجة غلط انت عاملها وهي انك جايب بلص الأيتم القديم بدلالة أي دي الأيتم في السلوت 13 طيب افرض الالكيمي حصل مش في سلوت 13 وسلوت 13 كانت فاضيه ؟ يبقا كدا old optlevel = null وبكدا الكيوري هتجيب ايرور في الاكسكيوت ومش هيحصل حاجة ،، بس في حالة ال Destroy هتعمل ايه ؟
هو انا معاك ان الأيتم بيبقا محفوظ في جدول ببياناته كلها بحيث ان الادمن يقدر يعرف الايتم ويرجعه للناس ،،
بس دا مش حل !
|
|
|
التعديل الأخير تم بواسطة Dev. iLegend ; 19-04-2016 الساعة 09:08 PM
|