Mount&Blade Ders Haritası (Grup Büyüklüğünü Değiştirme)

Users who are viewing this thread

Konu gayet açıklayıcı ve yararlı olmuş ancak aynı konular tekrar tekrar açılmaya başladı

Yinede emeğiniz için teşekkürler ve gerçekten ok iyi açıklamışsınız
 
İlginiz için teşekkür ederim, konu sabitlenmedikce başlıklar açılmaya devam eder yanlız benim işlerim çok yoğundu tekrardan foruma dönmekten çok mutluyum inş. en kısa zamanda en güncel, hatasız ve özgün derslerle yine yardımcı olabileceğim.
 
Aralara benim mesaj sıkışmış :grin: sildim yeniden yazayım .
Edit mod çok işime yaradı sağol.

Yalnız birde benim resimleri silmiştim yenisini yaptım onları eklersen iyi olur.
http://forums.taleworlds.com/index.php/topic,218938.0.html
 
modül yüklemede şöyle bir hata veriyor.
Program toplu iş dosyası olarak tanımlanmıyor.
phyton iç yada dış komut çalıştırılabilir.
C:razz:rogram Files\Mount blade warband\Module System 1.134\*.pyc bulunamadı.
 
Bugünlerde tekrardan aktif olmaya başlayacam, düzenlemeleri yapıcam, bu uzun aradan dolayı özür dilerim, ufak bir cenaze merasimimiz olduda. İyi forumlar dilerim.

Edit: Resimler güncellenmiştir. Bilgi için teşekkür ederim :smile:
 
Tuz madeninde otomatik eşya güncelleştirilmesi eklendi kod düzeltildi. İstediğiniz kodları bana belirtirseniz ben daha çok yardımcı olabilirim, yeni derslerin üzerinde çalışıyorum.
 
Evet arkadaşlar, mod isteklerine baktığımda Deniz savaşlarının büyük bir istek olduğunu görüyorum.
Warband için yapılmış bir çok kodlama var fakat fire&sword da kodların çoğu değiştiği için sorunlar vermekte.
Bende sizlere bunları derleyip bir döküman oluşturarak yardımcı olmak istedim.

Değiştirilecek dosyalar;
Code:
module_scenes.py
module_party_templates.py
module_parties.py
module_constants.py
module_triggers.py
module_game_menus.py
module_mission_templates.py
Öncelikle sahne dosyalarına ihtiyacımız var. Sahne Dosyalarını İndir

İndirdiğimiz dosyanın içindeki;
Code:
scn_sea_1.sco
scn_sea_2.sco
scn_sea_4.sco
dosyalarını "Mount&Blade Fire and Sword/Modules/"Modülünüz"/SceneObj" içine atıyoruz.

Şimdi sahne dosyalarımızı oluşturalım. module_scenes.py dosyasını açıyoruz ve buluyoruz;
Code:
  ("oim_river_village_euro",sf_generate|sf_muddy_water,"none", "none", (0,0),(120,120),-100,"0x000000003000050040048d25000002fa800037fe00002347",
    [],[],"outer_terrain_plain"),

Hemen altına bunları ekliyoruz;
Code:
  ("sea_1",sf_generate,"none", "none", (0,0),(240,240),-0.5,"0x0000000030000000c00d2348000000008000000000000000",
   [],[]),
  ("sea_4",sf_generate,"none", "none", (0,0),(240,240),-0.5,"0x0000000030000000c00d2348000000008000000000000000",
   [],[]),
  ("sea_2",sf_generate,"none", "none", (0,0),(240,240),-0.5,"0x0000000030000000c00d2348000000008000000000000000",
   [],[]),

Açıklayalım;
sea_1 = Sahne dosyamızın adı.
0x00000000 = Sahne dosyamızın arkaplanı.

Bu dosyadaki işimiz bitti kapatıp çıkıyoruz.

