ContTrabiyuo
Merhaba,
ilk defa ders konusu yapıyorum bu yüzden hatalarım olabilir düzeltmeye çalışırım.
önceki dersde kamp eklemiştik şimdi bu kampa insanlar ekleyeceğiz yani boş bir kamp olur mu?
DİKKAT!Derse geçmeden önce kampa edit modundan(pencereli mod açıkken ctrl+e) herhangi bir yere entry point koyalım bu entry pointin numarasını aklınızda tutun.
şimdi module_troops.py'ye girelim herhangi bir yere bu kodu yapıştıralım:
"talimci" burası npcnin sistemdeki adı diyebiliriz
"Talimci" ise oyunda gözükecek adıdır.
tf_hero kahraman olduğunu gösterir
scn_kamp kamp adlı scenede yani sahnede bulunduğunu gösterir
entry(1) burası eklediğimiz entry pointin numarasıyla aynı olmalıdır
fac_commoners tarafını belirler
itm_coarse_tunic üstünde bulunan giysidir
itm_hide_boots botlarıdır.
str_20|agi_20|int_20|cha_20 özellikleridir bizim karakterimizin gücü,çevikliği,zekası ve karizması 20
level(30) levelidir
knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1 özellikleridir bizim karakterimizin biniciliği 2,atlı okçuluğu 3,güçlü germesi 3,liderliği 2,silah ustası yeteneği ise 1dir.
0x0000000f5b1052c61ce1a9521db1375200000000001ed31b0000000000000000 bu ise yüz kodudur eğer kendi yüzünüzü oluşturmak istiyorsanız karakter oluşturma penceresinde edit moduna geçip(ctrl+e) yüzünüzü tasarladıktan sonra üstteki kodu kopyalayıp buraya yapıştırabilirsiniz.
Evet bir dersimiz daha bitti.Sağlıcakla Kalın
İlk olarak basit bir şekilde ikili iki satırlık bir konuşmamodule_dialogs.py bölümüne eklenmeli)
analiz:
burada "trp_talimci" önceki derste eklediğimiz npc olan talimcidir.
"start" bu komutla diyalog başlar
"[]," bu bölüm koşuk kısmıdır aynı "start" bölümü gibi bazı koşulları girmeniz gerekiyor ama bu konuda pek bilgim olmadığı için burdan atıp tutmak istemiyorum
"konusma" bu bölüm ise bu konuşmadan sonra gelecek olan konuşmayı belirler yani "konusma" yazısını hangi diyalogtan önce eklerseniz bu konuşmadan sonra o diyalog gelecektir.
trp_talimci|plyr bu burada playerin konuşacağını gösterir
"[]]," burasıda aynı şekilde görevler için veya oyunca xp,para ya da eşya vermek için kullanılıyor aşağıda bu kodları bulabilirsiniz:
"trp_talimci|plyr" burada oyuncunun gösterir.
"close_window" konuşmayı bitirir.
Bide biraz geliştirilmiş şekilde ekleyelim:
şimdi her zamanki gibi analiz:
ilk 2 satır zaten üstteki diyaloğun aynısı.
3.satırdada farklı bir şey yok.
4. ve 5. satırda farkettiyseniz diğer satırlardan farklı olarak "konusma3"den devam etti diyeceksiniz e hani bu nerenin başına yazarsak oradan hareket edecekti? şöyle söyliyim iki adet aynı şeyden devam eden konuşma eklerseniz bu oyuncunun karşısına söylemek için iki farklı seçenek bırakacaktır eğer senaryo modu yapıyorsanız sizin için birebir.
6.satırda dikkat ettiyseniz "nokta"dan sonra bir boşluk bıraktık siz de böyle yapmaya özen gösterin yapınca noluyor bilmiyorum ama her yer de(module_dialogs.py'de)hep boşluklar var.
Şimdi daha fazla ayrıntı vereceğim.
2-3 kişinin birden konuşmasını sağlama:
analiz:
[trp_talimci|other(trp_ustadovuscu), bu bölümde eklediğiniz sahneye bir troop daha eklemeniz gerekiyor eğer bu diyaloğu kullanıcak olursanız troopunuzun adı "ustadovuscu" olmalıdır.
Üstte anlattığım "[]," koşul bölümünü Migrantah sağolsun bana anlattı bunu açıklamak istiyorum:
Elimden geldiğince bildiklerimi bulabildiklerimi anlatmaya çalıştım eğer yapamadığınız ya da anlamadığınız bir yer olursa her zaman açığım
DÜZETLME İÇİN MİGRANTAH'A TEŞEKKÜRLER
ilk defa ders konusu yapıyorum bu yüzden hatalarım olabilir düzeltmeye çalışırım.
İlk olarak kendimize bir menü oluşturmamız gerekiyor.
Girelim module_game_menus.py'ye
Şimdi inceleyelim:
Burada sarı ile yazdığım yer menüyü açınca en üstte gözükecek olan açıklama kısmı türkçe harf kullanmamaya dikkat edin.
Pembe ile yazdığım yer ise menüyü açınca gözükecek olan resim "mesh_pic_town_1" bir svadya şehri fotorafı olacağını gösterir.
Açık yeşil ile yazdığım yer ise ileride oluşturacağımız sceneye yani sahneye oyuncuyu atar.
(change_screen_mission), yazan kısımsa sahneye atlamamıza yardımcı olan başka bir komut.
Şimdi ise module_scripts'e geçelim
bu kodun bulunduğu bölümün altına
bu kodu yapıştıralım
analiz:
encountered_party kısmı hakkında pek bir bilgim yok.Ama "p_kamp1" bölümü aşağıda module_parties'e ekleyeceğimiz koddaki gibi olmalıdır.
jump_to_menu, "mnu_kamp"), kısmındaysa anlayacağınız gibi kamp menüsünün karşımıza çıkmasını sağlayan kod.
şimdi module_parties.py bölümüne geçelim.
en alta aşağıdaki kodu ekleyelim:
analiz:
burada "kamp1" bölümü üsttede anlattığım gibi "p_kamp1" bölümündekiyle aynı olmalıdır.Bu parties bölümündeki adını belirler.Morghs tools kullanıyorsanız orada bu adla gözükecektir.
"Kamp" bölümüyse oyuna gözükeceği ismi gösterir.
icon_camp ise haritadaki ikonudur.
aşağıda tüm ikonları ve açıklamalarını bulabilirsiniz:
fac_neutral ilse tarafını belirler.
şimdi module_scenes.py bölümüne gelelim
bu kodu "]" den önceye yapıştıralım.
analiz:
"0x0000000030e2098c00046d2800005313000074cd0000657c" bölümü sahnenin yerini belirler(dağlık,ormanlık nerelerde olacak vs.)
"sea_outer_terrain_1" sahnede oyuncunun ulaşamadığı yerdeki görüntüyü belirliyor sanırsam bunun yerine aşşağıdaki kodları kullanarak daha farklı araziler oluşturabilirsiniz:
Bazı şeyleri açıklama gereği duymadım çünkü bunlar zaten diğer derslerde vardı daha çok olmayan şeyleri açıklamaya çalıştım eğer istek olursa npc ekleme,ayrıntılı diyalog ekleme tarzı şeyleri de anlatabilirim.Sağlıcakla
Girelim module_game_menus.py'ye
Bunu en alttaki "]" üstüne yapıştırmanız gerekiyor.(
"Kamp",mnf_scale_picture,
"Kampa geldin. Burada yerel sakinler talim yapiyorlar.",
"none",
[(play_track, "track_outdoor_beautiful_land"),
(set_background_mesh, "mesh_pic_town1"),
],
[
("enter",[],"Etrafta Dolas.",
[(set_jump_mission,"mt_town_center"),
(jump_to_scene,"scn_kamp"),
(change_screen_mission),
]
),
("leave",[],"Ayril.",
[(change_screen_return),
]
),
]
),
Şimdi inceleyelim:
Burada sarı ile yazdığım yer menüyü açınca en üstte gözükecek olan açıklama kısmı türkçe harf kullanmamaya dikkat edin.
Pembe ile yazdığım yer ise menüyü açınca gözükecek olan resim "mesh_pic_town_1" bir svadya şehri fotorafı olacağını gösterir.
Açık yeşil ile yazdığım yer ise ileride oluşturacağımız sceneye yani sahneye oyuncuyu atar.
(change_screen_mission), yazan kısımsa sahneye atlamamıza yardımcı olan başka bir komut.
Şimdi ise module_scripts'e geçelim
Code:
(else_try),
(eq, "$g_encountered_party", "p_zendar"),
(jump_to_menu, "mnu_zendar"),
Code:
(else_try),
(eq, "$g_encountered_party", "p_kamp1"),
(jump_to_menu, "mnu_kamp"),
analiz:
encountered_party kısmı hakkında pek bir bilgim yok.Ama "p_kamp1" bölümü aşağıda module_parties'e ekleyeceğimiz koddaki gibi olmalıdır.
jump_to_menu, "mnu_kamp"), kısmındaysa anlayacağınız gibi kamp menüsünün karşımıza çıkmasını sağlayan kod.
şimdi module_parties.py bölümüne geçelim.
en alta aşağıdaki kodu ekleyelim:
Code:
("kamp1","Kamp", icon_camp|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-100, 75),[],225),
burada "kamp1" bölümü üsttede anlattığım gibi "p_kamp1" bölümündekiyle aynı olmalıdır.Bu parties bölümündeki adını belirler.Morghs tools kullanıyorsanız orada bu adla gözükecektir.
"Kamp" bölümüyse oyuna gözükeceği ismi gösterir.
icon_camp ise haritadaki ikonudur.
aşağıda tüm ikonları ve açıklamalarını bulabilirsiniz:
icon_town svadyalıların şehir ikonudur
icon_town_steppe kergitlerin şehir ikonudur
icon_town_dessert sarranidlerin şehir ikonudur
icon_village_a çimenlik düz arazi için olan köy ikonudur
icon_village_b çöl için olan köy ikonudur.
icon_village_c soğuk bölgeler için olan köy ikonudur.
icon_village_burnt_a "icon_village_a"'nın yağmalanmış versiyonudur.
icon_village_deserted_a ne olduğunu anlayamadım.
icon_ship gemi ikonudur
icon_ship_on_land karaya vurmuş gemi ikonudur.
icon_castle_a kale ikonudur
icon_cattle sığır ikonudur
icon_training_ground talim alanı ikonudur.
icon_bandit_lair haydut ini ikonudur.
icon_town_steppe kergitlerin şehir ikonudur
icon_town_dessert sarranidlerin şehir ikonudur
icon_village_a çimenlik düz arazi için olan köy ikonudur
icon_village_b çöl için olan köy ikonudur.
icon_village_c soğuk bölgeler için olan köy ikonudur.
icon_village_burnt_a "icon_village_a"'nın yağmalanmış versiyonudur.
icon_village_deserted_a ne olduğunu anlayamadım.
icon_ship gemi ikonudur
icon_ship_on_land karaya vurmuş gemi ikonudur.
icon_castle_a kale ikonudur
icon_cattle sığır ikonudur
icon_training_ground talim alanı ikonudur.
icon_bandit_lair haydut ini ikonudur.
şimdi module_scenes.py bölümüne gelelim
Code:
("kamp",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000030e2098c00046d2800005313000074cd0000657c",
[],[],"sea_outer_terrain_1"),
analiz:
"0x0000000030e2098c00046d2800005313000074cd0000657c" bölümü sahnenin yerini belirler(dağlık,ormanlık nerelerde olacak vs.)
"sea_outer_terrain_1" sahnede oyuncunun ulaşamadığı yerdeki görüntüyü belirliyor sanırsam bunun yerine aşşağıdaki kodları kullanarak daha farklı araziler oluşturabilirsiniz:
Code:
outer_terrain_plain çimenlik bir arazi olur.
outer_terrain_steppe arkası step bir arazi olur.
outer_terrain_snow arkası soğuk bir bölge arazisi olur.
outer_terrain_dessert arkası çöl arazisi olur.
outer_terrain_beach arkada sahil olur.(Aynı deniz yağmacıları sığınağındaki gibi)
outer_terrain_town_thir_1 thir şehrininkiyle aynı olur.
AYRINTILI NPC EKLEME
evet hemen dersimize geçelim fazla uzatmadanönceki dersde kamp eklemiştik şimdi bu kampa insanlar ekleyeceğiz yani boş bir kamp olur mu?
DİKKAT!Derse geçmeden önce kampa edit modundan(pencereli mod açıkken ctrl+e) herhangi bir yere entry point koyalım bu entry pointin numarasını aklınızda tutun.
şimdi module_troops.py'ye girelim herhangi bir yere bu kodu yapıştıralım:
Analiz:["talimci","Talimci","Talimci",tf_hero, scn_kamp|entry(1), reserved, fac_commoners,[itm_coarse_tunic, itm_hide_boots], str_20|agi_20|int_20|cha_20|level(30),wp(90), knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1,0x0000000f5b1052c61ce1a9521db1375200000000001ed31b0000000000000000],
"talimci" burası npcnin sistemdeki adı diyebiliriz
"Talimci" ise oyunda gözükecek adıdır.
tf_hero kahraman olduğunu gösterir
scn_kamp kamp adlı scenede yani sahnede bulunduğunu gösterir
entry(1) burası eklediğimiz entry pointin numarasıyla aynı olmalıdır
fac_commoners tarafını belirler
itm_coarse_tunic üstünde bulunan giysidir
itm_hide_boots botlarıdır.
str_20|agi_20|int_20|cha_20 özellikleridir bizim karakterimizin gücü,çevikliği,zekası ve karizması 20
level(30) levelidir
knows_riding_2|knows_horse_archery_3|knows_power_draw_3|knows_leadership_2|knows_weapon_master_1 özellikleridir bizim karakterimizin biniciliği 2,atlı okçuluğu 3,güçlü germesi 3,liderliği 2,silah ustası yeteneği ise 1dir.
0x0000000f5b1052c61ce1a9521db1375200000000001ed31b0000000000000000 bu ise yüz kodudur eğer kendi yüzünüzü oluşturmak istiyorsanız karakter oluşturma penceresinde edit moduna geçip(ctrl+e) yüzünüzü tasarladıktan sonra üstteki kodu kopyalayıp buraya yapıştırabilirsiniz.
Evet bir dersimiz daha bitti.Sağlıcakla Kalın
AYRINTILI DİYALOG EKLEME
Evet bugün ayrıntılı bir şekilde diyalog eklemeyi göstericeem ayrıntılı diyalog ekleme forumda konu olarak yok sadece bazı konularda ara ara bazı bilgiler verilmiş bunlardan yararlanarak ve kendi tecrübelerimi kullanarak bir ders hazırlamaya çalışacağımİlk olarak basit bir şekilde ikili iki satırlık bir konuşmamodule_dialogs.py bölümüne eklenmeli)
Code:
[trp_talimci, "start", [], "Merhaba", "konusma",[]],
[trp_talimci|plyr, "konusma, [], "Sanada merhaba","close_window",[]],
burada "trp_talimci" önceki derste eklediğimiz npc olan talimcidir.
"start" bu komutla diyalog başlar
"[]," bu bölüm koşuk kısmıdır aynı "start" bölümü gibi bazı koşulları girmeniz gerekiyor ama bu konuda pek bilgim olmadığı için burdan atıp tutmak istemiyorum
"konusma" bu bölüm ise bu konuşmadan sonra gelecek olan konuşmayı belirler yani "konusma" yazısını hangi diyalogtan önce eklerseniz bu konuşmadan sonra o diyalog gelecektir.
trp_talimci|plyr bu burada playerin konuşacağını gösterir
"[]]," burasıda aynı şekilde görevler için veya oyunca xp,para ya da eşya vermek için kullanılıyor aşağıda bu kodları bulabilirsiniz:
"(troop_add_gold,"trp_player",100)," oyuncuya 100 altın verir.
"(troop_add_exp,"trp_player",100), oyuncuya 100 xp verir.
"(troop_add_item, "trp_player","itm_esya",)," oyuncuya eşya verir burada esya yerine eşyanın adını yazmanız gerekiyor(module_items.py dosyasında eşyaların isimleri bulunuyor oraya bakabilirsiniz)
"(party_add_members,"trp_player","trp_troopismi",1), oyuncuya yazdığınız troopu ekler buradaki "1" eklenecek troop sayısıdır buraya yoldaş ekleniyor mu bilmiyorum.
"(troop_add_exp,"trp_player",100), oyuncuya 100 xp verir.
"(troop_add_item, "trp_player","itm_esya",)," oyuncuya eşya verir burada esya yerine eşyanın adını yazmanız gerekiyor(module_items.py dosyasında eşyaların isimleri bulunuyor oraya bakabilirsiniz)
"(party_add_members,"trp_player","trp_troopismi",1), oyuncuya yazdığınız troopu ekler buradaki "1" eklenecek troop sayısıdır buraya yoldaş ekleniyor mu bilmiyorum.
"close_window" konuşmayı bitirir.
Bide biraz geliştirilmiş şekilde ekleyelim:
Code:
[trp_talimci, "start", [], "Merhaba", "konusma",[]],
[trp_talimci|plyr, "konusma1, [], "Sanada.", "konusma2",[]],
[trp_talimci, "konusma2", [], "Herhangi bir sey var miydi?", "konusma3",[]],
[trp_talimci|plyr, "konusma3", [], "Bana hikayeni anlatir misin?", "konusma4",[]],
[trp_talimci|plyr, "konusma3" [], "Yok bir sey", "close_window",[]],
[trp_talimci, "konusma4", [], "Eskiden bende senin gibi bir maceraciydim derken dizime bir ok yedim. Hikayem bu", "konusma5",[]],
[trp_talimci|plyr, "konusma5", [], "Tesekkürler.", "close_window",[]],
ilk 2 satır zaten üstteki diyaloğun aynısı.
3.satırdada farklı bir şey yok.
4. ve 5. satırda farkettiyseniz diğer satırlardan farklı olarak "konusma3"den devam etti diyeceksiniz e hani bu nerenin başına yazarsak oradan hareket edecekti? şöyle söyliyim iki adet aynı şeyden devam eden konuşma eklerseniz bu oyuncunun karşısına söylemek için iki farklı seçenek bırakacaktır eğer senaryo modu yapıyorsanız sizin için birebir.
6.satırda dikkat ettiyseniz "nokta"dan sonra bir boşluk bıraktık siz de böyle yapmaya özen gösterin yapınca noluyor bilmiyorum ama her yer de(module_dialogs.py'de)hep boşluklar var.
Şimdi daha fazla ayrıntı vereceğim.
2-3 kişinin birden konuşmasını sağlama:
Code:
[trp_talimci, "start", [], "merhaba","konusma",[]],
[trp_talimci|plyr, "konusma", [], "sanada","konusma2",[]],
[trp_talimci|other(trp_ustadovuscu), "konusma2", [], "yeni bir kendinin sakatlamaya calisan daha","close_window",[]],
[trp_talimci|other(trp_ustadovuscu), bu bölümde eklediğiniz sahneye bir troop daha eklemeniz gerekiyor eğer bu diyaloğu kullanıcak olursanız troopunuzun adı "ustadovuscu" olmalıdır.
Üstte anlattığım "[]," koşul bölümünü Migrantah sağolsun bana anlattı bunu açıklamak istiyorum:
Migrantah said:(le,"$talk_context", tc_party_encounter),
(gt,"$g_talk_troop_relation", -5),
Bunu koşul kısmına eklersen o diyaloğu başlatmak için o kişi ile ilişkinin seviyesini belirlersin. Örneğin burada "ilişki seviyesi -5'ten büyük ise" diye bir koşul oluşturduk. Koşul kısmı böyle. Yani bu koşul kısmında yazan şeylere göre diyalog başlatılır.
[anyone, "dplmc_lord_declare_war",
[
(troop_get_slot, ":renown", "trp_player", slot_troop_renown), #reown
(lt, ":renown", 150),
Örneğin burada da "nam seviyesi 150'den azsa" diye bir kavram oluşturmuşlar.
Buradan ne anladık? "Eğer" kavramını kullanarak diyaloğun başlatılıp başlatılmayacağını belirledik. Nam 150'den azsa bu diyalog oluşturulacak, değilse de oluşturulmayacak. Örneğin sen şöyle bir şey yaptın;
[trp_bizim_dede, "start",
[
(le,"$talk_context", tc_party_encounter), #Burada eğer bu konuşulan troop'la ilişki -5'in altındaysa dedik. Eğer öyleyse bu diyalog
(lt,"$g_talk_troop_relation", -5), #başlatılacak. Peki ya değilse? Şimdi tüm sonuçları ele alalım:
], "Derhal burayi terket!", "derhal_terket_1", []],
1-Eğer bu şartlar yoksa bu diyalog gözükmez.
2-Eğer bu şartlar varsa bu diyalogtan sonra ne olacak? Biz buraya ne "close_window" deyip konuşmayı kapattık, ne bu diyalogtan sonra nereye gidileceğini ayarladık, ne de bu amcanın niye "burayı derhal terket" dediğini anladık .
3-Bu şartlar tamam sağlandı da, şimdi bunu sadece "tek diyalog", yani bundan sonra bir diyalog yazmadık varsayalım. Biz "derhal_terket_1" dedik ama burayı hiçbir yerde kullanmadık. Ne pencere kapanabilecek(birkaç tuş haricinde), ne de bir yerlere geçiş yapabileceksin. Oyun da sana(doğru hatırlıyorsam ismini) "outtoken(gibi bir şeydi) not found" diyecek ve oyunda error olacaktır. Şimdi iki tane daha diyalog daha eklememiz lazım.
1.si:
[trp_bizim_dede, "start", [], #farkettiysen bir koşul yazmadık, çünkü daha önceden "ilişki -5'in altındaysa"" dedik. Eğer öyle değilse de biz yine "Ooo hosgeldin!", "dede_hosgeldi", []], #aynı dedeyi konuşturacağımız için mecburen -5'in üstünde olacak ilişki.
2.si:
Code:[trp_bizim_dede, "derhal_terket_1", [], "Tamam dede ozur dilerim.", "close_window", []],
2. diyalogla "eğer (bir önceki diyalogun şartları) belli değilse bu diyaloğu uygula" dedik. 3. diyalogla da kapanış cümlesini kuruyoruz. Yani koşullar bu amaçladır.
Elimden geldiğince bildiklerimi bulabildiklerimi anlatmaya çalıştım eğer yapamadığınız ya da anlamadığınız bir yer olursa her zaman açığım
DÜZETLME İÇİN MİGRANTAH'A TEŞEKKÜRLER