البقاء مسجل دائمآ
الإعلانات
قديم 03-04-2015, 05:06 AM   #1

Dev. iLegend
عضو لامع



الصورة الرمزية Dev. iLegend


• الانـتـسـاب » Jul 2013
• رقـم العـضـويـة » 112689
• المشـــاركـات » 1,050
• الـدولـة » Egypt - Tanta
• الـهـوايـة » always try for a best features
• اسـم الـسـيـرفـر » Private Server
• الـجـنـس » Male
• نقـاط التقييم » 34
Dev. iLegend صـاعـد

Dev. iLegend غير متواجد حالياً


إرسال رسالة عبر Yahoo إلى Dev. iLegend

(25) 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 (ID64FROM [SRO_VT_SHARD].[dbo].[_Items]) +1
 Set 
@RefObjID = (Select RefObjID From [SRO_VT_SHARD].[dbo].[_CharWhere CharID = @CharID)
 
Set @FreeItemID = (Select Top 1 (ItemIDFrom [SRO_VT_SHARD].[dbo].[_ItemPoolWith (NolockWhere InUse and ItemID 0)
 
Set @Inv_Capacity = (Select InventorySize From [SRO_VT_SHARD].[dbo].[_CharWhere CharID = @CharID)
 
Select Top 1 @Empty_Slot Slot From [SRO_VT_SHARD].[dbo].[_InventoryWith (NolockWhere 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 = @FemaleItemEnd
 
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].[_RefObjCommonWhere CodeName128 = @MaleItem)
      IF (@
FreeItemID IS NOT NULL)
       
Begin
        
-- Update the free item to our new item values.
        
Update [SRO_VT_SHARD].[dbo].[_ItemsSet 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].[_ItemPoolSet InUse 1 Where ItemID = @FreeItemID
        
-- add the new item to char inventory.
        
Update [SRO_VT_SHARD].[dbo].[_InventorySet 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].[_ItemsON
        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].[_ItemsOFF
        
-- Insert row in _ItemPool to make the new item inuse.
        
Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPoolValues (@ID64,1)
        -- 
add the new item to char inventory.
        
Update [SRO_VT_SHARD].[dbo].[_InventorySet 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].[_RefObjCommonWhere CodeName128 = @FemaleItem)
      IF (@
FreeItemID IS NOT NULL)
       
Begin
        
-- Update the free item to our new item values.
        
Update [SRO_VT_SHARD].[dbo].[_ItemsSet 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].[_ItemPoolSet InUse 1 Where ItemID = @FreeItemID
        
-- add the new item to char inventory.
        
Update [SRO_VT_SHARD].[dbo].[_InventorySet 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].[_ItemsON
        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].[_ItemsOFF
        
-- Insert row in _ItemPool to make the new item inuse.
        
Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPoolValues (@ID64,1)
        -- 
add the new item to char inventory.
        
Update [SRO_VT_SHARD].[dbo].[_InventorySet 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,


وبكدا أكون خلصت الشرح والموضوع أي مشكلة تقابلك قوللي عليها بس مش فى الإضافة .. الإضافة مش هتخرج من الشرح اللى فوق أقصد لو مشكلة فى اضافة الأيتم نفسه حصل بج او كدا ..



تحياتي ..

#iLegend#


توقيع Dev. iLegend :
Skype : dev.ramy1
Facebook : عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
Yahoo : [email protected]
-----------------------------------------
My Intro

[YOUTUBE]pYB2FQ58pdM[/YOUTUBE]

-----------------------------------------



رد مع اقتباس
إعلانات google

 


يتصفح الموضوع حالياً : 1 (0 عضو و 1 زائر)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
how i can add items to Character by CharName16 Zeka__Egypt قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة 3 11-10-2014 04:29 PM
مشكله في عمل character failed to create a character. please try to connect again.(s10 spider560 قسم المواضيع المكررة و المخالفة 2 13-04-2013 05:11 PM
Important Info Of Character Items From A To Z NightMare321 قسم المواضيع المكررة و المخالفة 118 30-05-2010 02:14 AM


الساعة الآن 12:08 PM.