[OSP][Kod] Emlak

Users who are viewing this thread

dragos

HyperCharge said:
aaer213 said:
dragos said:
aaer213 said:
Bu sayde kodlama öğrenebilirler ama bu sadece kodlama programlarini tanitan bi program olmuş yine de iyi birde bannerlordun kodlama sistemi python olmiycakmiş o yüzden bu ders bannerlorda işlemez ama yararli bi ders olmuş

Mod yapmak küçük resim, kodlamayı öğrenmek ise büyük resim. Biz büyük resmi görelim de küçüğünü hallederiz :smile:

Bannerlord'la ilgili bir bilgim yoktu, yeni öğrendim :shock: :facepalm:

Bannerlordun hangi kodla yapılacıği daha önce açıklanmıştı araştirisan bulursun :wink:

açıklanmadı diye biliyorum.Belki C++ sözleri geçmiştir bannerlord konusunda.Ama C++ olmaması lazım.Derlenmesi gerek python gibi.  :meh:

aaer213 said:
Bu sayde kodlama öğrenebilirler ama bu sadece kodlama programlarini tanitan bi program olmuş yine de iyi birde bannerlordun kodlama sistemi python olmiycakmiş o yüzden bu ders bannerlorda işlemez ama yararli bi ders olmuş

Pythonu öğrenmek daha geniş şeyler yapmanıza olanak verir.mesela,bir modül dosyası yapıp,modül dosyasının sonuna bir kaç satır kod yazarak istediğin dosyanın istediğin yerine ekleyebiliyorsun.Mesela ben at ıslığını ekledim,Bunu lead_charge'e eklemek istiyorum.Şöyle yapmam gerekir:

Code:
for i in range(len(orig_mission_templates)):
		mt_name = orig_mission_templates[i][0]
		if(   mt_name=="lead_charge"):
			orig_mission_templates[i][5].extend(horse_whistle)

module_mission_templates'i arar,aradığı misyonun onun içinde olup olmadığını tarar,eğer misyon ismi lead_charge ise,module_mission_templates'i horse_whistle triggerını lead_charge misyonuna eklenecek şekilde değiştirir.
böylece başka bir dosyadan olan belirli bir kodu,module_mission_templates'in lead_charge misyonuna eklemiş olurum.

Yani python sadece program yazma aracı değil.  :smile:

Bende açıklandığını hiç duymadım :neutral: Neyse, bekleyip göreceğiz ama Python daha çok işime gelir tabi.



Emlak Sistemi
 
  Değişiklik yapılacak dosyalar:
1. module_scripts.py
2. module_simple_triggers.py
3. module_troops.py
4. module_dialogs.py
5. module_parties.py
6. module_game_menus.py
7. module_scenes.py
  Derse başlamadan önce bu dosyaların yedeklerini almanızı öneririm.

  Öncelikle module_troops.py'ye girerek emlakçı olmasını istediğiniz karakteri oluşturun. Nasıl yapacağınızı bilmiyorsanız şu konu anlatımlarına bakabilirsiniz:
1. http://forums.taleworlds.com/index.php?topic=130815.0 (İngilizce, detaylı anlatım)
2. http://forums.taleworlds.com/index.php/topic,329116.0.html (Türkçe çeviri, kısa anlatım)

  Karakterimizi oluşturdaktan sonra module_scripts.py dosyasını açıyoruz ve en sondaki ]'den önce bir iki satırbaşı yapıp şunları ekliyoruz:

Code:
 #DRAGOS mekan aktif pasif
   
   #script_mekan_pasif
   #Input: Pasiflestir.
   #Output: Pasiflestirildi.
   ("mekan_pasif",
   [
       (store_script_param, ":center", 1),
       (party_set_flags, ":center", pf_disabled, 1),
   ]),

   #script_mekan_aktif
   #Input: Aktiflestir.
   #Output: Aktiflestirildi.
   ("mekan_aktif",
   [
       (store_script_param, ":center", 1),
      (party_set_flags, ":center", pf_disabled, 0),
   ]),

  Module_simple_triggers.py'ye geçiyoruz.

Code:
#DRAGOS mekan aktif pasif
   
   (0.1,
   [
       (try_for_range, ":center", centers_begin, centers_end),
          (store_distance_to_party_from_party, ":dist", ":center", "p_main_party"),
         (party_get_skill_level, ":skl_level", "p_main_party", skl_spotting),
         (val_sub, ":dist", ":skl_level"),
         (lt, ":dist", 10),
         (assign, ":chosen_center", ":center"),
         (party_set_flags, ":chosen_center", pf_disabled, 0),
      (try_end),
   ])

  Module system'imize herhangi bir mekanı aktif/pasif yapmayı sağlayacak kodları ekledik. Bu kodlar cdvader'in İngilizce forumda paylaştığı şu mesajdan alınmıştır:
