|
• الانـتـسـاب » Jul 2013
|
• رقـم العـضـويـة » 112689
|
• المشـــاركـات » 1,051
|
• الـدولـة » Egypt - Tanta
|
• الـهـوايـة » always try for a best features
|
• اسـم الـسـيـرفـر » Private Server
|
• الـجـنـس » Male
|
• نقـاط التقييم » 36
|
|
|
Add Items By Character Gender
Add Items By Gender
أولاً : نبذة مختصرة ..
الـ Procedure ده يمكن اكون نزلته قبل كدا بس مكانش متظبط كنت انا عامله ومكنش بيضيف إلا أيتم كنت بتحدده من
جوا الـ Procedure وقولت فى الموضوع انه ليه كذا استخدام على حسب التعديل اللى انت تعمله عليه ..
عموماً انا ظبط الباراميترات اللى بتدخله عشان يضيف أيتم تقريباً زي ADD_ITEM_EXTERN بس مع بعض التغييرات طبعاً .
ثانياً : استخداماته ..
بيستخدم عشان تضيف أيتم معين يكون منه Male & Female مثلاً Avatars , Devils , Set , etc
والفايدة بتاعته او الاستخدام الشائع اللي اكتر الناس ممكن تحتاجه عشانها الـ Start Items اللي بتضيفها فى dbo._AddNewChar
انك بدل متضيف مثلاً أيتم Male & Female لكل كراكتر ايان كانت فممكن تستخدم ده أفضل يضيف على حسب الكراكتر
ان كانت Male يضيفلها Male item ولو كانت Female يضيفلها Female item
ثالثاً : الشرح وكيفية الاستخدام ..
هتنسخ الـ Procedure ده من كود الـ php وتعمله Execute بأسم الـ SHARD اللى عندك
وراعي تغيير أسماء الداتا بيز لو فى حاجة عندك متغيرة ،
كود PHP:
USE [SRO_VT_SHARD] GO /****** Object: StoredProcedure [dbo].[_ADD_ITEM_BY_GENDER] Script Date: 04/03/2015 02:28:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[_ADD_ITEM_BY_GENDER]
/* Full coded by Lazcano , not allowed to copy uner your name. */ /* www.facebook.com/designer.ramy.saied */ /* Silkroad 4 Arab */
-- Procedure can use for add items by character gender -- You can use it to add start items , systems , etc ..
-- External parameters .. @CharID Int , @MaleItem Varchar(128) , @FemaleItem Varchar(128) , @Data Int , @OptLevel Int As
-- Declare expressions. ------------------------ Declare @RefObjID Int , @ID64 Int , @RefItemID Int , @FreeItemID Bigint , @Inv_Capacity Int , @Empty_Slot Int , @SN BigInt , @MaleData Int , @FemaleData Int --------------------------------------------------------------------------------------------------------------- Set @SN = (Select LatestItemSerial From [SRO_VT_SHARD].[dbo].[_LatestItemSerial]) +1 Set @ID64 = (Select MAX (ID64) FROM [SRO_VT_SHARD].[dbo].[_Items]) +1 Set @RefObjID = (Select RefObjID From [SRO_VT_SHARD].[dbo].[_Char] Where CharID = @CharID) Set @FreeItemID = (Select Top 1 (ItemID) From [SRO_VT_SHARD].[dbo].[_ItemPool] With (Nolock) Where InUse = 0 and ItemID > 0) Set @Inv_Capacity = (Select InventorySize From [SRO_VT_SHARD].[dbo].[_Char] Where CharID = @CharID) Select Top 1 @Empty_Slot = Slot From [SRO_VT_SHARD].[dbo].[_Inventory] With (Nolock) Where CharID = @CharID and Slot >= 13 and Slot < @Inv_Capacity and ItemID = 0 Order By Slot IF @Data between 0 and 1 Begin Set @MaleData = (Select Dur_L From [SRO_VT_SHARD].[dbo].[_RefObjItem] AS ObjItem Inner join [SRO_VT_SHARD].[dbo].[_RefObjCommon] AS ObjCommon ON ObjItem.ID = ObjCommon.Link Where ObjCommon.CodeName128 = @MaleItem) Set @FemaleData = (Select Dur_L From [SRO_VT_SHARD].[dbo].[_RefObjItem] AS ObjItem Inner join [SRO_VT_SHARD].[dbo].[_RefObjCommon] AS ObjCommon ON ObjItem.ID = ObjCommon.Link Where ObjCommon.CodeName128 = @FemaleItem) End ELSE IF @Data > 1 Begin Set @MaleData = @Data Set @FemaleData = @Data End --------------------------------------------------------------------------------------------------------------- -- IF Char Gender = [M] IF (@RefObjID between 1907 and 1919) or (@RefObjID between 14875 and 14887) Begin Set @RefItemID = (Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommon] Where CodeName128 = @MaleItem) IF (@FreeItemID IS NOT NULL) Begin -- Update the free item to our new item values. Update [SRO_VT_SHARD].[dbo].[_Items] Set RefItemID=@RefItemID , OptLevel=@OptLevel , Variance='0' , Data=@MaleData , CreaterName='Lazcano' , MagParamNum='0' , MagParam1=NULL , MagParam2=NULL , MagParam3=NULL , MagParam4=NULL , MagParam5=NULL , MagParam6=NULL , MagParam7=NULL , MagParam8=NULL , MagParam9=NULL , MagParam10=NULL , MagParam11=NULL , MagParam12 = NULL Where ID64 = @FreeItemID -- Update _ItemPool to make the new item inuse. Update [SRO_VT_SHARD].[dbo].[_ItemPool] Set InUse = 1 Where ItemID = @FreeItemID -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @FreeItemID Where CharID = @CharID and Slot = @Empty_Slot End ELSE IF (@FreeItemID IS NULL) Begin -- Insert new row in _Items SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] ON Insert InTo [SRO_VT_SHARD].[dbo].[_Items] (ID64,RefItemID,OptLevel,Variance,Data,CreaterName,MagParamNum,MagParam1,MagParam2,MagParam3,MagParam4,MagParam5,MagParam6,MagParam7,MagParam8,MagParam9,MagParam10,MagParam11,MagParam12,Serial64) Values (@ID64,@RefItemID,@OptLevel,0,@MaleData,'Lazcano',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@SN) SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] OFF -- Insert row in _ItemPool to make the new item inuse. Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPool] Values (@ID64,1) -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @ID64 Where CharID = @CharID and Slot = @Empty_Slot End End
-- IF Char Gender = [F] Else IF (@RefObjID Between 1920 and 1932) Or (@RefObjID Between 14888 and 14900) Begin Set @RefItemID = (Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommon] Where CodeName128 = @FemaleItem) IF (@FreeItemID IS NOT NULL) Begin -- Update the free item to our new item values. Update [SRO_VT_SHARD].[dbo].[_Items] Set RefItemID=@RefItemID , OptLevel=@OptLevel , Variance='0' , Data=@FemaleData , CreaterName='Lazcano' , MagParamNum='0' , MagParam1=NULL , MagParam2=NULL , MagParam3=NULL , MagParam4=NULL , MagParam5=NULL , MagParam6=NULL , MagParam7=NULL , MagParam8=NULL , MagParam9=NULL , MagParam10=NULL , MagParam11=NULL , MagParam12 = NULL Where ID64 = @FreeItemID -- Update _ItemPool to make the new item inuse. Update [SRO_VT_SHARD].[dbo].[_ItemPool] Set InUse = 1 Where ItemID = @FreeItemID -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @FreeItemID Where CharID = @CharID and Slot = @Empty_Slot End ELSE IF (@FreeItemID IS NULL) Begin -- Insert new row in _Items SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] ON Insert InTo [SRO_VT_SHARD].[dbo].[_Items] (ID64,RefItemID,OptLevel,Variance,Data,CreaterName,MagParamNum,MagParam1,MagParam2,MagParam3,MagParam4,MagParam5,MagParam6,MagParam7,MagParam8,MagParam9,MagParam10,MagParam11,MagParam12,Serial64) Values (@ID64,@RefItemID,@OptLevel,0,@FemaleData,'Lazcano',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@SN) SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] OFF -- Insert row in _ItemPool to make the new item inuse. Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPool] Values (@ID64,1) -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @ID64 Where CharID = @CharID and Slot = @Empty_Slot End End
طيب دلوقتي خلصنا إضافة الـ Procedure عشان نضيف أيتم بقا هنعمل ايه ؟
هنجيب CodeName128 اللى بتنزل بيه الأيتم من القونصول الـ Male & Female
مثال
كود PHP:
ITEM_MALL_AVATAR_M_NASRUN ITEM_MALL_AVATAR_W_NASRUN
عايزين نضيف منه واحد +10 لكراكتر منعرفش ان كانت Male ولا Female
تمام يبقا نستخدم الكيوري دي الأول عشان نجيب CharID
كود PHP:
Use SRO_VT_SHARD Select CharID From _Char Where CharName16 = 'Lazcano'
وبعدين نستخدم الكيوري دي اللى هتشغلنا الـ Procedure وتضيف الأيتم على حسب Character Gender
كود PHP:
Use SRO_VT_SHARD Exec _ADD_ITEM_BY_GENDER 6714,'ITEM_MALL_AVATAR_M_NASRUN','ITEM_MALL_AVATAR_W_NASRUN',1,10 -- 6714 Character ID from first query -- ,'ITEM_MALL_AVATAR_M_NASRUN' Male item -- ,'ITEM_MALL_AVATAR_W_NASRUN' Female item -- ,1 Item count -- ,10 Plus value
كدا تمام الأيتم اتضاف على حسب Char Gender
رابعاً : بعض الملحوظات ..
الـ Data اللى هى Item Count مينفعش تكتبها أعلى من MaxStack بتاع الأيتم يعني بمعني أصح دلوقتي انت عاوز تضيف
Avatar والـ MaxStack بتاعه 1 ، يبقا تكتب 1 زي منا كاتب فى الكيوري كدا ، عوزت تضيف كوين ،
والكوين عندك MaxStack = 1000 يبقا أقصي رقم تكتبه 1000 فى الـ Item Count
طيب عوزت تضيف أيتم ملوش Gender زي سلاح TStaff مثلاً سهلة كرر الكود نيم فى الـ Male والـ Female يعني هتبقا كدا
كود PHP:
Exec _ADD_ITEM_BY_GENDER 6714,'ITEM_EU_TSTAFF_11_SET_B_RARE','ITEM_EU_TSTAFF_11_SET_B_RARE',1,7
وبكدا أكون خلصت الشرح والموضوع أي مشكلة تقابلك قوللي عليها بس مش فى الإضافة .. الإضافة مش هتخرج من الشرح اللى فوق أقصد لو مشكلة فى اضافة الأيتم نفسه حصل بج او كدا ..
تحياتي ..
#iLegend#
|