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

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   Learn Add item IN NPC IN 3 Minute's (https://silkroad4arab.com/vb/showthread.php?t=509125)

ღ♥ČrimeḾaster♥ღ 18-06-2013 01:10 AM

Add Item In NPC in 3 Minute's
 
فى ناس كتير مش عارفه تعمل Add item in npc انا حبيت اساعد الناس واسهل عليهم الموضوع

نبتدى الشرح


http://www9.0zz0.com/2013/06/17/21/555295738.gif

الـ Query اللى هنشتغل عليه

كود PHP:

USE SRO_VT_SHARD
GO
DECLARE @ID int
DECLARE @INDEX int
DECLARE @CodeName varchar(128)
DECLARE @
PackageName varchar(128)
DECLARE @
DescSTRID varchar(128)
DECLARE @
File varchar(128)
DECLARE @
Price int
DECLARE @SilkPrice int
DECLARE @Slot tinyint
DECLARE @TAB varchar(128)
DECLARE @
Data int
DECLARE @SkipScrapOfPackageItem int 0
DECLARE @SkipPackageItem int 0
DECLARE @SkipPricePolicyOfItem int 0
--- Set Variables
SET 
@CodeName 'ITEM_CH_M_CLOTHES_12_FA_A' -- Item CodeName in RefObjCommon
SET 
@Price 5000000 -- Set 0 if you don't want to set Gold Price
SET @SilkPrice = 0 -- Set 0 if you don'
t want to set Silk Price
SET 
@TAB 'STORE_KT_ARMOR_TAB3' -- Tab name in NPC, For _RefShopGoods
SET 
@PackageName 'PACKAGE_'+@CodeName -- Do not edit if you don't know what are you doing.
--- you don'
t need to touch here...
IF (@
CodeName '')
BEGIN
    
PRINT 'You have to edit CodeName..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF ((SELECT COUNT(IDFROM _RefObjCommon WHERE CodeName128 = @CodeName) < 1)
BEGIN
    
PRINT 'There is no item with this CodeName..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF (@Price 0)
BEGIN
    
PRINT 'Price is not VALID..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF (@SilkPrice 0)
BEGIN
    
PRINT 'Silk Price is not VALID..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF ((SELECT COUNT(IDFROM _RefShopTab WHERE CodeName128 = @TAB) < 1)
BEGIN
    
PRINT 'TAB VALUE IS NOT VALID..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF ((SELECT COUNT (RefPackageItemCodeNameFROM _RefShopGoods WHERE RefPackageItemCodeName = @PackageName AND RefTabCodeName = @TAB) > 0)
BEGIN
    
PRINT 'There is already same item in same tab..!'
    
PRINT 'FAILED.'
    