http://forums.taleworlds.com/index.php/topic,8652.msg2037943.html#msg2037943
  Kardeş Kanı modunda bende benzeri bir şeyler yazmıştım ama cdvader'in kodları daha kapsamlı olduğu için alıntı yaparak mesajını refere etmeye karar verdim. Daha fazlası için linki ziyaret edin.

  Şimdi module_parties.py'ye gidin ve en alta şu satırı ekleyin:

Code:
#DRAGOS mekan aktif pasif

("arazi", "Arazi",  icon_training_ground|pf_hide_defenders|pf_is_static|pf_always_visible|pf_label_medium, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(30, 10),[], 100),

  Daha sonra module_scenes.py'ye girin ve yine en alta ekleyin:

Code:
#DRAGOS mekan aktif pasif

("arazi",sf_generate,"none", "none",(0,0),(100,100),-100,"0x000000125b00333202022d0800001926030007hd00000000",[],[],"outer_terrain_plain"),

  0x000000125b00333202022d0800001926030007hd00000000 kısmını oyun içinde Terrain kısmını kullanarak yeni bir arazi kodu ile değiştirin. Şimdi tekrar module_scripts.py'ye dönelim ve şunu bulalım:

Code:
(eq, "$g_encountered_party", "p_zendar"),
           (jump_to_menu, "mnu_zendar"),
         (else_try),

  Bunun hemen altına şu kodu ekleyin:

Code:
         (else_try),
           (eq, "$g_encountered_party", "p_arazi"),
           (jump_to_menu, "mnu_arazi"),
         (else_try),

  Ve module_game_menus.p'yi açıp en alta şunu ekleyin:

Code:
#DRAGOS mekan aktif pasif

  (
    "arazi",mnf_disable_all_keys,
    "Arazine geldin. Ne yapmak istersin?",
    "none",
    [],
    [
      ("enter",[],"Gir", 
      [
        (jump_to_scene,"scn_arazi"),
        (change_screen_mission),
      ]),
      ("leave",[],"Yolculuga devam et",[(change_screen_return)]),
    ]
  ),

  Böylece arazi kodlu mekanımızı ve bu mekana ait menümüz eklendi. Mekan eklemeyle ilgili detaylı anlatım için HyperCharge'ın şehir ekleme koduna buradan ulaşabilirsiniz:
http://forums.taleworlds.com/index.php/topic,284464.msg7294184.html#msg7294184
  Mekanımızı ekledikten sonra emlakçımıza module_dialogs.py aracılığıyla şöyle bir dialog tanımlayabiliriz mesela:

Code:
#DRAGOS mekan aktif pasif

[trp_EMLAKCI, "start", [], "Ne istemistiniz?", "a_1",[]],
  [trp_EMLAKCI|plyr, "a_1", [(store_troop_gold, ":cur_gold", "trp_player"),(ge, ":cur_gold", 500)], "Arazi satin almak istiyorum.", "close_window",[(troop_remove_gold, "trp_player", 500),(call_script, "script_mekan_aktif", "p_arazi")],
  [trp_EMLAKCI|plyr, "a_1", [], "Hic, oylesine baktim.", "close_window",[],

  1. (store_troop_gold, ":cur_gold", "trp_player"),(ge, ":cur_gold", 500) karakterimizde 500 dinar olup olmadığını kontrol eder.
  2. (troop_remove_gold, "trp_player", 500) karakterimizden 500 altın alır.
  3. (call_script, "script_mekan_aktif", "p_arazi") Arazimizi haritada aktif eder, böylece artık araziyi haritada görür ve oraya gidebiliriz. Aynı şekilde bir mekanı pasif hale geçirmek için de (call_script, "script_mekan_pasif", "p_arazi") kodunu kullanabiliriz.

  Aslında emlak sistemi bahane, mekan aktif/pasif etme kodları ile modunuza birçok farklı özellik ekleyebilirsiniz. Teşekkür kısmında aşağıdaki isimlere yer vermeyi unutmayınız:
1. cdvader
2. Dragos

  Unuttuğum bir şey yoktur umarım, emlak sisteminiz hayırlı olsun :smile:

Edit: En alta ekleyin dediklerimi hep en alttaki ]'den önce eklemelisiniz, unutmayın.
 
Back
Top Bottom