Edit NPC #ProbaSha

Dev.Ri3o

V.I.P
SQL Developer
عضو
2 فبراير 2017
289
53
17
44

المستوي:

الرابط مخفي تسجيل الدخول او تسجيل !!


الرابط مخفي تسجيل الدخول او تسجيل !!


الرابط مخفي تسجيل الدخول او تسجيل !!

حبيت اعمل شرح للناس المبتدئة عشان تعرف تعدل على اى 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_xxxxx وتدور علي ال Code اللى فةق اللى انت لسه واخده Copy حسب اللى عندك بقى
هتلاقة جابلك السطر بتاعة فى ال Characterdata_xxxx زى كدة
الرابط مخفي تسجيل الدخول او تسجيل !!

هتلاقى على الشمال ال Code بتاع ال NPC اللى هو
كود:
NPC_SOS_ITEMS
وتاخد ال Code ده فى اى txt خارجى...كل اللى هتعملو انك هتشيل كلمة NPC_ وتحط STORE يعنى هيبقى كدة
كود:
STORE_SOS_ITEMS
وهتاخد STORE_SOS_ITEMS دى Copy وهتروح لل RefShoptab.txt وتدور عليه هيجبلك كل ال Tabs اللى فى ال NPC زى كدة
الرابط مخفي تسجيل الدخول او تسجيل !!

مش شرط تبقى من 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
طب هيجى واحد يقولى وليه الدوخة دى كلها عشان اجيب Code ال Item انا اما جيب السطر فى ال Texdata_Object هشيل SN_ ويبقى معايا ال Code هقولو صح .. بس ال Code ده ممكن يكون متغير عن Code ال Itemdata_xxxxx يعنى مثلا ال Code بتاع ال Item يكون ITEM_MALL_RI3O وانا عاملو SN_ITEM_GX بكدة اللى هيبقى مكتوب فى ال textdata_Object هو ال SN_ITEM_GX مع ان ال Code هو ITEM_MALL_RI3O
بس غالبا شيل ال 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
دلوقتى ال 4 Tables بقت فاضية ... هتروح لل RefPackageItem.txt اللى فى ال Media وتاخدو كلو Copy وتحطو فى ال SQL مكان ال RefPackageItem اللى بقى فاضى ... نفس الكلام ل
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%'
مكان COST HERE هتكتب السعر الجديد لو مش عايز تغير السعر اكتب السعر القديم مكان NUMBER هتحط رقم من الجدول اللى فوق على حسب انت عايز تخلى ال Item ب Coin او Gold او Silk
مكان 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')
ولو Silk 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, 2, 0, 1, -1, 'xxx', -1, 'xxx', -1, 'xxx', -1, 'xxx')
مكان CODENAME هتكتب ال Code بتاع ال Item اللى برضو مشروح تجيبو فوق ازاى

الرابط مخفي تسجيل الدخول او تسجيل !!

الرابط مخفي تسجيل الدخول او تسجيل !!

 




التعديل الأخير:

DraCula

V.I.P
Designer & Pk2 Editor
عضو
2 فبراير 2017
624
15
237
244
الجيزة
Facebook
Abdo.Dracula

المستوي:

رد: Edit NPC #ProbaSha

جميل جداً بس المشكلة ان الداتا 1.88 مش بتقبل الكلام دة غير لما امسح التابل كله و اضيفه من جديد

ما انت لازم تمسح التابل كله بتوع الـ npc علشان تخليهم هما هما اللى فى الداتا بيز يبقى هما اللى فى المديا ده المطلوب
 




DraCula

V.I.P
Designer & Pk2 Editor
عضو
2 فبراير 2017
624
15
237
244
الجيزة
Facebook
Abdo.Dracula

المستوي:

رد: Edit NPC #ProbaSha

ياريت يا ريعو توضح لى الناس لو مثلا حد عامل add items بى الاسعار اللى فى الكيورى و عايز يضيف عليهم اسعار تانى يعنى مثلا لو بى سيلك و جولد يخليهم بسيلك و جولد و كوين كدا يعنى