Şimdi öncelikle çıkacak olan birliğimizi ayarlayalım. module_party_templates.py dosyasını açıyoruz ve aşağıdakini buluyoruz;
Code:
  ("sea_raiders", "Brigands",icon_axeman|carries_goods(2),0,fac_outlaws,bandit_personality,[(trp_sea_raider,3,60)]),

Hemen altına ekliyoruz;
Code:
  ("sea_raiders_ships","Sea Raiders",icon_ship|pf_is_ship|carries_goods(2),0,fac_outlaws,bandit_personality,[(trp_sea_raider,5,50)]),

Açıklayalım;
sea_raiders_ships = Bizim birliğimizin ID'si.
Sea Raiders = Birliğimizin ismi.
icon_ship = Görünümü.
pf_is_ship = Eğer bunu yapmazsak denizde gidemezler.
fac_outlaws = Birliği
(trp_sea_raider,5,50) = Burada birliğimizin askerlerini ve sayısını ayarladık. 5 ile 50 arasında olacak bu durumda.

Buradaki işlemimizde bitti, şimdi sırada parti oluşturma var.

Parti oluşturmak için module_parties.py dosyamızı açıyoruz. Burası bizim birliklerimizin çıkacakları yerler.

Şimdi aşağıdakini buluyoruz;
Code:
  ("forest_bandit_spawn_point_1", "{!}forest bandit sp 1", pf_disabled|pf_is_static, no_menu, pt_none, fac_outlaws,0,ai_bhvr_hold,0,(-34, -43.77),[]),

Hemen altına ekliyoruz;
Code:
 ("ship_raider_spawn_point_1"   ,"the_ocean",pf_disabled|pf_is_static, no_menu, pt_none, fac_outlaws,0,ai_bhvr_hold,0,(21.72, -105.81),[(trp_looter,15,0)]),
 ("ship_raider_spawn_point_2"   ,"the_ocean",pf_disabled|pf_is_static, no_menu, pt_none, fac_outlaws,0,ai_bhvr_hold,0,(-78.97, 38.38),[(trp_looter,15,0)]),

Açıklayalım;
ship_raider_spawn_point_x = Burası bizim spawn pointlerimizin ID'leri.
pf_disabled = Görünmez.
pf_is_static = Kımıldamaz.

Fire&Sword'da sadece 2 tarafta deniz olduğu için 2 tane ayarladım, siz dilediğinizce arttırabilirsiniz.

Burada işimiz bitti artık. Sonraki evreye geçelim.

Şimdi ufak kayıtlar yapacağız. module_constants.py dosyamızı açıp bulalım;

Code:
num_max_zendar_manhunters = 10

Hemen altına ekleyelim;
Code:
num_max_sships = 25

Burada sadece çıkacak birlikleri limitliyoruz. 25 birlik varsa fazlasını çıkartmasın diye.

Aynı dosya içerisinde buluyoruz;
Code:
slot_center_culture     = 19

Hemen altına ekliyoruz;
Code:
slot_town_near_shore    = 599

Burada ise 599 tamamen kafamdan salladığım bir rakam bir önemi yok, bu slotu sadece yakında deniz olan şehirlerde aktif olsun diye ekledik.

Şimdi artık birliklerimizi spawn edebiliriz.

module_triggers.py dosyasını açıyoruz.

Buluyoruz;
Code:
#  [1.0, 96.0, ti_once, [], [[assign,"$peak_dark_hunters", 10]]],
#  
#  (10.1, 0, 0.0, [],
#                     [
#                         (assign, "$pin_party_template", "pt_dark_hunters"),
#                         (assign, "$pin_limit", "$peak_dark_hunters"),
#                         (call_script,"script_cf_spawn_party_at_random_town_if_below_limit"),
#                    ]),

