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.
Tab_RefHive: Bu tabloda dikkat etmemiz gereken "GameWorldID" column verileri. Yani diğer konudaki WorldID.
Tab_RefNest: Bu tabloda ise yukarıda belirttiğim gibi yapmalısınız.
_RefTrigger: Bu tablo Trigger'ı belirlediğimiz tablodur. Burada dikkat etmemiz gereken "ID" kısımları. Diğer tablolarda lazım olucak.
_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.
_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.
_RefTriggerBindCondition: Bu tablomuz ise gördüğümüz gibi "584" id'si ile belirlenmiş. Oradaki veri ise "_RefTrigger" tablosuna ekleme yaptığımız "TriggerID"
_RefTriggerEvent: "565" olan id "_RefTriggerBindEvent" tablosu ile aynı olmak zorundadır. "5" olan veri ise "_RefTriggerCommon" tablomuzdan alıyoruz.
_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"
_RefTriggerActionParam: Buradaki "Value" olan kısım ise "btType=1" olarak belirlediğimiz NestID'sidir.
_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.
_RefTriggerBindAction: Yine anlayacağınız üzere "586" ise "TriggerID"mizdir.
_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.
_RefTriggerCategoryBindTrigger: Burada "150" olan kısım yukarıda ekleme yaptığımız Categoryid'sidir. "586" ise "TriggerID"mizdir.
_RefGameWorldBindTriggerCategory: Burada yine anladığımız gibi "150" CategoryID'sidir. "95" olarak belirtilen kısım ise WorldID'miz.
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)
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
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: