الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   Add Items By Character Gender (https://silkroad4arab.com/vb/showthread.php?t=582994)

Dev. iLegend 03-04-2015 05:06 AM

Add Items By Character Gender
 
http://upload.wikimedia.org/wikipedi...9%8A%D9%85.png

http://www10.0zz0.com/2015/04/03/03/997522205.png


http://www2.0zz0.com/2012/10/22/16/593531309.png


http://www5.0zz0.com/2015/04/03/03/107101660.png


http://www9.0zz0.com/2015/04/03/04/727804635.png

http://www5.0zz0.com/2015/04/03/03/107101660.png

Add Items By Gender
http://www5.0zz0.com/2015/04/03/03/107101660.png

أولاً : نبذة مختصرة ..

الـ Procedure ده يمكن اكون نزلته قبل كدا بس مكانش متظبط كنت انا عامله ومكنش بيضيف إلا أيتم كنت بتحدده من
جوا الـ Procedure
وقولت فى الموضوع انه ليه كذا استخدام على حسب التعديل اللى انت تعمله عليه ..

عموماً انا ظبط الباراميترات اللى بتدخله عشان يضيف أيتم تقريباً زي ADD_ITEM_EXTERN بس مع بعض التغييرات طبعاً .

http://www5.0zz0.com/2015/04/03/03/107101660.png

ثانياً : استخداماته ..

بيستخدم عشان تضيف أيتم معين يكون منه Male & Female مثلاً Avatars , Devils , Set , etc
والفايدة بتاعته او الاستخدام الشائع اللي اكتر الناس ممكن تحتاجه عشانها الـ Start Items اللي بتضيفها فى dbo._AddNewChar
انك بدل متضيف مثلاً أيتم Male & Female لكل كراكتر ايان كانت فممكن تستخدم ده أفضل يضيف على حسب الكراكتر
ان كانت Male يضيفلها Male item ولو كانت Female يضيفلها Female item


http://www5.0zz0.com/2015/04/03/03/107101660.png
ثالثاً : الشرح وكيفية الاستخدام ..

هتنسخ الـ 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

http://www5.0zz0.com/2015/04/03/03/107101660.png

رابعاً : بعض الملحوظات ..

الـ 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,

http://www5.0zz0.com/2015/04/03/03/107101660.png

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

http://www5.0zz0.com/2015/04/03/03/107101660.png

تحياتي ..

#iLegend#

Mr Z!dane 03-04-2015 11:53 AM

رد: Dev : Add Items By Character Gender
 
#approved :whistling2:

UnStoppable! 03-04-2015 12:12 PM

رد: Dev : Add Items By Character Gender
 
شكرا استمر

Hamza FiGo 04-04-2015 07:33 PM

رد: Dev : Add Items By Character Gender
 
:gun: احسن من رائع

Dev. iLegend 05-04-2015 01:42 AM

رد: Dev : Add Items By Character Gender
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Mr Z!dane (المشاركة 5180397)
#approved :whistling2:


شكر
اً على الموافقة
:whistling:

اقتباس:

المشاركة الأصلية كتبت بواسطة UnStoppable! (المشاركة 5180406)
شكرا استمر

you welcome
:59:

اقتباس:

المشاركة الأصلية كتبت بواسطة Hamza FiGo (المشاركة 5181097)
:gun: احسن من رائع

شكراً لمرورك يا كبير
:respect:

pop2009 05-04-2015 11:35 AM

رد: Dev : Add Items By Character Gender
 
برنس و الله

Dev. iLegend 06-04-2015 05:38 PM

رد: Dev : Add Items By Character Gender
 
اقتباس:

المشاركة الأصلية كتبت بواسطة pop2009 (المشاركة 5181302)
برنس و الله

شكراً على مرورك


الساعة الآن 01:19 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.