Altına ekliyoruz;
Code:
  (10.1, 0, 0.0, [
      (store_num_parties_created, reg(3),"pt_sea_raiders_ships"),
      (lt, reg(3), num_max_sships),
      (store_num_parties_of_template, reg(2), "pt_sea_raiders_ships"),
      (lt, reg(2), 3)
      ], [
          (set_spawn_radius, 1),

	   (store_random_in_range,":ssp",0,2),
	   (try_begin),
	     (eq, ":ssp", 0),
	     (assign,":ssp","p_ship_raider_spawn_point_1"),
	   (else_try),
	     (assign,":ssp","p_ship_raider_spawn_point_2"),
	   (try_end),
          
          (spawn_around_party, ":ssp", "pt_sea_raiders_ships"),
          ]),

Şimdi açıklayalım.
10.1 = Bizim yaratma süremiz. 10.1 ideal bence.
store_num_parties_created = Burada oluşturduğumuz parti sayısını reg(3) olarak kayıt ediyoruz.
lt, reg(3), num_max_sships = Burada hani demin demiştim ya 25 birlikden fazlası olmasın diye, işte burada reg(3) 25 den küçük ise devreye girsin demek.
store_num_parties_of_template = Burada parti template'inden kaç tane olduğunu kayıt ediyoruz.
store_random_in_range = Burada ":ssp" yi 0 ile 2 arasında bir rakam olarak belirliyoruz. (Neden? Çünkü sadece 2 tane spawn point yarattık ((:smile:
eq, ":ssp", 0 = Burada eğer ":ssp" yani demin belirlediğimiz değer 0 ise 1. spawn noktasını kullan diyoruz.
else_try = Eğer 0 değil ise! 2. spawn noktasını kullan diyoruz.
spawn_around_party, ":ssp" ... = Burada partimizin spawn olmasını sağlıyoruz.

Artık spawn olayıda tamam, kapatıp çıkalım.

Evet dersimizin en karmaşık noktasına geldik! Buradan sonra çok dikkatli olunuz.

module_game_menus.py dosyasını açalım ve bunu bulalım.

Code:
      ("encounter_attack",[
	      (eq, "$g_ai_wagenburg_is_on", 0),
          (eq, "$encountered_party_friendly", 0),
          (neg|troop_is_wounded, "trp_player"),
##          (store_troop_health,reg(5)),
##          (ge,reg(5),5),
          ],"Charge the enemy.",[

Şimdi "(ge,reg(5),5)," ile "],"Charge the enemy.",[" satırlarının arasına şunu ekleyelim;
Code:
            (party_get_current_terrain, ":terrain", "p_main_party"),
            (neq,":terrain",0),

Hemen biraz aşağıya giderek, kodun sonunu bulalım.
Code:
				# illness check
				(call_script, "script_remove_health"),
                                (assign, "$g_next_menu", "mnu_simple_encounter"),
                                (jump_to_menu, "mnu_battle_debrief"),
                                (change_screen_mission),
                                ]),

Biraz altına şunu ekleyelim;
Code:
      ("encounter_attack",[
	      (eq, "$g_ai_wagenburg_is_on", 0),
          (eq, "$encountered_party_friendly", 0),
          (neg|troop_is_wounded, "trp_player"),
            (party_get_current_terrain, ":terrain", "p_main_party"),
            (eq,":terrain",0),
          ],"Close in and board the enemy.",[
                                (assign, "$g_battle_result", 0),
                                (assign, "$g_engaged_enemy", 1),
                                (call_script, "script_calculate_renown_value"),
                                (call_script, "script_calculate_battle_advantage"),
                                (set_battle_advantage, reg0),
                                (set_party_battle_mode),
                                (try_begin),
                                  (eq, "$g_encounter_type", enctype_fighting_against_village_raid),
                                  (assign, "$g_village_raid_evil", 0),
                                  (set_jump_mission,"mt_village_raid"),
                                  (party_get_slot, ":scene_to_use", "$g_encounter_is_in_village", slot_castle_exterior),
                                  (jump_to_scene, ":scene_to_use"),
                                (else_try),
                                  (eq, "$g_encounter_type", enctype_catched_during_village_raid),
                                  (assign, "$g_village_raid_evil", 0),
                                  (set_jump_mission,"mt_village_raid"),
                                  (party_get_slot, ":scene_to_use", "$g_encounter_is_in_village", slot_castle_exterior),
                                  (jump_to_scene, ":scene_to_use"),
                                (else_try),
                                  (set_jump_mission,"mt_ship_battle"),
                                    (try_begin),
                                      (val_add,reg10,reg11),
                                      (gt,reg10,60),
                                      (jump_to_scene, "scn_sea_4"),
                                    (else_try),
                                      (val_add,reg10,reg11),
                                      (gt,reg10,30),
                                      (jump_to_scene, "scn_sea_2"),
                                    (else_try),
                                      (jump_to_scene, "scn_sea_1"),
                                    (end_try),
                                (try_end),
				# illness check
				(call_script, "script_remove_health"),
                                (assign, "$g_next_menu", "mnu_simple_encounter"),
                                (jump_to_menu, "mnu_battle_debrief"),
                                (change_screen_mission),
                                ]),

Açıklayalım;
(eq, ":terrain", 0), = Burada eğer denizde isek diyoruz. Biraz önce değilsek demiştik.
Altta eklenenler ise sadece sahneler.

Evet şimdi kodun 2. önemli kısmına geçelim;

Alttakini buluyoruz;
Code:
      ("join_attack",[
#          (neq, "$encountered_party_hostile", 0),
           (neg|troop_is_wounded, "trp_player"),
##          (store_troop_health,reg(5),"trp_player"),
##          (ge,reg(5),20),
          ],"Charge the enemy.",[
                                (party_set_next_battle_simulation_time, "$g_encountered_party", -1),
                                (assign, "$g_battle_result", 0),
                                (call_script, "script_calculate_renown_value"),
                                (call_script, "script_calculate_battle_advantage"),
                                (set_battle_advantage, reg0),
                                (set_party_battle_mode),
                                (set_jump_mission,"mt_lead_charge"),
                                (call_script, "script_setup_random_scene"),
                                (assign, "$g_next_menu", "mnu_join_battle"),
                                (jump_to_menu, "mnu_battle_debrief"),
                                (change_screen_mission),
                                ]),

Ve yine "(ge,reg(5),20), ile ],"Charge the enemy.",[" arasına ekliyoruz;
Code:
            (party_get_current_terrain,":terrain","p_main_party"),
            (neq,":terrain",0),

Kodun bitişini buluyoruz;
Code:
                                (set_jump_mission,"mt_lead_charge"),
                                (call_script, "script_setup_random_scene"),
                                (assign, "$g_next_menu", "mnu_join_battle"),
                                (jump_to_menu, "mnu_battle_debrief"),
                                (change_screen_mission),
                                ]),

Hemen altına ekliyoruz;
Code:
      ("join_attack",[
           (neg|troop_is_wounded, "trp_player"),
            (party_get_current_terrain,":terrain","p_main_party"),
            (eq,":terrain",0),
          ],"Board the enemy.",[
                                (party_set_next_battle_simulation_time, "$g_encountered_party", -1),
                                (assign, "$g_battle_result", 0),
                                (call_script, "script_calculate_renown_value"),
                                (call_script, "script_calculate_battle_advantage"),
                                (set_battle_advantage, reg0),
                                (set_party_battle_mode),
                                (set_jump_mission,"mt_ship_battle"),
                                  (try_begin),
                                    (val_add,reg10,reg11),
                                    (gt,reg10,60),
                                    (jump_to_scene, "scn_sea_4"),
                                  (else_try),
                                    (val_add,reg10,reg11),
                                    (gt,reg10,30),
                                    (jump_to_scene, "scn_sea_2"),
                                  (else_try),
                                    (jump_to_scene, "scn_sea_1"),
                                  (end_try),
                                (assign, "$g_next_menu", "mnu_join_battle"),
                                (jump_to_menu, "mnu_battle_debrief"),
                                (change_screen_mission),
                                ]),

Şimdi sadece limandan gemileri almak kaldı.

Aşağıdakini buluyoruz;
Code:
      ("sail_from_port",[(party_slot_eq,"$current_town",slot_party_type, spt_town),
                         (eq, "$cheat_mode", 1),
#                         (party_slot_eq,"$current_town",slot_town_near_shore, 1),
                         ],"Sail from port.",
       [(assign, "$g_player_icon_state", pis_ship),
        (party_set_flags, "p_main_party", pf_is_ship, 1),
        (party_get_position, pos1, "p_main_party"),
        (map_get_water_position_around_position, pos2, pos1, 6),
        (party_set_position, "p_main_party", pos2),
        (assign, "$g_main_ship_party", -1),
        (change_screen_return),
        ]),

Aşağıdaki ile değiştiriyoruz;
Code:
#This active when the town near the water!
      ("sail_from_port",[
          #Water Fix By Porshy
          (party_slot_eq,"$current_town",slot_party_type, spt_town),
          (eq, "$entry_to_town_forbidden", 0),
          (party_get_position, pos1, "p_main_party"),
          #(str_store_string, s1, pos1), #Store first position!

          (map_get_water_position_around_position, pos2, pos1, 6),
          (party_set_position, "p_main_party", pos2),
          (party_get_current_terrain, ":terrain", "p_main_party"), #Take Terrain Information!

          #Try to check terrain!
          (try_begin),
            (this_or_next|eq, ":terrain", 0),
            (             eq, ":terrain", 8),
            (party_set_slot, "$current_town", slot_town_near_shore, 1),
          (else_try),
            (party_set_slot, "$current_town", slot_town_near_shore, 99),
          (try_end),

          #Send back!
          (party_set_position, "p_main_party", pos1),
          (party_slot_eq, "$current_town", slot_town_near_shore, 1),
          #Water Fix End
        ], "Sail from port", [
            (assign, "$g_player_icon_state", pis_ship),
            (party_set_flags, "p_main_party", pf_is_ship, 1),
            (party_get_position, pos1, "p_main_party"),
            (map_get_water_position_around_position, pos2, pos1, 6),
            (party_set_position, "p_main_party", pos2),
            (assign, "$g_main_ship_party", -1),
            (change_screen_return),
        ]),

Açıklayalım;
Ben burada sadece her kaleye girdiğinde adamı denizin olduğu tarafa atıp orasının deniz olup olmadığını kontrol ettim, eğer deniz ise otomatik olarak "Limandan Gemiyle Ayrıl" seçeneğini aktif ettirip adamı eski pozisyonuna getirtdim.



Son eklenecek olan ise daha önce buraya atmayı unutmuşum; module_mission_templates.py açıyoruz ve son "]" işaretinden önce şunları ekliyoruz;

Code:
      ("ship_battle", mtf_battle_mode,-1, "You close in and board the enemy ships", [
          (0,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (1,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (2,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (3,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (4,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (5,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (6,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (7,mtef_attackers|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
          (8,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (9,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (10,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (11,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (12,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (13,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (14,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
          (15,mtef_defenders|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
        ], [
            #Banner Fix
            common_battle_mission_start,
            common_battle_init_banner,

            (ti_on_agent_spawn, 0, 0, [], [
                (store_trigger_param_1, ":agent_no"),
                (call_script, "script_agent_reassign_team", ":agent_no"),
            ]),
    
            (0, 0, ti_once, [], [
                (assign,"$battle_won",0),
                (assign,"$defender_reinforcement_stage",0),
                (assign,"$attacker_reinforcement_stage",0),
                (assign,"$g_presentation_battle_active", 0),
                (call_script, "script_place_player_banner_near_inventory"),
                (call_script, "script_combat_music_set_situation_with_culture"),
            ]),

           common_music_situation_update,
           common_battle_check_friendly_kills,

           (1, 0, 5, [
               (lt,"$defender_reinforcement_stage",2),
               (store_mission_timer_a,":mission_time"),
               (ge,":mission_time",10),
               (store_normalized_team_count,":num_defenders", 0),
               (lt,":num_defenders",6),
            ], [(add_reinforcements_to_entry,0,7),(val_add,"$defender_reinforcement_stage",1)]),
      
           (1, 0, 5, [
               (lt,"$attacker_reinforcement_stage",2),
               (store_mission_timer_a,":mission_time"),
               (ge,":mission_time",10),
               (store_normalized_team_count,":num_attackers", 1),
               (lt,":num_attackers",6),
            ], [(add_reinforcements_to_entry,3,7),(val_add,"$attacker_reinforcement_stage",1)]),
      
           common_battle_check_victory_condition,
           common_battle_victory_display,
           common_battle_tab_press,

           (1, 4, ti_once, [(main_hero_fallen)], [
               (assign, "$pin_player_fallen", 1),
               (str_store_string, s5, "str_retreat"),
               (call_script, "script_simulate_retreat", 10, 20),
               (assign, "$g_battle_result", -1),
               (set_mission_result,-1),
               (call_script, "script_count_mission_casualties_from_agents"),
               (finish_mission,0)
            ]),
        ]),



Sorun almamak için variables.txt içine bunları ekleyelim;
Code:
battle_won
g_presentation_battle_active

Burada düzelttiğim kısım şöyle ki, gemi savaşı sırasında takımındakiler üzerinde banner gözükmüyordu, banner fix kısmında düzeltmeler yapıldı.

Umarım yardımcı olabilmişimdir. Dediğim gibi ufak bir sorun var ama onuda çözüp buraya koyacağım.
 
tabi;

module_scripts.py içerisinde bu kısmı bulacaksın.
Code:
      (faction_set_slot, "fac_kingdom_1",  slot_faction_culture, "fac_culture_1"),
      (faction_set_slot, "fac_kingdom_1",  slot_faction_leader, "trp_kingdom_1_lord"),
	  (troop_set_slot, "trp_kingdom_1_lord", slot_troop_renown, 1200),

Buradaki trp_kingdom_1_lord kısımlarını, trp_player olarak değişirsen, 1. krallık lordu sen olursun :smile:
 
Hayır öyle yapınca oyunun tüm dengeleri sarsılır ve iyice karışır. Kodu deneyin görürsünüz önce kral gözüküyorsunuz sonra aradan birazcık zaman geçiyor hemen krallık ismi filan bişeler çıkıyor senin destekçilerin filan derken karışıyor. Bu kral olarak başlama kodları tam olarak çıkarılmalı artık.
 
Hyper arkadaşım konuyu hortlatıp durmasan  :?:  Eğer çok merak ediyorsan bir kodcu arkadaşa sorarsın özel mesajla. Konular açıyorsun , her konuya mesaj atıyorsun. Ben öneride bulundum ama sen nasıl istersen öyle yap.
 
2Roll said:
Hyper arkadaşım konuyu hortlatıp durmasan  :?:  Eğer çok merak ediyorsan bir kodcu arkadaşa sorarsın özel mesajla. Konular açıyorsun , her konuya mesaj atıyorsun. Ben öneride bulundum ama sen nasıl istersen öyle yap.

Burası forum arkadaşım kuralları olduğunu bende bilirim.Adı üzerinde forum istediğini sorabilirsin kurallara uymak şartıyla.Neyse konu amacından sapmasın.
 
Bende konuşma kayıtları var istersen veririm. İletişim kurduğum site:

totalwar-turkiye.com
 
Kavga değil sakin ol. Sadece tartışma fakat tartışma dediğim de fikir paylaşımı benzeri bişeler sorun yok.
 
Back
Top Bottom