O krallığı kendime verdim ama şehrimde olmalı lordum da
("village_101",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001500410320005a96800006b5300004edc00000d11",
[],[],"outer_terrain_desert"),
("village_101",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001500410320005a96800006b5300004edc00000d11",
[],[],"outer_terrain_desert"),
("village_101","scn_village_101",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001500410320005a96800006b5300004edc00000d11",
[],[],"outer_terrain_desert"),
from module_info import *
from module_scenes import *
from process_common import *
def save_python_header():
ofile = open("./ID_scenes.py","w")
for i_scene in xrange(len(scenes)):
ofile.write("%s = %d\n"%(convert_to_identifier(scenes[i_scene][1]),i_scene))
ofile.close()
print "Exporting scene data..."
save_python_header()
from process_operations import *
from module_troops import *
#Hamit Edition
scene_name_pos = 0 #Name
passages_pos = 9 #Passage
scene_troop_pos = 10 #Chest-Troop
scene_outer_terrain_pos = 11 #Outer Terrain
def write_vec(ofile,vec):
ofile.write(" %f %f %f "%vec)
def write_passage(ofile,scenes,passage):
scene_no = 0
found = 0
while (not found) and (scene_no < len(scenes)):
if (scenes[scene_no][0] == passage):
found = 1
else:
scene_no += 1
if (passage == "exit"):
scene_no = 100000
elif (passage == ""):
scene_no = 0
elif not found:
print "Error passage not found:"
print passage
do_error()
ofile.write(" %d "%scene_no)
def save_scenes(variables,variable_uses,tag_uses):
ofile = open(export_dir + "scenes.txt","w")
ofile.write("scenesfile version 1\n")
ofile.write(" %d\n"%len(scenes))
for scene in scenes:
ofile.write("%s %s %d %s %s %f %f %f %f %f %s "%(convert_to_identifier(scene[1]),replace_spaces(scene[0]),scene[2], scene[3],scene[4],scene[5][0],scene[5][1],scene[6][0],scene[6][1],scene[7],scene[8]))
passages = scene[passages_pos]
ofile.write("\n %d "%len(passages))
for passage in passages:
write_passage(ofile,scenes,passage)
chest_troops = scene[scene_troop_pos]
ofile.write("\n %d "%len(chest_troops))
for chest_troop in chest_troops:
troop_no = find_troop(troops,chest_troop)
if (troop_no < 0):
print "Error unable to find chest-troop: " + chest_troop
troop_no = 0
else:
add_tag_use(tag_uses,tag_troop,troop_no)
ofile.write(" %d "%troop_no)
ofile.write("\n")
if (len(scene) > scene_outer_terrain_pos):
ofile.write(" %s "%scene[scene_outer_terrain_pos])
else:
ofile.write(" 0 ")
ofile.write("\n")
ofile.close()
variable_uses = []
variables = load_variables(export_dir, variable_uses)
tag_uses = load_tag_uses(export_dir)
quick_strings = load_quick_strings(export_dir)
save_scenes(variables,variable_uses,tag_uses)
save_variables(export_dir,variables,variable_uses)
save_tag_uses(export_dir,tag_uses)
save_quick_strings(export_dir,quick_strings)
("get_improvement_details",
[(store_script_param, ":improvement_no", 1),
(try_begin),
(eq, ":improvement_no", slot_center_has_manor),
(str_store_string, s0, "@Manor"),
(str_store_string, s1, "@A manor lets you rest at the village and pay your troops half wages while you rest."),
(assign, reg0, 8000),
(else_try),
(eq, ":improvement_no", slot_center_has_fish_pond),
(str_store_string, s0, "@Mill"),
(str_store_string, s1, "@A mill increases village prosperity by 5%."),
(assign, reg0, 6000),
(else_try),
(eq, ":improvement_no", slot_center_has_watch_tower),
(str_store_string, s0, "@Watch Tower"),
(str_store_string, s1, "@A watch tower lets the villagers raise alarm earlier. The time it takes for enemies to loot the village increases by 50%."),
(assign, reg0, 5000),
(else_try),
(eq, ":improvement_no", slot_center_has_school),
(str_store_string, s0, "@School"),
(str_store_string, s1, "@A shool increases the loyality of the villagers to you by +1 every month."),
(assign, reg0, 9000),
(else_try),
(eq, ":improvement_no", slot_center_has_messenger_post),
(str_store_string, s0, "@Messenger Post"),
(str_store_string, s1, "@A messenger post lets the inhabitants send you a message whenever enemies are nearby, even if you are far away from here."),
(assign, reg0, 4000),
(else_try),
(eq, ":improvement_no", slot_center_has_prisoner_tower),
(str_store_string, s0, "@Prison Tower"),
(str_store_string, s1, "@A prison tower reduces the chance of captives held here running away successfully."),
(assign, reg0, 7000),
(try_end),
]),
(call_script, "script_get_improvement_details", NUMARA),
(call_script, "script_get...", NUMARA, KALE),
(store_script_param, ":improvement_no", 1),
(eq, ":improvement_no", slot_center_has_manor),
(str_store_string, s0, "@Manor"),
(str_store_string, s1, "@A manor lets you rest at the village and pay your troops half wages while you rest."),
(assign, reg0, 8000),
qstr_Manor|Malikane
qstr_A_manor_lets_you_res|Malikane köyde kalmanı sağlar ve burada kalırken askerlerin maaşını yarıya düşürür.
module_skills.py
header_skills.py
("reserved_1","Reserved Skill 1",sf_base_att_cha|sf_inactive,10,"This is a reserved skill."),
("reading","Reading",sf_base_att_int,10,"This is a reading skill."),
skl_reserved_1 = 3
skl_reading = 3
knows_reserved_1_1 = 4096
knows_reserved_1_2 = 8192
knows_reserved_1_3 = 12288
knows_reserved_1_4 = 16384
knows_reserved_1_5 = 20480
knows_reserved_1_6 = 24576
knows_reserved_1_7 = 28672
knows_reserved_1_8 = 32768
knows_reserved_1_9 = 36864
knows_reserved_1_10 = 40960
knows_reading_1 = 4096
knows_reading_2 = 8192
knows_reading_3 = 12288
knows_reading_4 = 16384
knows_reading_5 = 20480
knows_reading_6 = 24576
knows_reading_7 = 28672
knows_reading_8 = 32768
knows_reading_9 = 36864
knows_reading_10 = 40960
knows_trade_1 = 1
knows_leadership_1 = 16
knows_prisoner_management_1 = 256
knows_reserved_1_1 = 4096
knows_reserved_1_1 = 4096 (4096 x 1)
knows_reserved_1_2 = 8192 (4096 x 2)
knows_reserved_1_3 = 12288 (4096 x 3)
knows_reserved_1_4 = 16384 (4096 x 4)
knows_reserved_1_5 = 20480 (4096 x 5)
knows_reserved_1_6 = 24576 (4096 x 6)
knows_reserved_1_7 = 28672 (4096 x 7)
knows_reserved_1_8 = 32768 (4096 x 8)
knows_reserved_1_9 = 36864 (4096 x 9)
knows_reserved_1_10 = 40960 (4096 x 10)
skl_reading|Okuma
skl_reading_desc|Bu bir okuma yeteneğidir.
(store_skill_level, ":reading", skl_reading, "trp_player"),
(try_begin),
(gt, ":reading", 0),
...
(try_end),
(eq,"$background_answer_3",cb3_student),
(troop_raise_skill, "trp_player", skl_reading, 1),
Porshy said:Bu dersimizde yeni yetenek eklemeyi öğreneceğiz.
Değiştireceğimiz dosyalar;
Code:module_skills.py header_skills.py
Aslında bu konu en basit konulardan birisidir. Çünkü bizim için 10 adet reserve skill bırakılmış.
Düzenlemeye başlamadan önce yedek almayı unutmayınız.
ilk olarak module_skills.py dosyasını açalım.
Code:("reserved_1","Reserved Skill 1",sf_base_att_cha|sf_inactive,10,"This is a reserved skill."),
Ben burada reserved_1 skillini seçtim, siz istediğiniz bir taneyi seçebilirsiniz.
Okuma yeteneği ekleyeceğimizi var sayalım yani "skl_reading".
Code:("reading","Reading",sf_base_att_int,10,"This is a reading skill."),
Burada kesinlikle dikkat edilmesi gereken kısım düzenlediğimiz yeteneğin yerini değişmemek çünkü birazdan header_skills.py içinde direkt olarak konum belirteceğimiz için eğer 1 skillin yeri değişirse diğer skillerinde sayıları 1 azalacak veya artacağından bütün ayarları tekrardan yapmanız gerekecektir.
Burada "reserved_1" yerine "reading" yazdık. Bu skl_reading'e denk geliyor.
"Reading" kısmı ise skillin görünen ismi olacaktır. (Dil dosyasında skl_reading|Okuma)
sf_base_att_int kısmı ise yeteneğimizin temelidir "cha" Karizma, "int" Zeka, "agi" Çeviklik ve "str" Güç değerlerini temsil eder. Okuma bir zeka yeteneği olduğundan ben sf_base_att_int olarak değiştirdim.
sf_inactive kısmı ise skill in karakter ekranında gizlenmesini sağlar, bu nedenle kaldırdık.
10 kısmı ise skill in en yüksek gelebileceği değerdir. Yani oraya 5 yazarsak skilli en fazla 5 e kadar yükseltebilirsiniz.
"This is a reading skill." kısmı ise skill açıklamasıdır, yani skill üzerine geldiğimizde sağ üste yazan bilgidir. (Dil dosyasında skl_reading_desc|Bu okuma yeteneğidir.)
Gel gelelim şimdi skl_reading tanımlamasını yapmaya, header_skills.py dosyasını açalım ve değiştirdiğimiz skilli bulalım. Burada reserved_1'i değiştirdiğimiz için skl_reserved_1 kısmını bulalım.
Code:skl_reserved_1 = 3
bunu skl_reading olarak değiştirelim.
Code:skl_reading = 3
Bu kısmı yapmazsak eğer skl_reading tanımlanamadı hatası ile karşılaşırsınız.
Aynı dosya içerisinde edeğiştirdiğimiz yeteneğin knows_ kısmını bulalım yani knows_reserved_1
Code:knows_reserved_1_1 = 4096 knows_reserved_1_2 = 8192 knows_reserved_1_3 = 12288 knows_reserved_1_4 = 16384 knows_reserved_1_5 = 20480 knows_reserved_1_6 = 24576 knows_reserved_1_7 = 28672 knows_reserved_1_8 = 32768 knows_reserved_1_9 = 36864 knows_reserved_1_10 = 40960
reserved_1 kısımlarını reading olarak değişelim yani;
Code:knows_reading_1 = 4096 knows_reading_2 = 8192 knows_reading_3 = 12288 knows_reading_4 = 16384 knows_reading_5 = 20480 knows_reading_6 = 24576 knows_reading_7 = 28672 knows_reading_8 = 32768 knows_reading_9 = 36864 knows_reading_10 = 40960
Peki buradaki 4096, 8192 kısımları nedir. Her skill in ilk değeri bir öncekinin 16 ile çarpımına eşittir yani;
Code:knows_trade_1 = 1 knows_leadership_1 = 16 knows_prisoner_management_1 = 256 knows_reserved_1_1 = 4096
burada gördüğünüz gibi trade_1 = 1 bunu 16 ile çarpınca leadership_1 e eşit oluyor yani 16, bunu 16 ile çarpnca bir sonraki yetenek yani prisoner_managementin başlangıcını buluyoruz yani 256 bunuda 16 ile çarptığımızda 4096 ile bir sonraki yeteneğin başlangıcını buluyoruz ve bu böyle gidiyor.
Aynı zamanda her skill ise kendi içinde ilk döngünün sırayla katına sahiptir yani demek istediğim şu ki taban başlangıç 4096 ise _2 kısmı bunun 2 katı _3 kısmı bu sayının 3 katı olacaktır yani örnek olarak göstermek gerekirse;
Code:knows_reserved_1_1 = 4096 (4096 x 1) knows_reserved_1_2 = 8192 (4096 x 2) knows_reserved_1_3 = 12288 (4096 x 3) knows_reserved_1_4 = 16384 (4096 x 4) knows_reserved_1_5 = 20480 (4096 x 5) knows_reserved_1_6 = 24576 (4096 x 6) knows_reserved_1_7 = 28672 (4096 x 7) knows_reserved_1_8 = 32768 (4096 x 8) knows_reserved_1_9 = 36864 (4096 x 9) knows_reserved_1_10 = 40960 (4096 x 10)
Türkçeleştirmek için ise skill.csv dosyasına
Code:skl_reading|Okuma skl_reading_desc|Bu bir okuma yeteneğidir.
Gibi yazmanız yeterli olacaktır.
Her hangi bir kodun içinde sorgulamak için ise diğer kodlardaki gibi
Code:(store_skill_level, ":reading", skl_reading, "trp_player"), (try_begin), (gt, ":reading", 0), ... (try_end),
Gibi kullanabilirsiniz. Ek olarak eğer isterseniz bu bir okuma yeteneği olduğu için module_game_menus.py içerisinde
Code:(eq,"$background_answer_3",cb3_student),
aratıp hemen altına;
Code:(troop_raise_skill, "trp_player", skl_reading, 1),
şeklinde ekleyip öğrenci başlayanların başlangıçta 1 okuma yeteneği ile başlamasını sağlayabilirsiniz.