RETURN
END
IF ((SELECT COUNT (RefPackageItemCodeNameFROM _RefScrapOfPackageItem WHERE RefPackageItemCodeName = @PackageName) > 0)
BEGIN
    
PRINT 'There is already an entry for this item, skipping @_RefScrapOfPackageItem table..!'
    
SET @SkipScrapOfPackageItem 1
END
IF ((SELECT COUNT (CodeName128FROM _RefPackageItem WHERE CodeName128 = @PackageName) > 0)
BEGIN
    
PRINT 'There is already an entry for this item, skipping @_RefPackageItem table..!'
    
SET @SkipPackageItem 1
END
IF ((SELECT COUNT (PaymentDeviceFROM _RefPricePolicyOfItem WHERE RefPackageItemCodeName = @PackageName AND PaymentDevice '1') > 0)
BEGIN
    
PRINT 'There is already an entry for this item with same PaymentDevice, skipping @_RefPricePolicyOfItem table..! (Gold)'
    
SET @SkipPricePolicyOfItem 1
END
IF ((SELECT COUNT (PaymentDeviceFROM _RefPricePolicyOfItem WHERE RefPackageItemCodeName = @PackageName AND PaymentDevice '2') > 0)
BEGIN
    
PRINT 'There is already an entry for this item with same PaymentDevice, skipping @_RefPricePolicyOfItem table..! (Silk)'
    
IF (@SkipPricePolicyOfItem 1)
    
BEGIN
        SET 
@SkipPricePolicyOfItem 3
    END
    
ELSE
    
BEGIN
        SET 
@SkipPricePolicyOfItem 2
    END
END
IF (@SilkPrice 0) AND (@Price 0)
BEGIN
    
PRINT 'You need to set a price, at least one !'
    
PRINT 'FAILED.'
    
RETURN
END
SELECT TOP 1 
@ID ID FROM _RefPackageItem ORDER BY ID DESC
SET 
@ID = @ID 1
SELECT TOP 1 
@INDEX = [IndexFROM _RefScrapOfPackageItem ORDER BY [IndexDESC
SET 
@INDEX = @INDEX 1
SELECT TOP 1 
@Slot SlotIndex FROM _RefShopGoods WHERE RefTabCodeName = @TAB ORDER BY SlotIndex DESC
IF (@Slot 0)
BEGIN
    SET 
@Slot = @Slot 1
END
ELSE IF (@Slot 0)
BEGIN
    SET 
@Slot = @Slot 1
END
ELSE
BEGIN
    SET 
@Slot 0
END
SET 
@DescSTRID 'SN_' + @CodeName '_TT_DESC'
SELECT @File AssocFileIcon128 FROM _RefObjCommon WHERE CodeName128 = @CodeName
IF (@CodeName LIKE '%RING%' OR @CodeName LIKE '%NECKLACE%' OR @CodeName LIKE '%ARCHEMY%')
BEGIN
    SET 
@Data 1
END
ELSE
BEGIN
    SELECT 
@Data Dur_U FROM _RefObjItem WHERE ID = (SELECT Link FROM _RefObjCommon WHERE CodeName128 = @CodeName)
END
BEGIN TRANSACTION
IF (@SkipPackageItem 0)
BEGIN
    
--SET IDENTITY_INSERT _RefPackageItem ON
    INSERT _RefPackageItem 
([Service], CountryIDCodeName128SaleTagExpandTermNameStrIDDescStrIDAssocFileIconParam1Param1_Desc128Param2Param2_Desc128Param3Param3_Desc128Param4Param4_Desc128VALUES (115, @ID, @PackageName0'EXPAND_TERM_ALL''SN_'+@CodeName, @DescSTRID, @File, -1'xxx', -1'xxx', -1'xxx', -1'xxx')
        IF (@@
ERROR <> 0)  
        
BEGIN
            
PRINT 'AN ERROR HAPPENED WHILE ADDING TO _RefPackageItem, Rolling back...'
            
ROLLBACK TRANSACTION
            
RETURN
        
END
    
PRINT 'Added to _RefPackageItem !'
    
--SET IDENTITY_INSERT _RefPackageItem OFF
END
IF (@SkipScrapOfPackageItem 0)
BEGIN
    INSERT _RefScrapOfPackageItem 
(ServiceCountryRefPackageItemCodeNameRefItemCodeNameOptLevelVarianceDataMagParamNumMagParam1MagParam2MagParam3MagParam4MagParam5MagParam6MagParam7MagParam8MagParam9MagParam10MagParam11MagParam12Param1Param1_Desc128Param2Param2_Desc128Param3Param3_Desc128Param4Param4_Desc128, [Index]) VALUES (115, @PackageName, @CodeName00, @Data0000000000000, -1'xxx', -1'xxx', -1'xxx', -1'xxx', @INDEX)
        IF (@@
ERROR <> 0)  
        
BEGIN
            
PRINT 'AN ERROR HAPPENED WHILE ADDING TO _RefScrapOfPackageItem, Rolling back...'
            
ROLLBACK TRANSACTION
            
RETURN
        
END
    
PRINT 'Added to _RefScrapOfPackageItem !'
END
IF (@SkipPricePolicyOfItem OR @SkipPricePolicyOfItem AND @Price 0)
BEGIN
    INSERT _RefPricePolicyOfItem 
(ServiceCountryRefPackageItemCodeNamePaymentDevicePreviousCostCostParam1Param1_Desc128Param2Param2_Desc128Param3Param3_Desc128Param4Param4_Desc128VALUES (115, @PackageName10, @Price, -1'xxx', -1'xxx', -1'xxx', -1'xxx')
        IF (@@
ERROR <> 0)  
        
BEGIN
            
PRINT 'AN ERROR HAPPENED WHILE ADDING TO _RefPricePolicyOfItem, Rolling back...'
            
ROLLBACK TRANSACTION
            
RETURN
        
END
    
PRINT 'Added to _RefPricePolicyOfItem, PaymentDevice = 1 (Gold)'
END
IF (@SkipPricePolicyOfItem OR @SkipPricePolicyOfItem AND @SilkPrice 0)
BEGIN
    INSERT _RefPricePolicyOfItem 
(ServiceCountryRefPackageItemCodeNamePaymentDevicePreviousCostCostParam1Param1_Desc128Param2Param2_Desc128Param3Param3_Desc128Param4Param4_Desc128VALUES (115, @PackageName20, @SilkPrice, -1'xxx', -1'xxx', -1'xxx', -1'xxx')
        IF (@@
ERROR <> 0)  
        
BEGIN
            
PRINT 'AN ERROR HAPPENED WHILE ADDING TO _RefPricePolicyOfItem, Rolling back...'
            
ROLLBACK TRANSACTION
            
RETURN
        
END
    
PRINT 'Added to _RefPricePolicyOfItem, PaymentDevice = 2 (Silk)'
END
ELSE
BEGIN
    
PRINT 'There is already silk / gold price, skipping _RefPricePolicyOfItem table...'
END
INSERT _RefShopGoods 
(ServiceCountryRefTabCodeNameRefPackageItemCodeNameSlotIndexParam1Param1_Desc128Param2Param2_Desc128Param3Param3_Desc128Param4Param4_Desc128VALUES (115, @TAB, @PackageName, @Slot, -1'xxx', -1'xxx', -1'xxx', -1'xxx')
    IF (@@
ERROR <> 0)  
    
BEGIN
        
PRINT 'An error happened while adding to _RefShopGoods table'
        
PRINT 'FAILED.'
        
ROLLBACK TRANSACTION
        
RETURN
    
END
    
PRINT 'Added to _RefShopGoods, DONE!'
COMMIT TRANSACTION 

قبل بقا منعمل الQuery لازم نعمل زى الصور فى الSQL

تـابع الصور

http://www9.0zz0.com/2013/06/17/21/555295738.gif

http://www4.0zz0.com/2013/06/17/22/543550040.jpg

http://www4.0zz0.com/2013/06/17/22/424887815.jpg

http://www4.0zz0.com/2013/06/17/22/996961279.jpg

http://www5.0zz0.com/2013/06/17/22/821248644.jpg

http://www5.0zz0.com/2013/06/17/22/231196703.jpg

http://www5.0zz0.com/2013/06/17/22/723411055.jpg

http://www6.0zz0.com/2013/06/17/22/828651940.jpg

http://www6.0zz0.com/2013/06/17/22/202604136.jpg

http://www9.0zz0.com/2013/06/17/21/555295738.gif

وبعدين نعمل الـQuery

ونحط كود الايتم اللى عايزين نضيفو
ونحط اسم التاب بردو اللى هنضيف فيه الايتم
وسعر اللى هيتباع بيه الايتم

اخر حاجه وبكده نكون قربنا نخلص :walkman:

تاخد كل اللى فى _RefPackageItem and _RefPricePolicyOfItem and and _RefScrapOfPackageItem and _RefShopGoods

وطلعهم من الميديا و Past and Import

http://www9.0zz0.com/2013/06/17/21/555295738.gif

اتاكد ان الQuery هيجبلك زى الصوره كده

http://www5.0zz0.com/2013/06/18/01/346354615.jpg

والف مبروك :winner_second_h4h:

ELjOkeR 18-06-2013 02:46 AM

Approved #

Islam.Chalabi 18-06-2013 04:09 AM

نفسى افهم ليه مايكنش كل الشروحات بالطريقه دى؟
بجد انت فاجر ياض الله ينور عليك يا بلال

i____Crach 18-06-2013 04:10 AM

Very nice work :) :sofa:

ღ♥ČrimeḾaster♥ღ 18-06-2013 04:12 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة Islam.Chalabi (المشاركة 4758798)
نفسى افهم ليه مايكنش كل الشروحات بالطريقه دى؟
بجد انت فاجر ياض الله ينور عليك يا بلال

ربنا يكرمك يا اسلام وشكرا ع الرد الجميل ده :59:

ღ♥ČrimeḾaster♥ღ 18-06-2013 04:51 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة i____Crach (المشاركة 4758800)
Very nice work :) :sofa:

thanks :heart_eyes:

Golden sro 18-06-2013 08:40 AM

Good Jop

☜ ĂиTaKą ☞ 18-06-2013 08:41 AM

:cap:

الله ينور يا واد

iAttacker 18-06-2013 04:01 PM

عــــــــــــــــــــاش
تنبيه صغير إضف هذا الا الشرح لانو لو متعملش الايتم مش هيشتغل بعد الشرح الجميل ده
فى RefShopGoods + RefPricepolicyofitem
فى ال DB مش هيعرف يجيب ال Line اللى ضافوا لأنوا مش هيتضاف فى الاخر
فالحل انو ياخد ال Lines كلها Copy فى Notepad و يعمل FindText على اخر كلمه فى الايتم
مثلا PACKAGE_ITEM_MALL_AVATAR_M_BLUE_SOULKNIGHT تعمل Find على Knight بس اما تيجى تعمل توفيراً للوقت اطلع فى بدايه ال Text و اعمل
و خد ال Lines و حطها فى اماكنها فى Media

عن تجربه شخصيه
Working 100%

Mahmoud Rashwan 18-06-2013 07:29 PM

Thx

MyRȝturn 25-06-2013 01:37 AM

Good Jop

Skandar 02-07-2013 06:27 PM

عمل مدهش بارك الله فيك يا جميل

Mr Z!dane 02-07-2013 07:41 PM

اقتباس:

عــــــــــــــــــــاش
تنبيه صغير إضف هذا الا الشرح لانو لو متعملش الايتم مش هيشتغل بعد الشرح الجميل ده
فى RefShopGoods + RefPricepolicyofitem
فى ال DB مش هيعرف يجيب ال Line اللى ضافوا لأنوا مش هيتضاف فى الاخر
فالحل انو ياخد ال Lines كلها Copy فى Notepad و يعمل FindText على اخر كلمه فى الايتم
مثلا PACKAGE_ITEM_MALL_AVATAR_M_BLUE_SOULKNIGHT تعمل Find على Knight بس اما تيجى تعمل توفيراً للوقت اطلع فى بدايه ال Text و اعمل
و خد ال Lines و حطها فى اماكنها فى Media

عن تجربه شخصيه
Working 100%

:cheezy:

ellemby20102010 07-07-2013 11:34 PM

Thanks

nopromises020 11-07-2013 08:04 AM

شكرآ على المساعده يا برنس موضوع جااااااااااااااااااااااااااااااااااااااااااااااااا اااااااااااااااااااااااااااااااااااااااااااااااااا اااااااااااااااااااامد <3

nightmare200 12-07-2013 04:17 AM

حضرتك انا عملت كدا بس الايتم مش ظاهر في الا npc اية بقا مش فاهم دي يعني اية
تاخد كل اللى فى _RefPackageItem and _RefPricePolicyOfItem and and _RefScrapOfPackageItem and _RefShopGoods

وطلعهم من الميديا و Past and Import

Emely 12-07-2013 06:59 AM

شكرا ع مجهودك
تسلم

ღ♥ČrimeḾaster♥ღ 12-07-2013 09:07 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة Emely (المشاركة 4789574)
شكرا ع مجهودك
تسلم

thanks ♥

ღ♥ČrimeḾaster♥ღ 12-07-2013 09:08 AM

Thanks All !♥♥

:wolfwood:

.-Carica-. 26-11-2013 02:27 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة nightmare200 (المشاركة 4789381)
حضرتك انا عملت كدا بس الايتم مش ظاهر في الا npc اية بقا مش فاهم دي يعني اية
تاخد كل اللى فى _RefPackageItem and _RefPricePolicyOfItem and and _RefScrapOfPackageItem and _RefShopGoods

وطلعهم من الميديا و Past and Import

+1
ياريت صاحب الموضوع يوضح النقطه دى
و شكرأ ع الشرح الجميل

ღ♥ČrimeḾaster♥ღ 28-11-2013 11:41 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة .-Carica-. (المشاركة 4952173)

+1
ياريت صاحب الموضوع يوضح النقطه دى
و شكرأ ع الشرح الجميل

حـضرتك هـتاخد كـل اللى فى الـ Tables اللى مـكتـوبة
وتخرجهم مـن الـ media.pk2 وتخلى الاتنين زى بعض يعنى ال text فى الـ media زى الـ tables فى الـ sql
بعض متخلص اعمل import :)

elfr3on2010 04-12-2013 02:09 PM

تسلم ايدك

miro101 21-12-2013 11:17 PM

SR_GameServercrashing after i added item to npc

Tigger 13-05-2014 10:25 AM

استمر


الساعة الآن 11:36 AM.

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