الموقع العربي الاول للعبة 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


الساعة الآن 02:37 AM.

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