Ders: Çoklu Oyuna Yeni Taraf Eklemek

Users who are viewing this thread

Konunun aslı
Dersin sahibi: mr.master
Çeviren        : Tatari_okan

Bu ders çoklu oyuna yeni taraf(faction) eklemenin nasıl yapılacağını anlatıyor. Üzerinde değişiklik yapacağımız dört modulesystem dosyası var sadece:
Module_factions
Module_troops
Module_presentations
Module_scripts

Module Factions
Öncelikle module_faction dosyasını açın. Bu kısım gayet basit ve tek satırlık bir kod gerektiriyor. Bu kodu kopyalayın:
Code:
 ("kingdom_7",  "Finland",  0, 0.9, [("outlaws",-0.05),("peasant_rebels", -0.1),("deserters", -0.02),("mountain_bandits", -0.05),("forest_bandits", -0.05)], [], 0xDDDD33),
sarranid faction’unun kodunun altına yapıştırın:
Code:
("kingdom_6",  "Sarranid Sultanate",  0, 0.9, [("outlaws",-0.05),("peasant_rebels", -0.1),("deserters", -0.02),("mountain_bandits", -0.05),("forest_bandits", -0.05)], [], 0xDDDD33),
("kingdom_7",  "Finland",  0, 0.9, [("outlaws",-0.05),("peasant_rebels", -0.1),("deserters", -0.02),("mountain_bandits", -0.05),("forest_bandits", -0.05)], [], 0xDDDD33),
Tarafın adını istediğiniz gibi değiştirin. Bitirdikten sonra kaydedin, module_troops dosyasını açın.

Module Troops
Module_troops’u açtığınıza göre  “#Multiplayer ai troops” diye aratın. Bu tarz bir kod öbeğiyle karşılaşacaksınız:

Code:
["swadian_crossbowman_multiplayer_ai","Swadian Crossbowman","Swadian Crossbowmen",tf_guarantee_all,0,0,fac_kingdom_1,
   [itm_bolts,itm_crossbow,itm_sword_medieval_a,itm_tab_shield_heater_b,
    itm_leather_jerkin,itm_leather_armor,itm_ankle_boots,itm_footman_helmet],
   def_attrib|level(19),wp_melee(90)|wp_crossbow(100),knows_common|knows_ironflesh_4|knows_athletics_6|knows_shield_5|knows_power_strike_3,swadian_face_young_1, swadian_face_old_2],
İstediğiniz değişiklikleri yapmadan önce var olan ünite tanımlıklarından birini kopyalayıp son sarranid ünitesinin kodunun altına yapıştırın. Şimdi istediğiniz gibi değişiklik yapabilirsiniz. Ben "swadian crossbowman_multiplayer_ai"yi kullanacağım. Yaptığım şey, kodu kopyalayıp son sarranid ünitesinin altına yapıştırmaktan ibaret. Bunu yaptıktan ünitenin tanımlığını değiştirmek isteyeceksinizdir. Ben "finnish_rifleman_multiplayer_ai" diye değiştireceğim. Ünitenin tanımlığında "_multiplayer_ai" olması gerektiğini unutmayın; çünkü bu çoklu oyundaki bot olduğunu belirtiyor bu ünitenin. Şimdi değiştirmek isteyeceğiniz yeni ünitenin oyundaki görünen adını değiştireceğiz. İki çeşit ad var: İlki tekil ünite için, ikincisi çoğul ünite için. "Swadian Crossbowman" kısmını istediğiniz isimle değiştirin. Ben "Finnish Rifleman" diye değiştiriyorum. Şimdi ikinci ismi değiştirelim: "Swadian Crossbowmen". Bunu "Finnish Riflemen” diye değiştireceğim. Böyle görünecek:
Code:
["finnish_rifleman_multiplayer_ai","Finnish Rifleman","Finnish Riflemen",tf_guarantee_all,0,0,fac_kingdom_1,
   [itm_cartridges,itm_cartridges,itm_pystykorva,itm_ukkopekka,
    itm_leather_jerkin,itm_leather_armor,itm_ankle_boots,itm_kypara],
   def_attrib|level(19),wp_melee(90)|wp_crossbow(120),knows_common|knows_ironflesh_4|knows_athletics_6|knows_shield_5|knows_power_strike_3,swadian_face_young_1, swadian_face_old_2],
Bu satırda değiştireceğimiz diğer şey:
Code:
 tf_guarantee_all,0,0,fac_kingdom_1,
Bunu bizim factionumuzun numarasıyla değiştireceğiz, yani 7’yle. Değiştirdikten sonra böyle görünecektir:
Code:
tf_guarantee_all,0,0,fac_kingdom_7,
İsterseniz ünitenin eşyalarını değiştirebilirsiniz, misal "itm_leather_jerkin"i "itm_eşyanın_tanmlık_adı"yla değiştirebilirsin. Bundan sonraki satırlarda ünitenin yeteneklerini değiştirebilirsiniz isterseniz; ama ben şimdilik onlarda bir değişiklik yapmayacağım. Çoklu oyundaki factionunuz için yeni üniteler eklemek isterseniz bu adımları tekrarlayın. Tedbirli olmak için şimdi dosyayı kaydedelim. Tebrikler, çoklu oyuna kendi factionunuz için başarıyla bot oluşturdunuz. Bundan sonraki adımda oyuncunun kullanabileceği üniteyi ayarlayacağız.

Aynı dosyada (module_troops) ”#Multiplayer troops” diye aratın. Bu tür satırlarla karşılaşacaksınız:
Code:
["swadian_crossbowman_multiplayer","Swadian Crossbowman","Swadian Crossbowmen",tf_guarantee_all,0,0,fac_kingdom_1,
   [itm_cartridges,itm_cartridges,itm_pystykorva,itm_ukkopekka,itm_kypara,itm_stickgrenade,itm_pystykorva,itm_sword_medieval_b_small,itm_tab_shield_heater_a,itm_red_shirt,itm_ankle_boots],
   def_attrib_multiplayer|level(19),wpe(90,60,180,90),knows_common|knows_ironflesh_2|knows_athletics_5|knows_shield_5|knows_power_strike_2|knows_riding_1,swadian_face_young_1, swadian_face_old_2],

Var olan kodu kopyalayın ve son sarranid ünitesinin altına yapıştırın, isterseniz değişiklik yapın. Bunun factionumuza yeni bot eklemekten pek bir farkı yok, tanımlıkta "_multiplayer_ai" yerine sadece "_multiplayer" olması dışında tabi.
Benimki böyle gözüküyor:
Code:
["finnish_rifleman_multiplayer","Finnish Rifleman","Finnish Riflemen",tf_guarantee_all,0,0,fac_kingdom_7,
   [itm_cartridges,itm_cartridges,itm_pystykorva,itm_ukkopekka,itm_kypara,itm_red_shirt,itm_ankle_boots],
   def_attrib_multiplayer|level(19),wpe(90,60,180,90),knows_common|knows_ironflesh_2|knows_athletics_5|knows_shield_5|knows_power_strike_2|knows_riding_1,swadian_face_young_1, swadian_face_old_2],
Tekrar söylüyorum, başka üniteler de eklemek istiyorsanız aynı adımları tekrarlayın ve istediğiniz değişiklikleri yapın. Şimdi kaydedin ve module_presentations’ı açın.

Module Presentations
Dosyayı açtığınıza göre "mesh_ui_kingdom_shield_6" diye aratın. Bu tür satırlarla karşılaşacaksınız:
Code:
(else_try),
        (eq, "$g_multiplayer_team_1_faction", "fac_kingdom_2"),
        (create_mesh_overlay, reg0, "mesh_ui_kingdom_shield_2"),
Bu kodu kopyalayın ve son kodun altına yapıştırın, böyle gözükecektir:
Code:
(else_try),
        (eq, "$g_multiplayer_team_1_faction", "fac_kingdom_1"),
        (create_mesh_overlay, reg0, "mesh_ui_kingdom_shield_6"),
(else_try),
        (eq, "$g_multiplayer_team_1_faction", "fac_kingdom_2"),
        (create_mesh_overlay, reg0, "mesh_ui_kingdom_shield_2"),
(try_end),
Şimdi "fac_kingdom_2”yi bizim factionumuzun numarasıyla değiştireceğiz. Benimki "fac_kingdom_7"ydi.
"mesh_ui_kingdom_shield_2”yi var olan altı taneden biriyle değiştirebilirsiniz. Ya da kendinizinkini oluşturursunuz. Ben var olanlardan birini kullanacağım. Benimki böyle oldu:
Code:
(else_try),
        (eq, "$g_multiplayer_team_1_faction", "fac_kingdom_7"),
        (create_mesh_overlay, reg0, "mesh_ui_kingdom_shield_1"),
(try_end),
Sayfanın biraz aşağısına gelirseniz, "$g_multiplayer_team_1_faction"un "$g_multiplayer_team_2_faction"a dönüşmesi dışında birebir aynı satırlarla karşılaşacaksınız. Üstte yaptığımız gibi, kopyalayın ve aynı işlemleri yapın, değişiklikleri factionunuza uydurun. Böyle:
Code:
(else_try),
        (eq, "$g_multiplayer_team_2_faction", "fac_kingdom_7"),
        (create_mesh_overlay, reg0, "mesh_ui_kingdom_shield_1"),
      (try_end),
Şimdi kaydedin ve module_scripts’i açın.

Module Scripts
Module_scripts’i açtığınıza göre "#Faction banners" diye aratın. Module_scripts’le işe başlamak gözünüzü korkutabilir. Bu tür satırlarla karşılaşacaksınız:
Code:
(faction_set_slot, "fac_kingdom_1", slot_faction_banner, "mesh_banner_kingdom_f"),
Bunu kopyalayıp son satırın altına yapıştırın. Böyle olacak:
Code:
(faction_set_slot, "fac_kingdom_6", slot_faction_banner, "mesh_banner_kingdom_e"),
(faction_set_slot, "fac_kingdom_7", slot_faction_banner, "mesh_banner_kingdom_e"),
"fac_kingdom_6”yı kendi factionunuzun numarasıyla değiştirin, benimki "fac_kingdom_7". Şimdi hangi armaları kullanacağını değiştirebiliriniz. Armaları olduğu gibi bırakabilirsiniz ya da openBRF’den bakıp ona göre değiştirebilirsiniz. Şimdi de "#script_determine_team_flags" diye aratın. Böyle bir satırla karşılaşacaksınız:
Code:
(else_try),
         (eq, ":team_faction_no", "fac_kingdom_2"),
         (assign, "$team_1_flag_scene_prop", "spr_headquarters_flag_vaegir")
Bunu kopyalayın ve altına yapıştırın
Code:
(else_try),
         (eq, ":team_faction_no", "fac_kingdom_6"),
         (assign, "$team_1_flag_scene_prop", "spr_headquarters_flag_vaegir"),
Bunun gibi,
Code:
(else_try),
         (eq, ":team_faction_no", "fac_kingdom_6"),
         (assign, "$team_1_flag_scene_prop", "spr_headquarters_flag_sarranid"),
(else_try),
         (eq, ":team_faction_no", "fac_kingdom_7"),
         (assign, "$team_1_flag_scene_prop", "spr_headquarters_flag_vaegir"),
       (try_end),
"fac_kingdom_7"nin sizin factionunuzun numarası olduğundan emin olun. Hangi flag’ı kullanacağını değiştirebilirsiniz. Misal "spr_headquarters_flag_vaegir" "spr_headquarters_flag_swadian"a değiştirtirilebilir. Sayfanın biraz aşağısına bakarsanız, aynı kodların "$team_1_flag_scene_prop" yerine "$team_2_flag_scene_prop" olan hallerini göreceksiniz. Gene satırları kopyalayıp kodların sonuna yapıştırın, kendi factionunuza göre düzenleyin.
Şimdi arayacağımız şey:
Code:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_warhorse", "trp_sarranid_mamluke_multiplayer"),
Yapmak istediğimiz şey, bir ünite için hangi eşyaların kullanılabilir olduğunu ayarlamak. Örneğin:
Code:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_warhorse", "trp_sarranid_mamluke_multiplayer"),
#Finnish Rifleman
Şimdi module_troops’ta üniteleriniz için hangi eşyaları kullandığınızı kontrol edin. Örneğin ben finnish rifleman’ım için bu eşyaları kullanılabilir yaptım.
Code:
[itm_cartridges,itm_cartridges,itm_pystykorva,itm_ukkopekka,itm_kypara,itm_red_shirt,itm_ankle_boots],
Şimdi bu eşyaları çoklu oyun için gerçekten kullanılabilir yapacağım. Böyle bir kod ekleyeceğim:
Code:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_cartridges", "trp_finnish_rifleman_multiplayer"),
#Finnish Rifleman’ın altına. Böyle olacak:
Code:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_warhorse", "trp_sarranid_mamluke_multiplayer"),
#Finnish Rifleman
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_cartridges", "trp_finnish_rifleman_multiplayer"),
Aynı şeyleri tekrarlayın, tabi eşyanın tanımlık ismini değiştirerek. Misal "itm_cartridges"i "itm_leather_jerkin"e değiştirin. "trp_finnish_rifleman_multiplayer"yi kendi ünitenizin tanımlık adıyla değiştirin tabi. Misal "trp_benim_ünitem_multiplayer". Aynı adımları tekrarlayarak ünitenizin alabileceği eşyaları ayarlayın. Size ilk satırları silah,kalkan ve ok gibi eşyalar için kullanmanızı öneririm. Sonra bir satır atlayıp zırhlar, miğferler ve elçekler gibi eşyalar, sonra bir satır daha atlayıp daha eklemeniz gereken ne varsa onlar. Böyle görünecek:

Code:
Finnish Rifleman
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_cartridges", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_pystykorva", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_ukkopekka", "trp_finnish_rifleman_multiplayer"),

      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_red_shirt", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_padded_cloth", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_armor", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_haubergeon", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_ankle_boots", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_boots", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_leather_gloves", "trp_finnish_rifleman_multiplayer"),
      (call_script, "script_multiplayer_set_item_available_for_troop", "itm_kypara", "trp_finnish_rifleman_multiplayer"),

Şimdi kaydedin ve toparlayın. Her şeyi doğru yaptıysanız ki iyi açıkladığıma inanıyorum bir sorun çıkmayacaktır. Yapması zormuş gibi görünse de aslında kolay. Umarım bu ders fazla karmaşık olmamıştır. :grin: Sorun çıkarsa yaptıklarınızı iki kere kontrol edin, her şeyi olması gerektiği gibi yaptığınızdan ve dosyaları kaydettiğinizden emin olun. Dosyaları yeniden ve yeniden gözden geçirin.

Eşyaların Çoklu Oyunda Kullanılabilir Yapılması
İstekten dolayı bu bölümü da derse eklemeyi uygun gördüm. Çoklu oyuna yeni eşya eklemek nispeten kolay. Bu bölümde gereksinim duyacağımız tek dosya module_script çünkü eşyalarınız zaten module_items'e eklediğinizi varsayıyorum.

Module Scripts
Öncelikle module scripts'i açın tabi ki.
Code:
(item_set_slot, "itm_heavy_crossbow", slot_item_multiplayer_item_class, multi_item_class_type_bow),
kodunu aratın.
"itm_your_item_id" kullanılacak eşya ve multi_item_class_type_bow eşyanın ne tür bir eşya olduğu. Bir çok çeşidi var türlerin, türleri aşağıda listeledim:
Code:
arrow
bolt
bow
sword
two_handed_sword
axe
two_handed_axe
blunt
picks
cleavers
spear
lance
small_shield
throwing
throwing_axe
light_armor
light_foot
light_helm
glove
horse
Benim eşyam bir tüfek, yay kategorisine giriyor. Şöyle gözüküyor:
Code:
      (item_set_slot, "itm_pystykorva", slot_item_multiplayer_item_class, multi_item_class_type_bow),
Şu an eşya çoklu oyunda kullanılabilir ama bir sınıfa da atanması gerekiyor. Ben bu tüfeği Finnish rifleman'ım için kullanılabilir yapmayı düşünüyorum. Finnish rifleman'ın eşya girdilerini arayacağım ve bunu oraya ekleyeceğim. Siz de eşya eklemek istediğiniz üniteyi bulun, Swadian crossbowman'i örneğin. Ben Finnish rifleman ünitesine ekleyeceğim. Şimdi böyle bir girdi ekliyoruz:
Code:
(call_script, "script_multiplayer_set_item_available_for_troop", "itm_pystykorva", "trp_finnish_rifleman_multiplayer"),
Eşya kodunu istediğiniz eşyayla değiştirin. Benim için itm_pystykorva idi bu. Sonra bu satırı trp_finnish_rifleman_multiplayer hangi üniteye eşyayı verecekseniz ona göre değiştirin. Swadian crossbowman'i ele alırsak, böyle gözükecektir:
Code:
trp_swadian_crossbowman_multiplayer
Ünitenin adının sonuna _multiplayer eklemeyi unutmayın. Artık istediğiniz eşyayı istediğiniz ünite için seçilebilir yapabilirsiniz.
 
eline sağlık tatari tamamını incelemedim daha ama gayet açıklayıcı ve net bir ders olmuş bi ara denemek lazım :grin:
 
Yaptım ama module.bat olur olmadık hatalar veriyor syntax errorlar falan vermeye basladı.

Birde bu ayarladıgımız troops.py falan bunları nasıl nativemize aktaracagız.
 
anason said:
Yaptım ama module.bat olur olmadık hatalar veriyor syntax errorlar falan vermeye basladı.

Birde bu ayarladıgımız troops.py falan bunları nasıl nativemize aktaracagız.

Native'ye aktarmak için,direk modülü native için çalıştır. Syntax error verir,çünkü dikkatli yazmamışsın kodları :wink: Bir yerde tırnak işareti veya virgülü yanlış,çok veya az kullanmışsın :smile:
 
<knight> said:
Native'ye aktarmak için,direk modülü native için çalıştır. Syntax error verir,çünkü dikkatli yazmamışsın kodları :wink: Bir yerde tırnak işareti veya virgülü yanlış,çok veya az kullanmışsın :smile:

baktım da modulese Nativefactions.txt Nativetroops.txt falan bunlar geldi dedim heralde bunlarımı atıcaz icine. gerci bunları icine atınca coklu oyundan oyun kurdugum zaman kendi kendine reset atmaya basladı :grin: iyiki yedegini almısım.
 
Peki Syntax Erorrların bir zararı varmı. okanın dediği herseyi duzgun yaptıgıma eminim. module.bat ukkopekkaya bir de pystykorvaya hata veriyor bi tek onları sildim.
 
jpwxv4.jpg





200qyw4.jpg
 
anason said:
Peki Syntax Erorrların bir zararı varmı. okanın dediği herseyi duzgun yaptıgıma eminim. module.bat ukkopekkaya bir de pystykorvaya hata veriyor bi tek onları sildim.
Neyi sildiğini anlamadım ama gördüğüm kadarıyla hatalar scripts, mission templates, game_menus, simple triggers ve dialogs'ta. Bizim değişiklik yaptığımız dosya olarak sadece scripts var. Hatanın tam olarak neden kaynaklandığını görünmüyor, bunu noklama işareti hatası olarak yorumlayabilirim ya da eğer sildiğin scripts'teki bir kodsa neden o da olabilir. Gerçi noktalamayı yanlış yapmışsan bazı script'lerin çalışmamasına ya da birbiriyle karışmasına da neden olmuş olabilir.
Dersin dediğinin dışında ne yaptığını öğrenirsem belki yardımcı olabilirim. Dersteki tüm adımları doğru uygulamışsan bir sorun olmaması gerekir.
 
evet knight arkadasımızın dedigi gibi noktalama hatam varmıs. tamam oldu bu sefer. finland diye bi faction oldu oyunda. bu seferde soyle bir sorunum var. bir oyun baslat diyerek kurdugum oyunlar kendi kendine reset atmaya baslıyor ve duzelmiyor mecburen alt f4 ile cıkıyorum. ama bu kodlarında oynadıgımız txt leri yedekleriyle degistirince sorun halloluyor. bu seferde finland olmuyor kafayı yedim. finland cıktı diye sevinmistim ama bu seferde oyuna giremiyorum ne kadar bahtsızım ben :grin:
 
anason said:
evet knight arkadasımızın dedigi gibi noktalama hatam varmıs. tamam oldu bu sefer. finland diye bi faction oldu oyunda. bu seferde soyle bir sorunum var. bir oyun baslat diyerek kurdugum oyunlar kendi kendine reset atmaya baslıyor ve duzelmiyor mecburen alt f4 ile cıkıyorum. ama bu kodlarında oynadıgımız txt leri yedekleriyle degistirince sorun halloluyor. bu seferde finland olmuyor kafayı yedim. finland cıktı diye sevinmistim ama bu seferde oyuna giremiyorum ne kadar bahtsızım ben :grin:
Sorunun nedeni module_items'te olmayan eşyaları ünitelere tanımlamış olman olabilir. "itm_pystykorva", "itm_ukkopekka" gibi eşyalar Native'de yok. Sorunu en az uğraşarak çözmek istiyorsan Native'de olmayıp ünitelere tanımladığın eşyaları  module_items'te oluşturmalısın(oyunda olan modelleri kullanabilirsin. Ya da ben uzun yol severim diyorsan tanımladığın ünitelerin tümündeki Native'de olmayan eşyaları Native'de olanlarla değiştirirsin. Yeni item eklemeyle ilgili dersler var ama ben kısaca göstereyim:
["bastard_sword", "bastard_sword", [("bastard_sword",0)], itp_type_two_handed_wpn|itp_merchandise| itp_primary, itc_bastardsword, 279 , weight(2.25)|difficulty(9)|spd_rtng(102) | weapon_length(120)|swing_damage(30 , cut) | thrust_damage(24 ,  pierce),imodbits_sword ],
Tanımlık(Bu kesinlikle diğer tanımlıklardan farklı olmalı yoksa hata verir. Misal bunu "ukkopekka" yap)
Oyunda görünen isim(İstediğin adı koyabilirsin ya da değiştirmezsin)
Modelin adı(Oyunda zaten olan modelleri kullanabilirsin, yeni model eklemek zorunda değilsin)
Bunları yapmadan önce yedek al, her olasılığa karşı.
 
Horrt diyecem ama bahanem var. mr.master orjinal konuda bayağı bir güncelleme yapmış, bir ara bakarsın.
 
kardeşler sizden bi yardım isticem sizde yazılar normal gözüküyor ama bende presentations.txt de yazılar yerıne hep sayılar var acaba başka bir programlan mı acmam lazım lütfen yardım edin
 
burada anlatılanları mod klasöründeki txt dosyalarından değil, modül sistemi üzerinden yapman gerek.
detaylı bilgi için: http://forums.taleworlds.com/index.php/topic,68175.0.html
modül sistemini indirmek için: http://download2.taleworlds.com/mb_warband_module_system_1151.zip
 
Back
Top Bottom