Callback aslvisionextension\xfvis::gethtml is invalid (error_invalid_class).

VSRO Query Vsro Trigger Mantığı Ve Trigger Ile Mob Spawn

vsro query, silkroad query, vsro kod paylaşımı, vsro query paylaşımı

SQL

Well-known member
Developer
Moderator
Katılım
23 Haz 2022
Mesajlar
28
Tepkime puanı
2,171
Puanları
2,971
Konum
Donwhang
Merhabalar.
Bu konumuzda sizlere trigger'lar hakkında bilgiler sunacağım. Eminim bir çok kişi anlamayacaktır fakat yinede paylaşma kararı aldım.
Ekleme yaptığımız tabloların her biri birbiriyle bağlantılı olup en ufak kod kaymasında trigger'lar çalışmayacaktır. Bu yüzden dikkatlice ve sıraya göre ilerleyerek ekleme yapmanızı istiyorum.

NOT: Konuyu görmek için yorum yapıp beğenmeniz gerekmektedir.

Bu konuyu okumadan önce FGW taşı ekleme konuma göz atıp verileri ekleme yaptıktan sonra devam etmenizi istiyorum.
Öncelikle örnek olarak 2 tane mob ekleyeceğiz fakat burada dikkat etmeniz gereken kısım "Tab_RefNest" tablosunun en sonunda bulunan "btType" column verileridir. Bu kısımda eklediğimiz moblar "0" ve "1" olarak ikiye ayrılıyor.
0= Eğer sıfır ise eklediğimiz mob dungeona girdiğimiz anda spawn olacaktır.
1= Eğer bir ise işin rengi değişiyor ve mob dungeona girdiğimiz anda spawn olmuyor.
Yani burada anlatmak istediğim olay ise, 0 olarak eklediğimiz mobları kesince 1 olarak eklediğimiz moblar spawn olucak. Umarım anlamışsınızdır.

Tab_RefTactics: Spawn tablolarını tek tek anlatıp konuyu uzatmak istemiyorum. Zaten bu spawn ekleme konuları rahatlıkla bulunabiliyor.


SQL:
46065    41359    0    150    50    200    0    0    2    2    2    0    0    5    0    0    0    0    0    30    0    0    4    0    0    0    0    0    0    0    0    0    0    0    1    500    0    0    1    0    0    0    xxx
46066    41419    0    150    50    200    0    0    2    2    2    0    0    5    0    0    0    0    0    30    0    0    4    0    0    0    0    0    0    0    0    0    0    0    1    500    0    0    1    0    0    0    xxx

Tab_RefHive: Bu tabloda dikkat etmemiz gereken "GameWorldID" column verileri. Yani diğer konudaki WorldID.
SQL:
1578    0    0    0    0    0    0    95    1    xxx
1579    0    0    0    0    0    0    95    1    xxx

Tab_RefNest: Bu tabloda ise yukarıda belirttiğim gibi yapmalısınız.
SQL:
36835    1578    46065    31992    694    0    1539    0    0    0    0    0    0    1    0    0    0
36836    1579    46066    31992    592    0    1453    0    0    0    0    0    0    1    0    0    1

_RefTrigger: Bu tablo Trigger'ı belirlediğimiz tablodur. Burada dikkat etmemiz gereken "ID" kısımları. Diğer tablolarda lazım olucak.
SQL:
1    586    TRI_GARDEN    1    0        0

_RefTriggerConditionParam: "GroupCodaneme128" olan kısımı aklımızda tutuyoruz çünkü diğer tablolarda buradaki veriler aynı olmak zorunda. Dikkatli bakarsanız "_583" gibisinden sıraya dizilmiş. "Value" olan kısım ise "Tab_RefHive" id'mizdir. Bu tablonun mantığı ise şöyle "1578" hiveid'li mobları kesince birazdan ekleyeceğimiz "_RefTriggerActionParam" tablosundaki RefNest id'li mob spawn olacaktır.
NOT: Mobları diyorum çünkü RefNest üzerinde kaç tane mob eklerseniz ekleyin HiveID'ye bağlanır. İsterseniz bu HiveID'ye 150 mob ekleyin 149 tanesini keserseniz o 1 tane mob kalırsa eğer "_RefTriggerActionParam" tablosundaki RefNest id'li mob spawn olmaz.

