الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
حبيت اعمل شرح للناس المبتدئة عشان تعرف تعدل على اى NPC و تضيف اى Item فى NPC مع شوية حاجات كدة فى ال NPC لازم تعرفها.. الشرح تفصيلى فشخ وكلو بالصور عشان ميحصلش معاك اى مشاكل
Add Item To NPC
اول حاجة ده ال Query اللى هنشتغل بى...
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
كود:
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_EU_SHIELD_08_C_RARE' -- Item CodeName in RefObjCommon
SET @Price = 5000000 -- Set 0 if you don't want to set Gold Price
SET @SilkPrice = 256 -- Set 0 if you don't want to set Silk Price
SET @TAB = 'STORE_Honor_TAB1' -- 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(ID) FROM _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(ID) FROM _RefShopTab WHERE CodeName128 = @TAB) < 1)
BEGIN
PRINT 'TAB VALUE IS NOT VALID..!'
PRINT 'FAILED.'
RETURN
END
IF ((SELECT COUNT (RefPackageItemCodeName) FROM _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 (RefPackageItemCodeName) FROM _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 (CodeName128) FROM _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 (PaymentDevice) FROM _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 (PaymentDevice) FROM _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 = [Index] FROM _RefScrapOfPackageItem ORDER BY [Index] DESC
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], Country, ID, CodeName128, SaleTag, ExpandTerm, NameStrID, DescStrID, AssocFileIcon, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @ID, @PackageName, 0, '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 (Service, Country, RefPackageItemCodeName, RefItemCodeName, OptLevel, Variance, Data, MagParamNum, MagParam1, MagParam2, MagParam3, MagParam4, MagParam5, MagParam6, MagParam7, MagParam8, MagParam9, MagParam10, MagParam11, MagParam12, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128, [Index]) VALUES (1, 15, @PackageName, @CodeName, 0, 0, @Data, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 = 2 OR @SkipPricePolicyOfItem = 0 AND @Price > 0)
BEGIN
INSERT _RefPricePolicyOfItem (Service, Country, RefPackageItemCodeName, PaymentDevice, PreviousCost, Cost, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @PackageName, 1, 0, @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 = 1 OR @SkipPricePolicyOfItem = 0 AND @SilkPrice > 0)
BEGIN
INSERT _RefPricePolicyOfItem (Service, Country, RefPackageItemCodeName, PaymentDevice, PreviousCost, Cost, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @PackageName, 2, 0, @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 (Service, Country, RefTabCodeName, RefPackageItemCodeName, SlotIndex, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @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
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
عشان تضيف اى Item فى ال NPC انت محتاج تعرف حاجتين ...
1- اسم ال Tab اللى هتضيف فى ال Item
طب ايه هو ال Tab ؟ اللى هو ده
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
وده ال Group
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
2- اسم ال Item اللى عايز تضيفو...
هنشرح واحدة واحدة تجبها ازاى...
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
اول حاجة عشان تجيب كل ال TABS اللى فى ال NPC الاول تجيب ال Code بتاع ال NPC فى ال Characterdata_xxxxx
ملحوظة : ال xxxxx دى مش txt معين دى معناها يعنى تدور انت فى كل ال Characterdata اللى عندك بس غالبا لو NPC جديد بيبقى فى اخر واحد اللى هو 45000
هنروح نشوف اسم ال NPC جوا السيرفر وليكن Sos Items ... هتاخد الاسم وتدور عليه فى ال Textdata_Object
هيظرهلك كدة
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
هتلاقى اسم ال NPC على اليمين وعلى الشمال ال Code بتاع الاسم ال NPC هتاخده Copy اللى هو
كود:
SN_NPC_SOS_ITEMS
هتلاقة جابلك السطر بتاعة فى ال Characterdata_xxxx زى كدة
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
هتلاقى على الشمال ال Code بتاع ال NPC اللى هو
كود:
NPC_SOS_ITEMS
كود:
STORE_SOS_ITEMS
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
مش شرط تبقى من TAB1 ل TAB4 بس ... ممكن يبقو TAB1 و TAB2 بس ممكن يبقى من 1 ل 7 يعنى فى Group تانى فى 3 TAB
دلوقتى جبنا اسم ل TABS كلها شوف انت عايز تضيف ال Item فين ...
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
تانى حاجة Code ال Item اللى هتضيفو ... هتضوف اسم ال Item جوا السيرفر ايه وليكن Job Penalty Remove Scroll
هتدور على الاسم فى ال Textdata_Object هيجيلك كدة
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
على الشمال ال Code بتاع الاسم هتاخدو وتدور عليه فى ال Itemdata_xxxxx
هتلاقى بالشكل ده
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
وده ال Code بتاع ال Item اللى هو
كود:
ITEM_MALL_JOB_PENALTY_SCROLL
بس غالبا شيل ال SN_ وهيجبلك ال Code اللى تشتغل بى
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
دلوقتى جبنا اللى محتاجينهم اللى هو ال TAB Name و Item Name
...
قبل ما نستخدم ال Query لازم تتاكد من حاجة ان
الاعدادات دى معمولة
هتروح ال RefPackageItem وتدوس Click يمين بعدها Design وهتعلم على ID وتعمل زى الصورة
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
هتروح ال RefScrapOfPackageItem وتدوس Click يمين بعدها Design وهتعلم على Index وتعمل زى الصورة
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
ولازم تتأكد ان
RefpackageItem
RefScrapOfPackageItem
RefPricePolicyOfItem
RefShopGoods
اللى فى ال Database هما هما اللى فى ال Media .. هيجى واحد يقولو هما المفروض انهم مش زى بعض ... هقولو لا لازم اللى فى ال Media يكون نسخة طبق الاصل من ال Database ... طب لو انت متعرفش او عايز تخليها زى بعض ... هتعمل ايه ؟ اوعى تستخدم DB To Media الاهم هو MEDIA
هتعمل Truncate لل 4 Tables من ال SQL هتعمل ده
كود:
USE SRO_VT_SHARD
Go
Truncate Table _RefPackageItem
Truncate Table _RefPricePolicyOfItem
Truncate Table _RefScrapOfPackageItem
Truncate Table _RefShopGoods
RefScrapOfPackageItem
RefPricePolicyOfItem
RefShopGoods
وبكدة ال Database زى ال Media وتقدر تضيف بال Query من غير اى مشاكل خالص
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
هتجيب ال Query الىل انا حاطو فوق وهتيجى عند
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
وتكتب هنا Code ال Item اللى انت عايز تضيفو اللى احنا جبناه فوق
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
وهنا هتكتب اسم ال TAB اللى عايز تحط ال NPC فى اللى احنا جبناه فوق
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
وهنا هتكتب الاسعار الاولى اللى هى Price ده سعر ال Gold و SilkPrice اللى هو سعر ال Silk
بعد اما تضيف الحاجة وتدوس F5 هيجيلك ان
1 Row Effected
1 Row Effected
1 Row Effected
1 Row Effected
يبقى كلو تمام ... طب هنجيب ال Media ازاى ؟ هتاخد ال
RefpackageItem
RefScrapOfPackageItem
RefPricePolicyOfItem
RefShopGoods
من ال SQL بعد اما تخلص شغل بال Query بعدها Copy لكل واحد وحطو فى ال Media واعمل Update ومبروك عليك
بالطريقة اللى مشروحة فوق تضيف اى Item فى ال NPC وكمان انك تخلى ال Media زى ال Database مهمة فشخ
وهتسهل عليك حاجات قدام
Edit Price In NPC
لو انت عايز تضيف items بس مش ب Gold ولا Silk وعايزها ب Coin عندك طريقتين اول حاجة لازم تعرف دول
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
كود:
1= Gold
2=Silk
4= Gift silk
16=Silk Point
64=copper coin
128=Iron coin
256=Silver coin
512=Gold coin
1024=Arena coin
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
بعد كدة تعدل على ال Query اللى فوق هتنزل عند الجزء ده اللى بيعمل Insert للسعر
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
اللى انا معلم عليه بالاحمر ده اللى هو Gold عشان مكتوب 1 يعنى ده معنها ان @Price هتمثل سعر ال Gold
اللى انا معلم عليه بالازرق ده اللى هو Silk عشان مكتوب 2 يعنى ده معناه ان @SilkPrice هتمثل سعر ال Silk
غير انت بقى ال 1 و ال 2 دول على حسب الجدول فوق شوف بقى انت عايز ايه يعنى لو غيرت 1 ل 64 كدة تكتب قدام @Price سعر ال Copper Coin اللى انت عايزو
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
طب لو هو Item مضاف اصلا عندك وعايز تغير السعر او تخلى ب Coin هتعمل ال Query ده
كود:
USE SRO_VT_SHARD
Go----#Ri3o---ProBaSha
Update _RefPricePolicyOfItem Set Cost = 'COST HERE' , PaymentDevice = 'Number' Where RefPackageItemCodeName Like '%CODENAME%'
مكان CODENAME هتكتب ال Code بتاع ال Item وده طبعا مشروح بالتفصيل تجيبو ازاى فوق
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
فى بعض الناس بتقابلها مشكلة Registery Silk Price او Gold Price طب دى تحلها ازاى ؟
لو Gold Price هتعمل ال Query ده
كود:
USE SRO_VT_SHARD
Go------Registry Gold Price----#Ri3o
DECLARE @CodeName varchar(128)
DECLARE @PackageName varchar(128)
SET @CodeName = 'CODENAME'
SET @PackageName = 'PACKAGE_'+@CodeName
INSERT _RefPricePolicyOfItem (Service, Country, RefPackageItemCodeName, PaymentDevice, PreviousCost, Cost, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @PackageName, 1, 0, 1, -1, 'xxx', -1, 'xxx', -1, 'xxx', -1, 'xxx')
كود:
USE SRO_VT_SHARD
Go------Registry Gold Price----#Ri3o
DECLARE @CodeName varchar(128)
DECLARE @PackageName varchar(128)
SET @CodeName = 'CODENAME'
SET @PackageName = 'PACKAGE_'+@CodeName
INSERT _RefPricePolicyOfItem (Service, Country, RefPackageItemCodeName, PaymentDevice, PreviousCost, Cost, Param1, Param1_Desc128, Param2, Param2_Desc128, Param3, Param3_Desc128, Param4, Param4_Desc128) VALUES (1, 15, @PackageName, 2, 0, 1, -1, 'xxx', -1, 'xxx', -1, 'xxx', -1, 'xxx')
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
الرابط مخفي
تسجيل الدخول
او
تسجيل
!!
التعديل الأخير: