[WB]Modül Sistem Platformu [Krallık ekleme dersi yenilendi!]

Users who are viewing this thread

Merhaba.Bugün,modül sistemin yazım kurallarından bahsedeceğiz.Kodlamaya başlamanın temel şartlarından biri de modül sistemin(daha doğrusu pythonun) yazım kurallarını bilmektir.Her modül dosyasının farklı bazı kuralları olabilir.Fakat temelleri aynıdır.Bu derste,temelleri öğreneceğiz.

Her modül dosyasında temel kabul edilen ilk kural,bir dizeye ilk olarak komut ile başlanması gerektiğidir.Komut,Header_operations da yer alan,oyunun çeşitli fonksiyonlarını içeren,Bizler tarafından eklenmesi imkansız olan şeylerdir.

Dediğimiz gibi her dize bir operasyon ile başlar.Bir örnek ile;

(komut, "obje", "obje_2"),

ikinci olarak,komut,obje ve rakamlardan sonra eğer parantez gelmiyor ise(yani dize bitmiyorsa) herzaman yanına virgül gelir;

(komut, "obje"),

burada,komutun önüne virgül koymamız zorunlu.Her dizedeki ilk kuraldır bu.  :smile:

Ve gördüğümüz gibi,objeden sonra parantez geldiği için,objenin önüne virgül koymadık.Eğer şöyle olsa;

(komut, "obje", rakam),

gördüğünüz gibi,ikinci bir unsur geldiği için,"obje" argümanının önüne virgül koyduk.

Bunun gibi milyonlarca dize ile karşılaşabilirsiniz.Fakat bu yazdıklarım farklı değer,yazı,komut ile karşınıza çıkacak.

Şimdi, bazı yerlerde alıntı( yani " işareti) ile başlayıp biten yazılar olmuyor.Bunların birkaç nedeni var kullanımına göre.ona değineceğiz anlatırken. :smile:

module_animations'a girersek,başlarda siyah  yazılar ile bazı rakamlara eşitlik verilmiş.Ayrıca çok da detay isteyen bir yer.Bir animasyonun nasıl eklendiğini de öğrenmeden geçmeyeceğiz buradan.  :mrgreen:

burada,iki animasyon dizisi var.birisi atlar,diğeri insanlar için.bu dizilerdeki her animasyon,kendi yerini içerir.Yani at animasyonu ata,insan animasyonu insana.

şimdi.Bir animasyon yaparken,ilk önce modül sistemdeki adını yazmanız gerek.

mesela adı animos olsun.daha sonra,onun eklerini belirtmeliyiz.İşte o yukarda dediğim " işareti ile başlayıp bitmeyen,siyah yazılara değineceğiz.

sonra,onun büyük eklerini belirtmeliyiz(header_animations da amf_ uzantısı ile belirtilmişlerdir.).

daha sonra da animasyonun oynayacağı süresini ve animasyonun kaynağını belirtiyoruz..Örnek olarak bir animasyon:

["animos", 0, amf_client_prediction,
  [11.0, "stand_man", 0, 315, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],

kırmızı,modül sistemde çağıracağımız isim.bu animasyonu anim_ uzantısı ile çağırabilirsiniz.

maviler,eklerimiz.

yeşil,oynayacağı süre.

siyah,belirtildiği brf dosyasının içindeki ad.

sarı, belirtildiği brf dosyasının içindeki animasyonun vertex aralığı. Animasyonun'un iki türü kullanılmıştır oyunda, biri iskelet, yani vurma kaçma hareketleri, diğeri vertex, yani dünya haritasındaki o harita ikonlarının animasyonu. Animasyonu olan bir brf de, o belirtilen animasyona tıkladığınızda ortada time of frame yazar, işte o vertex aralığıdır. Burada 0 ile 315 aralığında yaşanan her şey oyunda görünür.

şimdi,bir animasyonun nasıl eklendiğini az çok öğrenmiş ve mantığını kavramış olmanız lazım.  :smile:

geldik module_constants'a.Bu dosya daha çok,o dediğiniz siyah yazılar ile ilgili.

bu gördüğünüz siyah yazıların kaynağı buradadır.Kimi zaman bir askeri,partiyi,bir asker grubunu,bir parti grubunu oluştururlar.

Mesela;

Code:
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_136"

burada,ilk constant,sınırın başlangıcı,ikincisi ise bitişini gösterir.Kullanılma amacı da bir döngü yaratmaktır.Yani yapacağınız şey,bu iki sınır arasında tekrarlanır.Zamanı gelince konuşucağız bunları.  :smile:

kimi zaman,bazı sayılarla gördüğünüz olur bunları.kimisi renk kodu,kimisi de rastgele bir sayıdır.belki rastgele sayılardır ama,çok işe yarayabilirler.

bazen de bir askeri temsil edebilirler.Mesela;

Code:
oyuncu = "trp_player"

gördüğünüz gibi,bu constantı nerede kullanırsanız,yapacağınız şey veya etkilenecek olan unsur,oyuncu olacaktır.Tabi odak noktası constant ise.

geldik module_dialogsa.
module_dialogs da şöyle bir farklılık var.Diyaloglar hiçbir zaman çağırılamazlar.Oyun tarafından halledilirler.
Eğer yeni bir asker yaratılmış ve onun diyalogları ayarlanmamış ise;
[trp_oynucu, "start", [], "diyalog","patatos",[]],
[trp_oynucu, "patatos", [], "diyalog","close_window",[]],
ilk önce troopun adı yazılır,ardına alıntı işareti ile start konulur,sonra koşul belirtilir,daha sonra söylenmek istenen diyalog verilir,en sona da o diyalog bitiyorsa alıntı işareti ile birlikte "close_window",bitmiyor ise altındaki diyalogun adı koyulur.
Ayrıca,farkında iseniz,"trp_oynucu" adlı askerimiz alıntı ( " ) içinde değil.bu,module_dialogsun diğer modül dosyalarına olan farklarından bir tanesidir.Hani demiştim ya,diğer modül dosyalarının da başka kuralları vardır diye.işte o farklardan biri de bu.

geldik module_factionsa.module_factions da ise,şöyle bir mantık var;

Code:
("neutral","Neutral",0, 0.1,[("player_faction",0.0)], [],0xFFFFFF),

neutral modül sistemdeki ad.

İkinci neutral oyunda gözükecek ad.

ilk köşeli parantez başka krallıklar ile ilişkisini gösteriyor.

0xFFFFFF krallığın rengidir.Renk kodları diye araştırırsanız bulabilirsiniz.Ancak büyük harf ile çalışırlar.Küçük harf yazmamanız gerek.

Geldik game_menuse.Burada,örnek bir menü ve örnek bir menü kümesi oluşturarak anlatım yapacağım.

İlk olarak küçük bir menü den başlayalım;

("start",[],"yazi",
      []
  ),

start yazısı,modül sistemde çağırılan isim.İlk köşeli parantez kısmı,koşul kısmı.Yani bu menünün gözükmesi için gereken koşullar. yazi kelimesinin olduğu yer,menünün oyunda nasıl gözükeceğini gösterir.Gördüğünüz gibi,her objeden sonra virgül geliyor.Unutmayın. :smile:
İkinci köşeli parantez,menüye tıkladığınızda olacak şeylerdir.Yani sonuç kısmıdır.

bir menü kümesi ile gösterelim;

("menu_kumesi",0,
  "menu yazisi:",
  "none",
  [],
    [
  [glow=red,2,300] ("tonton",[],"merhaba.",
      []),
     
    ]
  ),[/glow]
menu_kumesi,menünün modül sistemdeki adı.Yani o menüyü çağırmanız için bu gereklidir.

menu yazisi,menüye gittiğinizde yukarıda görünen yazıdır.
kümenin ilk köşeli parantezi,menü kümesinin koşul kısmıdır.Eğer koşul karşılanıyorsa o kümedeki alt menüler gözükür.
kümenin ikinci köşeli parantez kısmı,alt menülerin yerleştirildiği yerdir. o alt kümedeki koşul ve sonuç yerlerini açıklamaya gerek yoktur herhalde ? :smile:

module_game_menus bu şekilde çalışır.

bazı modül dosyalarını atlıyorum,çünkü önceden dersleri verildi onların.ilk mesaja bakarsanız görebilirsiniz.

Geldik module_map_iconsa.


("player",0,"icon_mule", avatar_scale, snd_footstep_grass, 0.15, 0.173, 0),

player,ikonun modül sistemdeki adı.

virgülden sonraki sıfır,biraz detay istiyor.eğer header_map_icons dan birşey yazacaksanız oraya yazmanız gerekir.Yazmıyorsanız yerine sıfır koymalısınız.Yoksa hata verir.map_icons'un farklılıklarından birisidir bu.

icon_mule, ikonun brf dosyasının içindeki objenin adıdır.

avatar_scale, bu,module_map_iconsu açtığınızda az aşağı indiğinizde gördüğünüz eşitliktir.İstediğiniz eşitlikleri oralara yazabilirsiniz.Böylece o yazılar bir büyüklüğü,değeri yazı ile temsil eder.

snd_footstep_grass, ikonun dünya haritasında çıkardığı sestir.module_sounds tan snd_ eki ile çağırabilirsiniz.

geldik module_meshes'a.

her mesh,şunları barındırır;

1.Mesh adı; başka modül dosyalarında kullanılmak için yazılmak zorundadır.mesh_ eki ile çağırılabilir.
2. Mesh ekleri; bu ekler header_meshes da vardır.Görmek için oraya bakın.
3.meshin kaynağı(kaplaması); meshin textures dosyasında verilen adıdır.
4. Meshin x ekseninde çevirilmesi; mesh açıldığında otomatik ayarlı oluyor.
5. Meshin y ekseninde çevirilmesi; açıldığında ayarlanıyor.
6. Meshin z ekseninde çevirilmesi; açıldığında ayarlanıyor.
7. meshin x ekseninde dönmesi
8. meshin y ekseninde dönmesi
9. meshin z ekseninde dönmesi
10. meshin x ekseninde genişlemesi
11. meshin y ekseninde genişlemesi
12. meshin z ekseninde genişlemesi

buradan yola çıkarak;

Code:
("pic_bandits", 0, "pic_bandits", 0, 0, 0, 0, 0, 0, 1, 1, 1),

pic_bandits, modüldeki adı.

sıfır,önceden de bahsettiğimiz gibi eki belirler.Eğer ek yoksa sıfır konulur.

ikini pic_bandits,textures dosyasındaki adı.

ve diğer sayılar da yukarıda verdiğim x,y,z eksenlerinde dönme,çevirilme ve genişletilme olaylarını yapar.

geldik mission template'e.

önce,bir ateşleyici(trigger) ile,sonra bir template ile açıklamamız gerek olayı. :smile:

triggerlar,mission_template'de başlara yazılır.

ornek_trigger = (0, 0, ti_once, [],
  [])
mission_templates'in bir farkı vardır.üstlere yazılan triggerların sonlarındaki parantezden sonrasına virgül gelmez.

o sıfırlar,misyon başladığı andan itibaren ne kadar sürede tekrarlanacaklarını yazar.sıfır ise,hep tekrarlanırlar.

ti_once, bu,trigger'ın misyon içinde sadece bir kez tekrarlanacağını gösterir.Bu triggerın eklerinden biridir.Diğer ekler için header_triggers'a bakın.

ilk köşeli parantez kısmı,koşul kısmıdır.Bu triggerın uygulanması için koyduğumuz koşul yeridir.Eğer koşul sağlanırsa trigger ateşlenir.Eğer sağlanmazsa durur.

ikinci köşeli parantez kısmı,sonuç kısmıdır.Trigger ateşlendiğinde oluşacak veya gerçekleşecek olaylar buradadır.

geldik misyon kısmına.Bir sahneyi sahne yapan misyonlardır.Misyonlar,şu kısımdan itibaren başlarlar;

Code:
mission_templates = [

bu kısımdan önceki yerlere koyarsanız misyonları,hata verecektir.En sondaki köşeli parantez ise bu yazının sonudur.

yani:
Code:
mission_templates = [
misyonlar
] < en sondaki o köşeli parantez

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [],
  ),

template_mod, misyonun modül sistemde kullanılacak adıdır.

sıfır,hiçbir ek olmadığını gösterir. ekler için header_mission_templates'e bakın.

template yazisi, o template in oyunda gözüken adıdır.Aslinda templatelerin kullanım amaçlarını gösterirler.
-1 genellikle buluşma sahneri için kullanılır.öbür taraftan header_mission_types den yapılır(sanırım..)
ilk köşeli paranteze şunlar koyulur;

(2,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),

buradaki iki, sahnede var olan giriş noktasını gösterir.

mtef_visitor_source ve mtef_team_0 bunlar eklerdir.header_mission_templates den bakabilirsiniz.

af_override_horse ise,troopun o sahneye girdiğinde belirli bir itemi giyerek gelmesini engelliyor.Mesela bu ek,belirlenen giriş noktasındaki askerin,eğer atı var ise,at ile değil,yaya olarak sahneye gelmesini sağlar.Bu gibi ekler header_mission_templates de var.

daha sonra, ikincci köşeli parantez kısmı,triggerların ateşlendiği yerdir.Daha demin yazdığımız trigger'ı ateşlemek istiyorsak,

önce triggerın adını,ardından virgülü koymamız gerek.yani:
Code:
ornek_trigger,

şeklinde olmalıdır.

ya da,şöyle de çağırabilirsiniz o triggerı:

içine yazdığınız sonuç kısmını buraya yapıştırabilirsiniz.Mesela:
(0, 0, ti_once, [],
  []),

gibi.Ancak,sondaki normal parantezden sonraya virgül getirmelisiniz.Buradaki farka dikkat ederseniz gerisi kolay.Zaten başta demiştim misyonlarda sona virgül konulur diye.

sonuç olarak,bir triggerı ateşlemeyi iki yoldan da yapabilirsiniz.Ancak bir yol daha var.

bu sefer bir trigger kümesi oluşturacağız.bu daha çok,triggerları tek tek çağırmak yerine hepsini bir kümeye koyup çağırmak için kullanılır.trigger kümesi şöyledir:

Code:
trigger_kumesi = [
triggerlar
]

burada da,ilk başta normal triggerlar için söylediğimiz kural geçerlidir.sondaki paranteze virgül gelmez.

Kullanımı için ise,bir misyonun sonundaki köşeli parantezin yanına konulur.Örnek olarak:

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [
  ] + trigger_kumesi,
),

ancak buraya dikkat.ikinci köşeli parantezden sonrasında virgül vardı.Bunu kaldırdık ve yanına trigger kümesini yerleştirdik.Eğer böyle yapmazsak hata verirdi.

Sıra geldi module_musics e.

bir müzik eklemek için,önce modül sistemdeki adı,sonra müziğin music dosyasındaki uzantısı ile beraber yazmanız gereken ismi.

müziğin ekleri.header_musics e bakabilirsiniz.

devam ekleri.Bir müziğin nerelerde,hangi kültürlerde çalacağını belirleyen ekler.Eğer yoksa sıfır yazmanız gerekir.yine header_musics de vardır bunlar.

ayrıca,eğer modunuz için müzik ekleyecekseniz,sonuna mtf_module_track ekini eklemelisiniz.Yoksa oyun onu bir mod müziği olarak görmez.
örnek olarak;
("fight_1", "fight_1.ogg", mtf_sit_fight|mtf_sit_multiplayer_fight|mtf_sit_ambushed, 0),

fight_1 müziğin modüldeki adı.

fight_1.ogg müziğin uzantısı ile beraber yazılan,musics dosyasındaki adı.

mtf_ uzantılı yazılar,eklerdir.

sıfır,herhangi bir yerde ne süre çalacağını belirlenmediği için yazılmıştır.

module_particle_systems'i henüz çözemedim.Fakat yakında editliyip koyacağım buraya.

geldik module_parties'e.buradan sonra kısa geçeceğim.Artık anlamaya başlamışsınızdır. :smile:

Code:
("main_party","Main_Party",icon_player|pf_limit_members, no_menu, pt_none,fac_player_faction,0,ai_bhvr_hold,0,(17,52.50),[(trp_player,1,0)]),

main_party, modül deki ad.

yine öndeki main party,map editorde gözükecek ad. diğerleri de sırayla:

ikon|ekler,krallığı,koordinatları

köşeli parantez ise,barındırdığı askerlerdir.

party_templates,neredeyse parties ile aynıdır.Fakat farklar vardır.Zamanı gelince açıklayacağım.

postfx,shaderler ile alakalı bir modül dosyası.Ellemenizi pek tavsiye etmiyorum eğer shaderler ile içli dışlı değilseniz.

presentations'u henüz çözemedim.diğer çözemediklerimi de başka derslerle vereceğim.

module_quests de ise,bir örnek ile açıklamam yetecektir.

Code:
("quest_ismi", "gorevin oyundaki adı", qf_random_quest,
  "gorevin icerdigi metin"
  ),

qf_random_quest,rastgele bir görev olduğunu gösterir.header_quests de vardır buna benzer ekler.yoksa sıfır konulur.

scene_propsda ise,mission_template de de dediğim olay vardır.İlk başta triggerlar,sonra sahne objeleri var.

("cannonball",0,"rock_ammo","0",[]),

modül ismi,sonra o objenin eki,yoksa sıfır gelir,rock_ammo ise modelin brf içindeki ismi. alıntı işareti içindeki şey ise collision dur.Modele değdiğinizde bir duvar gibi bişeyle karşılaşırsınız ya,o odur işte.eğer o collisiondan yoksa alıntı içinde rakam ile sıfır yazılır.

köşeli parantez yeri,o modelin gerçekleştirdiği olaylardır.Mesela isterseniz ateş yakmasını sağlayabilirsiniz.

module_scenes daha önceden anlatıldı,anlatmaya gerek yok.

geldik scriptse.burada da mission_templates e benzer fakat aynısı olmayan bir olay vardır.

scripts = [ ile başlar. köşeli parantez ile biter.

bir scripts örneği olarak:

Code:
("script_isim",
 []),

burada,bazı modüllerden farklı olarak,koşul kısmı bulunmamaktadır.Bu yüzden,herşey buradaki köşeli paranteze yazılır.Eğer ki (try_begin), ve (try_end), komutlarıyla yazılmaz ise koşul scripti,modülde kullanılan adına cf_ eki getirilmelidir.

Yani bu iki komutu koymazsanız scriptin ismi şöyle olmalıdır:
Code:
("cf_script_isim",
 [
  ]),

çünkü koşul tekrarlanmıyor.Ayrıca,oyunda bazı hatalara neden olabilir.Bu yüzden koşul scriptleri mutlaka bu iki komutla başlamalıdır.

simple_triggers'da,basit triggerlar yer alır.

mesela:

Code:
(24,
   []),

baştaki 24,o triggerın 24 saat(oyun saati) aralıkla tekrarlanacağı anlamına gelir.Köşeli parantez,o 24 saat aralıkla tekrarlanan şeyleri içerir.mesela 24 saat aralıkla oyuncuya para kaybettirebilirsiniz.

module_skills'i Porshy Adlı arkadaşımız anlatmıştır.Konusundan bakabilirsiniz.  :smile:

module_skins daha sonra anlatılacaktır.

module_sounds, module_musics'in mantığına benzer bi şekilde çalışır:

("click", sf_2d|sf_vol_1,["click_01.wav"]),

modüldeki adı,ekleri,uzantısı ile beraber yazılan ad.

strings ise,metinleri içerir.bir menüye birsürü yazı yazmak mı daha kolay ? yoksa bir çağırı ile o koca metni başka yerden çağırmak mı ? :smile:

module_strings şöyle çalışır:

("string_ad", "yazilmak istenen metin."),

tableau_materials sonra anlatılacaktır.
module_triggers sonra anlatılacaktır.
module_troops zaten anlatıldı.

işte, temelleri ve mantığını anlamış olmanız lazım.Eğer eksikler varsa,ki mutlaka vardır.  :grin: bildirmenizi rica ederim.

İyi günler.  :smile:
 
HyperCharge said:
Merhaba.Bugün,modül sistemin yazım kurallarından bahsedeceğiz.Kodlamaya başlamanın temel şartlarından biri de modül sistemin(daha doğrusu pythonun) yazım kurallarını bilmektir.Her modül dosyasının farklı bazı kuralları olabilir.Fakat temelleri aynıdır.Bu derste,temelleri öğreneceğiz.

Her modül dosyasında temel kabul edilen ilk kural,bir dizeye ilk olarak komut ile başlanması gerektiğidir.Komut,Header_operations da yer alan,oyunun çeşitli fonksiyonlarını içeren,Bizler tarafından eklenmesi imkansız olan şeylerdir.

Dediğimiz gibi her dize bir operasyon ile başlar.Bir örnek ile;

(komut, "obje", "obje_2"),

ikinci olarak,komut,obje ve rakamlardan sonra eğer parantez gelmiyor ise(yani dize bitmiyorsa) herzaman yanına virgül gelir;

(komut, "obje"),

burada,komutun önüne virgül koymamız zorunlu.Her dizedeki ilk kuraldır bu.  :smile:

Ve gördüğümüz gibi,objeden sonra parantez geldiği için,objenin önüne virgül koymadık.Eğer şöyle olsa;

(komut, "obje", rakam),

gördüğünüz gibi,ikinci bir unsur geldiği için,"obje" argümanının önüne virgül koyduk.

Bunun gibi milyonlarca dize ile karşılaşabilirsiniz.Fakat bu yazdıklarım farklı değer,yazı,komut ile karşınıza çıkacak.

Şimdi, bazı yerlerde alıntı( yani " işareti) ile başlayıp biten yazılar olmuyor.Bunların birkaç nedeni var kullanımına göre.ona değineceğiz anlatırken. :smile:

module_animations'a girersek,başlarda siyah  yazılar ile bazı rakamlara eşitlik verilmiş.Ayrıca çok da detay isteyen bir yer.Bir animasyonun nasıl eklendiğini de öğrenmeden geçmeyeceğiz buradan.  :mrgreen:

burada,iki animasyon dizisi var.birisi atlar,diğeri insanlar için.bu dizilerdeki her animasyon,kendi yerini içerir.Yani at animasyonu ata,insan animasyonu insana.

şimdi.Bir animasyon yaparken,ilk önce modül sistemdeki adını yazmanız gerek.

mesela adı animos olsun.daha sonra,onun eklerini belirtmeliyiz.İşte o yukarda dediğim " işareti ile başlayıp bitmeyen,siyah yazılara değineceğiz.

sonra,onun büyük eklerini belirtmeliyiz(header_animations da amf_ uzantısı ile belirtilmişlerdir.).

daha sonra da animasyonun oynayacağı süresini ve animasyonun kaynağını belirtiyoruz..Örnek olarak bir animasyon:

["animos", 0, amf_client_prediction,
  [11.0, "stand_man", 0, 315, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],

kırmızı,modül sistemde çağıracağımız isim.bu animasyonu anim_ uzantısı ile çağırabilirsiniz.

maviler,eklerimiz.

yeşil,oynayacağı süre.

siyah,belirtildiği brf dosyasının içindeki ad.

şimdi,bir animasyonun nasıl eklendiğini az çok öğrenmiş ve mantığını kavramış olmanız lazım.  :smile:

geldik module_constants'a.Bu dosya daha çok,o dediğiniz siyah yazılar ile ilgili.

bu gördüğünüz siyah yazıların kaynağı buradadır.Kimi zaman bir askeri,partiyi,bir asker grubunu,bir parti grubunu oluştururlar.

Mesela;

Code:
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_136"

burada,ilk constant,sınırın başlangıcı,ikincisi ise bitişini gösterir.Kullanılma amacı da bir döngü yaratmaktır.Yani yapacağınız şey,bu iki sınır arasında tekrarlanır.Zamanı gelince konuşucağız bunları.  :smile:

kimi zaman,bazı sayılarla gördüğünüz olur bunları.kimisi renk kodu,kimisi de rastgele bir sayıdır.belki rastgele sayılardır ama,çok işe yarayabilirler.

bazen de bir askeri temsil edebilirler.Mesela;

Code:
oyuncu = "trp_player"

gördüğünüz gibi,bu constantı nerede kullanırsanız,yapacağınız şey veya etkilenecek olan unsur,oyuncu olacaktır.Tabi odak noktası constant ise.

geldik module_dialogsa.
module_dialogs da şöyle bir farklılık var.Diyaloglar hiçbir zaman çağırılamazlar.Oyun tarafından halledilirler.
Eğer yeni bir asker yaratılmış ve onun diyalogları ayarlanmamış ise;
[trp_oynucu, "start", [], "diyalog","patatos",[]],
[trp_oynucu, "patatos", [], "diyalog","close_window",[]],
ilk önce troopun adı yazılır,ardına alıntı işareti ile start konulur,sonra koşul belirtilir,daha sonra söylenmek istenen diyalog verilir,en sona da o diyalog bitiyorsa alıntı işareti ile birlikte "close_window",bitmiyor ise altındaki diyalogun adı koyulur.
Ayrıca,farkında iseniz,"trp_oynucu" adlı askerimiz alıntı ( " ) içinde değil.bu,module_dialogsun diğer modül dosyalarına olan farklarından bir tanesidir.Hani demiştim ya,diğer modül dosyalarının da başka kuralları vardır diye.işte o farklardan biri de bu.

geldik module_factionsa.module_factions da ise,şöyle bir mantık var;

Code:
("neutral","Neutral",0, 0.1,[("player_faction",0.0)], [],0xFFFFFF),

neutral modül sistemdeki ad.

İkinci neutral oyunda gözükecek ad.

ilk köşeli parantez başka krallıklar ile ilişkisini gösteriyor.

0xFFFFFF krallığın rengidir.Renk kodları diye araştırırsanız bulabilirsiniz.Ancak büyük harf ile çalışırlar.Küçük harf yazmamanız gerek.

Geldik game_menuse.Burada,örnek bir menü ve örnek bir menü kümesi oluşturarak anlatım yapacağım.

İlk olarak küçük bir menü den başlayalım;

("start",[],"yazi",
      []
  ),

start yazısı,modül sistemde çağırılan isim.İlk köşeli parantez kısmı,koşul kısmı.Yani bu menünün gözükmesi için gereken koşullar. yazi kelimesinin olduğu yer,menünün oyunda nasıl gözükeceğini gösterir.Gördüğünüz gibi,her objeden sonra virgül geliyor.Unutmayın. :smile:
İkinci köşeli parantez,menüye tıkladığınızda olacak şeylerdir.Yani sonuç kısmıdır.

bir menü kümesi ile gösterelim;

("menu_kumesi",0,
  "menu yazisi:",
  "none",
  [],
    [
  [glow=red,2,300] ("tonton",[],"merhaba.",
      []),
     
    ]
  ),[/glow]
menu_kumesi,menünün modül sistemdeki adı.Yani o menüyü çağırmanız için bu gereklidir.

menu yazisi,menüye gittiğinizde yukarıda görünen yazıdır.
kümenin ilk köşeli parantezi,menü kümesinin koşul kısmıdır.Eğer koşul karşılanıyorsa o kümedeki alt menüler gözükür.
kümenin ikinci köşeli parantez kısmı,alt menülerin yerleştirildiği yerdir. o alt kümedeki koşul ve sonuç yerlerini açıklamaya gerek yoktur herhalde ? :smile:

module_game_menus bu şekilde çalışır.

bazı modül dosyalarını atlıyorum,çünkü önceden dersleri verildi onların.ilk mesaja bakarsanız görebilirsiniz.

Geldik module_map_iconsa.


("player",0,"icon_mule", avatar_scale, snd_footstep_grass, 0.15, 0.173, 0),

player,ikonun modül sistemdeki adı.

virgülden sonraki sıfır,biraz detay istiyor.eğer header_map_icons dan birşey yazacaksanız oraya yazmanız gerekir.Yazmıyorsanız yerine sıfır koymalısınız.Yoksa hata verir.map_icons'un farklılıklarından birisidir bu.

icon_mule, ikonun brf dosyasının içindeki objenin adıdır.

avatar_scale, bu,module_map_iconsu açtığınızda az aşağı indiğinizde gördüğünüz eşitliktir.İstediğiniz eşitlikleri oralara yazabilirsiniz.Böylece o yazılar bir büyüklüğü,değeri yazı ile temsil eder.

snd_footstep_grass, ikonun dünya haritasında çıkardığı sestir.module_sounds tan snd_ eki ile çağırabilirsiniz.

geldik module_meshes'a.

her mesh,şunları barındırır;

1.Mesh adı; başka modül dosyalarında kullanılmak için yazılmak zorundadır.mesh_ eki ile çağırılabilir.
2. Mesh ekleri; bu ekler header_meshes da vardır.Görmek için oraya bakın.
3.meshin kaynağı(kaplaması); meshin textures dosyasında verilen adıdır.
4. Meshin x ekseninde çevirilmesi; mesh açıldığında otomatik ayarlı oluyor.
5. Meshin y ekseninde çevirilmesi; açıldığında ayarlanıyor.
6. Meshin z ekseninde çevirilmesi; açıldığında ayarlanıyor.
7. meshin x ekseninde dönmesi
8. meshin y ekseninde dönmesi
9. meshin z ekseninde dönmesi
10. meshin x ekseninde genişlemesi
11. meshin y ekseninde genişlemesi
12. meshin z ekseninde genişlemesi

buradan yola çıkarak;

Code:
("pic_bandits", 0, "pic_bandits", 0, 0, 0, 0, 0, 0, 1, 1, 1),

pic_bandits, modüldeki adı.

sıfır,önceden de bahsettiğimiz gibi eki belirler.Eğer ek yoksa sıfır konulur.

ikini pic_bandits,textures dosyasındaki adı.

ve diğer sayılar da yukarıda verdiğim x,y,z eksenlerinde dönme,çevirilme ve genişletilme olaylarını yapar.

geldik mission template'e.

önce,bir ateşleyici(trigger) ile,sonra bir template ile açıklamamız gerek olayı. :smile:

triggerlar,mission_template'de başlara yazılır.

ornek_trigger = (0, 0, ti_once, [],
  [])
mission_templates'in bir farkı vardır.üstlere yazılan triggerların sonlarındaki parantezden sonrasına virgül gelmez.

o sıfırlar,misyon başladığı andan itibaren ne kadar sürede tekrarlanacaklarını yazar.sıfır ise,hep tekrarlanırlar.

ti_once, bu,trigger'ın misyon içinde sadece bir kez tekrarlanacağını gösterir.Bu triggerın eklerinden biridir.Diğer ekler için header_triggers'a bakın.

ilk köşeli parantez kısmı,koşul kısmıdır.Bu triggerın uygulanması için koyduğumuz koşul yeridir.Eğer koşul sağlanırsa trigger ateşlenir.Eğer sağlanmazsa durur.

ikinci köşeli parantez kısmı,sonuç kısmıdır.Trigger ateşlendiğinde oluşacak veya gerçekleşecek olaylar buradadır.

geldik misyon kısmına.Bir sahneyi sahne yapan misyonlardır.Misyonlar,şu kısımdan itibaren başlarlar;

Code:
mission_templates = [

bu kısımdan önceki yerlere koyarsanız misyonları,hata verecektir.En sondaki köşeli parantez ise bu yazının sonudur.

yani:
Code:
mission_templates = [
misyonlar
] < en sondaki o köşeli parantez

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [],
  ),

template_mod, misyonun modül sistemde kullanılacak adıdır.

sıfır,hiçbir ek olmadığını gösterir. ekler için header_mission_templates'e bakın.

template yazisi, o template in oyunda gözüken adıdır.Aslinda templatelerin kullanım amaçlarını gösterirler.
-1 genellikle buluşma sahneri için kullanılır.öbür taraftan header_mission_types den yapılır(sanırım..)
ilk köşeli paranteze şunlar koyulur;

(2,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),

buradaki iki, sahnede var olan giriş noktasını gösterir.

mtef_visitor_source ve mtef_team_0 bunlar eklerdir.header_mission_templates den bakabilirsiniz.

af_override_horse ise,troopun o sahneye girdiğinde belirli bir itemi giyerek gelmesini engelliyor.Mesela bu ek,belirlenen giriş noktasındaki askerin,eğer atı var ise,at ile değil,yaya olarak sahneye gelmesini sağlar.Bu gibi ekler header_mission_templates de var.

daha sonra, ikincci köşeli parantez kısmı,triggerların ateşlendiği yerdir.Daha demin yazdığımız trigger'ı ateşlemek istiyorsak,

önce triggerın adını,ardından virgülü koymamız gerek.yani:
Code:
ornek_trigger,

şeklinde olmalıdır.

ya da,şöyle de çağırabilirsiniz o triggerı:

içine yazdığınız sonuç kısmını buraya yapıştırabilirsiniz.Mesela:
(0, 0, ti_once, [],
  []),

gibi.Ancak,sondaki normal parantezden sonraya virgül getirmelisiniz.Buradaki farka dikkat ederseniz gerisi kolay.Zaten başta demiştim misyonlarda sona virgül konulur diye.

sonuç olarak,bir triggerı ateşlemeyi iki yoldan da yapabilirsiniz.Ancak bir yol daha var.

bu sefer bir trigger kümesi oluşturacağız.bu daha çok,triggerları tek tek çağırmak yerine hepsini bir kümeye koyup çağırmak için kullanılır.trigger kümesi şöyledir:

Code:
trigger_kumesi = [
triggerlar
]

burada da,ilk başta normal triggerlar için söylediğimiz kural geçerlidir.sondaki paranteze virgül gelmez.

Kullanımı için ise,bir misyonun sonundaki köşeli parantezin yanına konulur.Örnek olarak:

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [
  ] + trigger_kumesi,
),

ancak buraya dikkat.ikinci köşeli parantezden sonrasında virgül vardı.Bunu kaldırdık ve yanına trigger kümesini yerleştirdik.Eğer böyle yapmazsak hata verirdi.

Sıra geldi module_musics e.

bir müzik eklemek için,önce modül sistemdeki adı,sonra müziğin music dosyasındaki uzantısı ile beraber yazmanız gereken ismi.

müziğin ekleri.header_musics e bakabilirsiniz.

devam ekleri.Bir müziğin nerelerde,hangi kültürlerde çalacağını belirleyen ekler.Eğer yoksa sıfır yazmanız gerekir.yine header_musics de vardır bunlar.

ayrıca,eğer modunuz için müzik ekleyecekseniz,sonuna mtf_module_track ekini eklemelisiniz.Yoksa oyun onu bir mod müziği olarak görmez.
örnek olarak;
("fight_1", "fight_1.ogg", mtf_sit_fight|mtf_sit_multiplayer_fight|mtf_sit_ambushed, 0),

fight_1 müziğin modüldeki adı.

fight_1.ogg müziğin uzantısı ile beraber yazılan,musics dosyasındaki adı.

mtf_ uzantılı yazılar,eklerdir.

sıfır,herhangi bir yerde ne süre çalacağını belirlenmediği için yazılmıştır.

module_particle_systems'i henüz çözemedim.Fakat yakında editliyip koyacağım buraya.

geldik module_parties'e.buradan sonra kısa geçeceğim.Artık anlamaya başlamışsınızdır. :smile:

Code:
("main_party","Main_Party",icon_player|pf_limit_members, no_menu, pt_none,fac_player_faction,0,ai_bhvr_hold,0,(17,52.50),[(trp_player,1,0)]),

main_party, modül deki ad.

yine öndeki main party,map editorde gözükecek ad. diğerleri de sırayla:

ikon|ekler,krallığı,koordinatları

köşeli parantez ise,barındırdığı askerlerdir.

party_templates,neredeyse parties ile aynıdır.Fakat farklar vardır.Zamanı gelince açıklayacağım.

postfx,shaderler ile alakalı bir modül dosyası.Ellemenizi pek tavsiye etmiyorum eğer shaderler ile içli dışlı değilseniz.

presentations'u henüz çözemedim.diğer çözemediklerimi de başka derslerle vereceğim.

module_quests de ise,bir örnek ile açıklamam yetecektir.

Code:
("quest_ismi", "gorevin oyundaki adı", qf_random_quest,
  "gorevin icerdigi metin"
  ),

qf_random_quest,rastgele bir görev olduğunu gösterir.header_quests de vardır buna benzer ekler.yoksa sıfır konulur.

scene_propsda ise,mission_template de de dediğim olay vardır.İlk başta triggerlar,sonra sahne objeleri var.

("cannonball",0,"rock_ammo","0",[]),

modül ismi,sonra o objenin eki,yoksa sıfır gelir,rock_ammo ise modelin brf içindeki ismi. alıntı işareti içindeki şey ise collision dur.Modele değdiğinizde bir duvar gibi bişeyle karşılaşırsınız ya,o odur işte.eğer o collisiondan yoksa alıntı içinde rakam ile sıfır yazılır.

köşeli parantez yeri,o modelin gerçekleştirdiği olaylardır.Mesela isterseniz ateş yakmasını sağlayabilirsiniz.

module_scenes daha önceden anlatıldı,anlatmaya gerek yok.

geldik scriptse.burada da mission_templates e benzer fakat aynısı olmayan bir olay vardır.

scripts = [ ile başlar. köşeli parantez ile biter.

bir scripts örneği olarak:

Code:
("script_isim",
 []),

burada,bazı modüllerden farklı olarak,koşul kısmı bulunmamaktadır.Bu yüzden,herşey buradaki köşeli paranteze yazılır.Eğer ki (try_begin), ve (try_end), komutlarıyla yazılmaz ise koşul scripti,modülde kullanılan adına cf_ eki getirilmelidir.

Yani bu iki komutu koymazsanız scriptin ismi şöyle olmalıdır:
Code:
("cf_script_isim",
 [
  ]),

çünkü koşul tekrarlanmıyor.Ayrıca,oyunda bazı hatalara neden olabilir.Bu yüzden koşul scriptleri mutlaka bu iki komutla başlamalıdır.

simple_triggers'da,basit triggerlar yer alır.

mesela:

Code:
(24,
   []),

baştaki 24,o triggerın 24 saat(oyun saati) aralıkla tekrarlanacağı anlamına gelir.Köşeli parantez,o 24 saat aralıkla tekrarlanan şeyleri içerir.mesela 24 saat aralıkla oyuncuya para kaybettirebilirsiniz.

module_skills'i Porshy Adlı arkadaşımız anlatmıştır.Konusundan bakabilirsiniz.  :smile:

module_skins daha sonra anlatılacaktır.

module_sounds, module_musics'in mantığına benzer bi şekilde çalışır:

("click", sf_2d|sf_vol_1,["click_01.wav"]),

modüldeki adı,ekleri,uzantısı ile beraber yazılan ad.

strings ise,metinleri içerir.bir menüye birsürü yazı yazmak mı daha kolay ? yoksa bir çağırı ile o koca metni başka yerden çağırmak mı ? :smile:

module_strings şöyle çalışır:

("string_ad", "yazilmak istenen metin."),

tableau_materials sonra anlatılacaktır.
module_triggers sonra anlatılacaktır.
module_troops zaten anlatıldı.

işte, temelleri ve mantığını anlamış olmanız lazım.Eğer eksikler varsa,ki mutlaka vardır.  :grin: bildirmenizi rica ederim.

İyi günler.  :smile:
Çok uzun bi o kadar da yararlı. Ellerine sağlık. Çok emek vermişsin.
Bunun sayesinde kod yazmaya başlıyabilirim :cool: :cool: :cool:
 
Hacı yeni krallık ekledikten sonra o krallığın köylerinden çıkacak askerlerle ilgili bir dersin var mı ?
 
HyperCharge said:
Cevdet said:
Hacı yeni krallık ekledikten sonra o krallığın köylerinden çıkacak askerlerle ilgili bir dersin var mı ?

Yok.aslında kolay.krallığın kültürünü değiştirebilirsin.

Nasıl olacağını anlatabilirmisin ?
 
Cevdet said:
HyperCharge said:
Cevdet said:
Hacı yeni krallık ekledikten sonra o krallığın köylerinden çıkacak askerlerle ilgili bir dersin var mı ?

Yok.aslında kolay.krallığın kültürünü değiştirebilirsin.

Nasıl olacağını anlatabilirmisin ?
Code:
(faction_set_slot, "fac_kingdom_7",  slot_faction_culture, "fac_culture_7"),

burada sağdaki kültürü değiştirirsen başka ülkelerin askerleri çıkar.fakat 8.kültür olması için önce o kültürü,sonra o kültürün askerlerini eklemen gerek.
 
HyperCharge said:
Merhaba.Bugün,modül sistemin yazım kurallarından bahsedeceğiz.Kodlamaya başlamanın temel şartlarından biri de modül sistemin(daha doğrusu pythonun) yazım kurallarını bilmektir.Her modül dosyasının farklı bazı kuralları olabilir.Fakat temelleri aynıdır.Bu derste,temelleri öğreneceğiz.

Her modül dosyasında temel kabul edilen ilk kural,bir dizeye ilk olarak komut ile başlanması gerektiğidir.Komut,Header_operations da yer alan,oyunun çeşitli fonksiyonlarını içeren,Bizler tarafından eklenmesi imkansız olan şeylerdir.

Dediğimiz gibi her dize bir operasyon ile başlar.Bir örnek ile;

(komut, "obje", "obje_2"),

ikinci olarak,komut,obje ve rakamlardan sonra eğer parantez gelmiyor ise(yani dize bitmiyorsa) herzaman yanına virgül gelir;

(komut, "obje"),

burada,komutun önüne virgül koymamız zorunlu.Her dizedeki ilk kuraldır bu.  :smile:

Ve gördüğümüz gibi,objeden sonra parantez geldiği için,objenin önüne virgül koymadık.Eğer şöyle olsa;

(komut, "obje", rakam),

gördüğünüz gibi,ikinci bir unsur geldiği için,"obje" argümanının önüne virgül koyduk.

Bunun gibi milyonlarca dize ile karşılaşabilirsiniz.Fakat bu yazdıklarım farklı değer,yazı,komut ile karşınıza çıkacak.

Şimdi, bazı yerlerde alıntı( yani " işareti) ile başlayıp biten yazılar olmuyor.Bunların birkaç nedeni var kullanımına göre.ona değineceğiz anlatırken. :smile:

module_animations'a girersek,başlarda siyah  yazılar ile bazı rakamlara eşitlik verilmiş.Ayrıca çok da detay isteyen bir yer.Bir animasyonun nasıl eklendiğini de öğrenmeden geçmeyeceğiz buradan.  :mrgreen:

burada,iki animasyon dizisi var.birisi atlar,diğeri insanlar için.bu dizilerdeki her animasyon,kendi yerini içerir.Yani at animasyonu ata,insan animasyonu insana.

şimdi.Bir animasyon yaparken,ilk önce modül sistemdeki adını yazmanız gerek.

mesela adı animos olsun.daha sonra,onun eklerini belirtmeliyiz.İşte o yukarda dediğim " işareti ile başlayıp bitmeyen,siyah yazılara değineceğiz.

sonra,onun büyük eklerini belirtmeliyiz(header_animations da amf_ uzantısı ile belirtilmişlerdir.).

daha sonra da animasyonun oynayacağı süresini ve animasyonun kaynağını belirtiyoruz..Örnek olarak bir animasyon:

["animos", 0, amf_client_prediction,
  [11.0, "stand_man", 0, 315, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],

kırmızı,modül sistemde çağıracağımız isim.bu animasyonu anim_ uzantısı ile çağırabilirsiniz.

maviler,eklerimiz.

yeşil,oynayacağı süre.

siyah,belirtildiği brf dosyasının içindeki ad.

şimdi,bir animasyonun nasıl eklendiğini az çok öğrenmiş ve mantığını kavramış olmanız lazım.  :smile:

geldik module_constants'a.Bu dosya daha çok,o dediğiniz siyah yazılar ile ilgili.

bu gördüğünüz siyah yazıların kaynağı buradadır.Kimi zaman bir askeri,partiyi,bir asker grubunu,bir parti grubunu oluştururlar.

Mesela;

Code:
banner_map_icons_begin = "icon_banner_01"
banner_map_icons_end_minus_one = "icon_banner_136"

burada,ilk constant,sınırın başlangıcı,ikincisi ise bitişini gösterir.Kullanılma amacı da bir döngü yaratmaktır.Yani yapacağınız şey,bu iki sınır arasında tekrarlanır.Zamanı gelince konuşucağız bunları.  :smile:

kimi zaman,bazı sayılarla gördüğünüz olur bunları.kimisi renk kodu,kimisi de rastgele bir sayıdır.belki rastgele sayılardır ama,çok işe yarayabilirler.

bazen de bir askeri temsil edebilirler.Mesela;

Code:
oyuncu = "trp_player"

gördüğünüz gibi,bu constantı nerede kullanırsanız,yapacağınız şey veya etkilenecek olan unsur,oyuncu olacaktır.Tabi odak noktası constant ise.

geldik module_dialogsa.
module_dialogs da şöyle bir farklılık var.Diyaloglar hiçbir zaman çağırılamazlar.Oyun tarafından halledilirler.
Eğer yeni bir asker yaratılmış ve onun diyalogları ayarlanmamış ise;
[trp_oynucu, "start", [], "diyalog","patatos",[]],
[trp_oynucu, "patatos", [], "diyalog","close_window",[]],
ilk önce troopun adı yazılır,ardına alıntı işareti ile start konulur,sonra koşul belirtilir,daha sonra söylenmek istenen diyalog verilir,en sona da o diyalog bitiyorsa alıntı işareti ile birlikte "close_window",bitmiyor ise altındaki diyalogun adı koyulur.
Ayrıca,farkında iseniz,"trp_oynucu" adlı askerimiz alıntı ( " ) içinde değil.bu,module_dialogsun diğer modül dosyalarına olan farklarından bir tanesidir.Hani demiştim ya,diğer modül dosyalarının da başka kuralları vardır diye.işte o farklardan biri de bu.

geldik module_factionsa.module_factions da ise,şöyle bir mantık var;

Code:
("neutral","Neutral",0, 0.1,[("player_faction",0.0)], [],0xFFFFFF),

neutral modül sistemdeki ad.

İkinci neutral oyunda gözükecek ad.

ilk köşeli parantez başka krallıklar ile ilişkisini gösteriyor.

0xFFFFFF krallığın rengidir.Renk kodları diye araştırırsanız bulabilirsiniz.Ancak büyük harf ile çalışırlar.Küçük harf yazmamanız gerek.

Geldik game_menuse.Burada,örnek bir menü ve örnek bir menü kümesi oluşturarak anlatım yapacağım.

İlk olarak küçük bir menü den başlayalım;

("start",[],"yazi",
      []
  ),

start yazısı,modül sistemde çağırılan isim.İlk köşeli parantez kısmı,koşul kısmı.Yani bu menünün gözükmesi için gereken koşullar. yazi kelimesinin olduğu yer,menünün oyunda nasıl gözükeceğini gösterir.Gördüğünüz gibi,her objeden sonra virgül geliyor.Unutmayın. :smile:
İkinci köşeli parantez,menüye tıkladığınızda olacak şeylerdir.Yani sonuç kısmıdır.

bir menü kümesi ile gösterelim;

("menu_kumesi",0,
  "menu yazisi:",
  "none",
  [],
    [
  [glow=red,2,300] ("tonton",[],"merhaba.",
      []),
     
    ]
  ),[/glow]
menu_kumesi,menünün modül sistemdeki adı.Yani o menüyü çağırmanız için bu gereklidir.

menu yazisi,menüye gittiğinizde yukarıda görünen yazıdır.
kümenin ilk köşeli parantezi,menü kümesinin koşul kısmıdır.Eğer koşul karşılanıyorsa o kümedeki alt menüler gözükür.
kümenin ikinci köşeli parantez kısmı,alt menülerin yerleştirildiği yerdir. o alt kümedeki koşul ve sonuç yerlerini açıklamaya gerek yoktur herhalde ? :smile:

module_game_menus bu şekilde çalışır.

bazı modül dosyalarını atlıyorum,çünkü önceden dersleri verildi onların.ilk mesaja bakarsanız görebilirsiniz.

Geldik module_map_iconsa.


("player",0,"icon_mule", avatar_scale, snd_footstep_grass, 0.15, 0.173, 0),

player,ikonun modül sistemdeki adı.

virgülden sonraki sıfır,biraz detay istiyor.eğer header_map_icons dan birşey yazacaksanız oraya yazmanız gerekir.Yazmıyorsanız yerine sıfır koymalısınız.Yoksa hata verir.map_icons'un farklılıklarından birisidir bu.

icon_mule, ikonun brf dosyasının içindeki objenin adıdır.

avatar_scale, bu,module_map_iconsu açtığınızda az aşağı indiğinizde gördüğünüz eşitliktir.İstediğiniz eşitlikleri oralara yazabilirsiniz.Böylece o yazılar bir büyüklüğü,değeri yazı ile temsil eder.

snd_footstep_grass, ikonun dünya haritasında çıkardığı sestir.module_sounds tan snd_ eki ile çağırabilirsiniz.

geldik module_meshes'a.

her mesh,şunları barındırır;

1.Mesh adı; başka modül dosyalarında kullanılmak için yazılmak zorundadır.mesh_ eki ile çağırılabilir.
2. Mesh ekleri; bu ekler header_meshes da vardır.Görmek için oraya bakın.
3.meshin kaynağı(kaplaması); meshin textures dosyasında verilen adıdır.
4. Meshin x ekseninde çevirilmesi; mesh açıldığında otomatik ayarlı oluyor.
5. Meshin y ekseninde çevirilmesi; açıldığında ayarlanıyor.
6. Meshin z ekseninde çevirilmesi; açıldığında ayarlanıyor.
7. meshin x ekseninde dönmesi
8. meshin y ekseninde dönmesi
9. meshin z ekseninde dönmesi
10. meshin x ekseninde genişlemesi
11. meshin y ekseninde genişlemesi
12. meshin z ekseninde genişlemesi

buradan yola çıkarak;

Code:
("pic_bandits", 0, "pic_bandits", 0, 0, 0, 0, 0, 0, 1, 1, 1),

pic_bandits, modüldeki adı.

sıfır,önceden de bahsettiğimiz gibi eki belirler.Eğer ek yoksa sıfır konulur.

ikini pic_bandits,textures dosyasındaki adı.

ve diğer sayılar da yukarıda verdiğim x,y,z eksenlerinde dönme,çevirilme ve genişletilme olaylarını yapar.

geldik mission template'e.

önce,bir ateşleyici(trigger) ile,sonra bir template ile açıklamamız gerek olayı. :smile:

triggerlar,mission_template'de başlara yazılır.

ornek_trigger = (0, 0, ti_once, [],
  [])
mission_templates'in bir farkı vardır.üstlere yazılan triggerların sonlarındaki parantezden sonrasına virgül gelmez.

o sıfırlar,misyon başladığı andan itibaren ne kadar sürede tekrarlanacaklarını yazar.sıfır ise,hep tekrarlanırlar.

ti_once, bu,trigger'ın misyon içinde sadece bir kez tekrarlanacağını gösterir.Bu triggerın eklerinden biridir.Diğer ekler için header_triggers'a bakın.

ilk köşeli parantez kısmı,koşul kısmıdır.Bu triggerın uygulanması için koyduğumuz koşul yeridir.Eğer koşul sağlanırsa trigger ateşlenir.Eğer sağlanmazsa durur.

ikinci köşeli parantez kısmı,sonuç kısmıdır.Trigger ateşlendiğinde oluşacak veya gerçekleşecek olaylar buradadır.

geldik misyon kısmına.Bir sahneyi sahne yapan misyonlardır.Misyonlar,şu kısımdan itibaren başlarlar;

Code:
mission_templates = [

bu kısımdan önceki yerlere koyarsanız misyonları,hata verecektir.En sondaki köşeli parantez ise bu yazının sonudur.

yani:
Code:
mission_templates = [
misyonlar
] < en sondaki o köşeli parantez

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [],
  ),

template_mod, misyonun modül sistemde kullanılacak adıdır.

sıfır,hiçbir ek olmadığını gösterir. ekler için header_mission_templates'e bakın.

template yazisi, o template in oyunda gözüken adıdır.Aslinda templatelerin kullanım amaçlarını gösterirler.
-1 genellikle buluşma sahneri için kullanılır.öbür taraftan header_mission_types den yapılır(sanırım..)
ilk köşeli paranteze şunlar koyulur;

(2,mtef_visitor_source|mtef_team_0,af_override_horse,0,1,[]),

buradaki iki, sahnede var olan giriş noktasını gösterir.

mtef_visitor_source ve mtef_team_0 bunlar eklerdir.header_mission_templates den bakabilirsiniz.

af_override_horse ise,troopun o sahneye girdiğinde belirli bir itemi giyerek gelmesini engelliyor.Mesela bu ek,belirlenen giriş noktasındaki askerin,eğer atı var ise,at ile değil,yaya olarak sahneye gelmesini sağlar.Bu gibi ekler header_mission_templates de var.

daha sonra, ikincci köşeli parantez kısmı,triggerların ateşlendiği yerdir.Daha demin yazdığımız trigger'ı ateşlemek istiyorsak,

önce triggerın adını,ardından virgülü koymamız gerek.yani:
Code:
ornek_trigger,

şeklinde olmalıdır.

ya da,şöyle de çağırabilirsiniz o triggerı:

içine yazdığınız sonuç kısmını buraya yapıştırabilirsiniz.Mesela:
(0, 0, ti_once, [],
  []),

gibi.Ancak,sondaki normal parantezden sonraya virgül getirmelisiniz.Buradaki farka dikkat ederseniz gerisi kolay.Zaten başta demiştim misyonlarda sona virgül konulur diye.

sonuç olarak,bir triggerı ateşlemeyi iki yoldan da yapabilirsiniz.Ancak bir yol daha var.

bu sefer bir trigger kümesi oluşturacağız.bu daha çok,triggerları tek tek çağırmak yerine hepsini bir kümeye koyup çağırmak için kullanılır.trigger kümesi şöyledir:

Code:
trigger_kumesi = [
triggerlar
]

burada da,ilk başta normal triggerlar için söylediğimiz kural geçerlidir.sondaki paranteze virgül gelmez.

Kullanımı için ise,bir misyonun sonundaki köşeli parantezin yanına konulur.Örnek olarak:

Code:
(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [
  ] + trigger_kumesi,
),

ancak buraya dikkat.ikinci köşeli parantezden sonrasında virgül vardı.Bunu kaldırdık ve yanına trigger kümesini yerleştirdik.Eğer böyle yapmazsak hata verirdi.

Sıra geldi module_musics e.

bir müzik eklemek için,önce modül sistemdeki adı,sonra müziğin music dosyasındaki uzantısı ile beraber yazmanız gereken ismi.

müziğin ekleri.header_musics e bakabilirsiniz.

devam ekleri.Bir müziğin nerelerde,hangi kültürlerde çalacağını belirleyen ekler.Eğer yoksa sıfır yazmanız gerekir.yine header_musics de vardır bunlar.

ayrıca,eğer modunuz için müzik ekleyecekseniz,sonuna mtf_module_track ekini eklemelisiniz.Yoksa oyun onu bir mod müziği olarak görmez.
örnek olarak;
("fight_1", "fight_1.ogg", mtf_sit_fight|mtf_sit_multiplayer_fight|mtf_sit_ambushed, 0),

fight_1 müziğin modüldeki adı.

fight_1.ogg müziğin uzantısı ile beraber yazılan,musics dosyasındaki adı.

mtf_ uzantılı yazılar,eklerdir.

sıfır,herhangi bir yerde ne süre çalacağını belirlenmediği için yazılmıştır.

module_particle_systems'i henüz çözemedim.Fakat yakında editliyip koyacağım buraya.

geldik module_parties'e.buradan sonra kısa geçeceğim.Artık anlamaya başlamışsınızdır. :smile:

Code:
("main_party","Main_Party",icon_player|pf_limit_members, no_menu, pt_none,fac_player_faction,0,ai_bhvr_hold,0,(17,52.50),[(trp_player,1,0)]),

main_party, modül deki ad.

yine öndeki main party,map editorde gözükecek ad. diğerleri de sırayla:

ikon|ekler,krallığı,koordinatları

köşeli parantez ise,barındırdığı askerlerdir.

party_templates,neredeyse parties ile aynıdır.Fakat farklar vardır.Zamanı gelince açıklayacağım.

postfx,shaderler ile alakalı bir modül dosyası.Ellemenizi pek tavsiye etmiyorum eğer shaderler ile içli dışlı değilseniz.

presentations'u henüz çözemedim.diğer çözemediklerimi de başka derslerle vereceğim.

module_quests de ise,bir örnek ile açıklamam yetecektir.

Code:
("quest_ismi", "gorevin oyundaki adı", qf_random_quest,
  "gorevin icerdigi metin"
  ),

qf_random_quest,rastgele bir görev olduğunu gösterir.header_quests de vardır buna benzer ekler.yoksa sıfır konulur.

scene_propsda ise,mission_template de de dediğim olay vardır.İlk başta triggerlar,sonra sahne objeleri var.

("cannonball",0,"rock_ammo","0",[]),

modül ismi,sonra o objenin eki,yoksa sıfır gelir,rock_ammo ise modelin brf içindeki ismi. alıntı işareti içindeki şey ise collision dur.Modele değdiğinizde bir duvar gibi bişeyle karşılaşırsınız ya,o odur işte.eğer o collisiondan yoksa alıntı içinde rakam ile sıfır yazılır.

köşeli parantez yeri,o modelin gerçekleştirdiği olaylardır.Mesela isterseniz ateş yakmasını sağlayabilirsiniz.

module_scenes daha önceden anlatıldı,anlatmaya gerek yok.

geldik scriptse.burada da mission_templates e benzer fakat aynısı olmayan bir olay vardır.

scripts = [ ile başlar. köşeli parantez ile biter.

bir scripts örneği olarak:

Code:
("script_isim",
 []),

burada,bazı modüllerden farklı olarak,koşul kısmı bulunmamaktadır.Bu yüzden,herşey buradaki köşeli paranteze yazılır.Eğer ki (try_begin), ve (try_end), komutlarıyla yazılmaz ise koşul scripti,modülde kullanılan adına cf_ eki getirilmelidir.

Yani bu iki komutu koymazsanız scriptin ismi şöyle olmalıdır:
Code:
("cf_script_isim",
 [
  ]),

çünkü koşul tekrarlanmıyor.Ayrıca,oyunda bazı hatalara neden olabilir.Bu yüzden koşul scriptleri mutlaka bu iki komutla başlamalıdır.

simple_triggers'da,basit triggerlar yer alır.

mesela:

Code:
(24,
   []),

baştaki 24,o triggerın 24 saat(oyun saati) aralıkla tekrarlanacağı anlamına gelir.Köşeli parantez,o 24 saat aralıkla tekrarlanan şeyleri içerir.mesela 24 saat aralıkla oyuncuya para kaybettirebilirsiniz.

module_skills'i Porshy Adlı arkadaşımız anlatmıştır.Konusundan bakabilirsiniz.  :smile:

module_skins daha sonra anlatılacaktır.

module_sounds, module_musics'in mantığına benzer bi şekilde çalışır:

("click", sf_2d|sf_vol_1,["click_01.wav"]),

modüldeki adı,ekleri,uzantısı ile beraber yazılan ad.

strings ise,metinleri içerir.bir menüye birsürü yazı yazmak mı daha kolay ? yoksa bir çağırı ile o koca metni başka yerden çağırmak mı ? :smile:

module_strings şöyle çalışır:

("string_ad", "yazilmak istenen metin."),

tableau_materials sonra anlatılacaktır.
module_triggers sonra anlatılacaktır.
module_troops zaten anlatıldı.

işte, temelleri ve mantığını anlamış olmanız lazım.Eğer eksikler varsa,ki mutlaka vardır.  :grin: bildirmenizi rica ederim.

İyi günler.  :smile:

Oo hyper hocam yine coşturmuşsunuz hocam allah razı olsun hocam ama hocam ben şunu anlamadım mission templates e bir trigeer yazarken o sonuç ve koşul yerlerinin ortasına be yazacağiz
 
HyperCharge said:
aliemre461 said:
HyperCharge said:
ne yazacağın sana kalmış.  :smile:

işte hocam oraya ne gibi şeyler yazcaz  :?:

koşul komutlarını vesaire soruyorsun.Anladım.Yakında onların da dersi gelecek.

yok hocam koşulların nasıl olduğunu biliyorum

eg, neg ve assign li şeyler ben şunu merak ediyorum

Code:
ornek_trigger = (0, 0, ti_once, [],
  [])

yukarıdaki koşul ve sonuç bölümleri arasına ne yazmam lazım yani nasıl trigger yaratcaz hocam
 
HyperCharge said:
ilk köşeli parantez başlangıcı koşul kısmı.

İkinci köşeli parantez başlangıcı ise gerçekleşecek olaylar kısmı.

peki hocam alttaki kımızı yerler ne olacak ne yazacağım

(
    "template_mod",0,-1,
    "template yazisi.",
    [kosul kismi],
    [sonuç kismi],
  ),

o mavi yerlerde sonuç ve koşul yazcam dimi hocam


 
aliemre461 said:
HyperCharge said:
ilk köşeli parantez başlangıcı koşul kısmı.

İkinci köşeli parantez başlangıcı ise gerçekleşecek olaylar kısmı.

peki hocam alttaki kımızı yerler ne olacak ne yazacağım

(
    "template_mod",0,-1,
    "template yazisi.",
    [kosul kismi],
    [sonuç kismi],
  ),

o mavi yerlerde sonuç ve koşul yazcam dimi hocam
hayır.sen misyonu sormuşsun.Misyonun ne olduğunu yazmıştım derste.Bir kere daha bak. :smile:
o ilk kırmızı yazı,misyonun modülde kullanılacak ismi.

ikinci kırmızı yazı,bu misyonun ne olduğunu daha kolay anlamak için yazdığımız yazıdır.
 
HyperCharge said:
aliemre461 said:
HyperCharge said:
ilk köşeli parantez başlangıcı koşul kısmı.

İkinci köşeli parantez başlangıcı ise gerçekleşecek olaylar kısmı.

peki hocam alttaki kımızı yerler ne olacak ne yazacağım

(
    "template_mod",0,-1,
    "template yazisi.",
    [kosul kismi],
    [sonuç kismi],
  ),

o mavi yerlerde sonuç ve koşul yazcam dimi hocam
hayır.sen misyonu sormuşsun.Misyonun ne olduğunu yazmıştım derste.Bir kere daha bak. :smile:
o ilk kırmızı yazı,misyonun modülde kullanılacak ismi.

ikinci kırmızı yazı,bu misyonun ne olduğunu daha kolay anlamak için yazdığımız yazıdır.


peki hyper hocam üstte verdiğiniz triggrın ateşlenmesini nasıl sağlıyoruz


(
    "template_mod",0,-1,
    "template yazisi.",
    [],
    [],
  ),

üstteki kodun neresine

Code:
ornek_trigger

yazarsak


Code:
ornek_trigger = (0, 0, ti_once, [],
  [])

triggerınınn ateşlenmesini sağlamış oluyoruz


 
Kusura bakmayın arkadaslar sizleri de yoruyorum ama bende öğrenmeye çalışıyorum. sorum şu, oyundaki haydut sığınakları nasıl oluşturuluyor? mesela bende bir haydut sığınagı oluşturmak istesem nasıl oluştururum?
 
celil said:
Kusura bakmayın arkadaslar sizleri de yoruyorum ama bende öğrenmeye çalışıyorum. sorum şu, oyundaki haydut sığınakları nasıl oluşturuluyor? mesela bende bir haydut sığınagı oluşturmak istesem nasıl oluştururum?

Haydutları saklandıkları yere baskın yaparak öldürme görevi vardı.ona bir bakmak lazım nasıl oluştuğunu görmek için.

Onun dışında,kendin bir parti oluşturup o partiye gelince saldirma menüsü yapabilirsin.kısacası böyledir.
 
celil said:
Kusura bakmayın arkadaslar sizleri de yoruyorum ama bende öğrenmeye çalışıyorum. sorum şu, oyundaki haydut sığınakları nasıl oluşturuluyor? mesela bende bir haydut sığınagı oluşturmak istesem nasıl oluştururum?

Bende bunun biraz değişiğini soracaktım. Haydut sığınaklarını inceledim. Haydut sığınaklarını Nativede party templates'e kaydetmişler.

Şimdi sorum şu şimdiye kadar hep module_partiesdeki bir partiye menü eklemeyi öğrendik. Peki module_party templates'deki bir partiye nasıl menu ekleyebiliriz. Mesela haydut sığınaklarını module_party_templates'e kaydedilmiş ve bir şekilde bunlara menü eklemişler, nasıl yapılıyor bu?

ben "game_event_party_encounter" kodunun altına şu şekilde eklemeyi denedim ama işe yaramadı;

Code:
(else_try),
       (party_get_template_id, ":template", "$g_encountered_party"),
		   (ge, ":template", "pt_korsan_ini"),
		   (lt, ":template", "pt_korsan_ini"),
       (assign, "$korsan_screen_shown", 0),
#####	 (call_script, "script_encounter_init_variables"),#####
		   (jump_to_menu, "mnu_korsan_ini"),
(else_try),
 
Back
Top Bottom