SQL:
1    589    TRIGGER_CONDITION_MONSTER_HIVE_KILL_584    HIVE_MONSTER_SELECT    1578 INT32

_RefTriggerCondition: Buradaki "584" id'si önemli çünkü birazdan ekleyeceğimiz tablo id'si ile aynı olmak zorunda. Eğer kodlar kayarsa ve 585 olarak atanırsa yedekleri geri almak zorunda kalırsınız. "RefTriggerCommonID" olan kısım anlayacağımız üzere "_RefTriggerCommon" tablosuna bağlıdır. Burada "9" olarak belirtilen ise "TRIGGER_CONDITION_MONSTER_HIVE_KILL". Anlayacağımız üzere HiveID'li monsterları kesince işleme al. "ParamGroupCodeName128" ise "_RefTriggerConditionParam" tablosundaki veri ile bağlantılı olup aynı olmak zorundadır.
SQL:
1    584    9    RETURN_TRUE    RETURN_FALSE    0 TRIGGER_CONDITION_MONSTER_HIVE_KILL_584

_RefTriggerBindCondition: Bu tablomuz ise gördüğümüz gibi "584" id'si ile belirlenmiş. Oradaki veri ise "_RefTrigger" tablosuna ekleme yaptığımız "TriggerID"
SQL:
1    584    586    584

_RefTriggerEvent: "565" olan id "_RefTriggerBindEvent" tablosu ile aynı olmak zorundadır. "5" olan veri ise "_RefTriggerCommon" tablomuzdan alıyoruz.
SQL:
1    565    5

_RefTriggerBindEvent: "565" olan kısım yukarıda belirttiğimiz gibi aynı olmak zorunda. "586" ile belirlenen veri ise "_RefTrigger" tablosuna ekleme yaptığımız "TriggerID"
SQL:
1    565    586    565

_RefTriggerActionParam: Buradaki "Value" olan kısım ise "btType=1" olarak belirlediğimiz NestID'sidir.
SQL:
1    3830    TRIGGER_ACTION_MONSTER_ACTIVE_NEST_2501    NEST_MONSTER_SELECT    36836    INT32

_RefTriggerAction: "2501" olan id yine diğer tablolar ile bağlantılı olup birazandan ekleyeceğimiz tablo id'si ile aynı olmalıdır. "14" olan veri ise "_RefTriggerCommon" tablomuzdan alıyoruz.
SQL:
1    2501    14    0    TRIGGER_ACTION_MONSTER_ACTIVE_NEST_2501

_RefTriggerBindAction: Yine anlayacağınız üzere "586" ise "TriggerID"mizdir.
SQL:
1    2501    586    2501

_RefTriggerCategory: Bu tabloda ise Trigger'ların sırasını ayarlıyoruz. Zaten bu konudaki amacım azda olsa birşeyler anlamanız ve buradaki verdiğim kodlar ile değilde hazırda databasede ekli olan kodlar ile mantığını çözmenizdir.
SQL:
1    150    TRI_CATEGORY_GARDEN    xxx    0

_RefTriggerCategoryBindTrigger: Burada "150" olan kısım yukarıda ekleme yaptığımız Categoryid'sidir. "586" ise "TriggerID"mizdir.
SQL:
1    586    150    586
_RefGameWorldBindTriggerCategory: Burada yine anladığımız gibi "150" CategoryID'sidir. "95" olarak belirtilen kısım ise WorldID'miz.
SQL:
1    150    95    150

Evet yapmamız gereken işlemler bu kadar. Ben bu konu üzerinde 2 hafta çalışarak anca mantığını çözebilmiştim. Yani demem o ki buradan okuyarak bişeyler anlayabilirsiniz, tabloların sırasını anlayabilirsiniz ama yeni bir fgw yapmak için bu kadarı yetmeyebilir. Deneye deneye, boza boza yaparsınız ancak. Size anlatmak için elimden gelen bu kadar. Emin olun ki kimse size çıkıpta bu kadarını bile anlatmaz. Umarım yardımcı olmuşumdur.

TEXT DOSYASINI İNDİR
TEXT DOSYASINI İNDİR (ALTERNATİF))
TEXT DOSYASINI İNDİR (ALTERNATİF2)
 
Son düzenleme:
Üst