В данной теме предлагаю публиковать твики и доработки Викингов, а также обсуждать их.
С первыми работами можно ознакомиться на форуме Taleworlds:
http://forums.taleworlds.com/index.php/topic,323613.0.html (http://forums.taleworlds.com/index.php/topic,323613.0.html) - твики для игры
http://forums.taleworlds.com/index.php/topic,324117.0.html (http://forums.taleworlds.com/index.php/topic,324117.0.html) - новые татуировки для пиктов
Некоторые твики
В файле scripts.txt найти
refresh_center_armories -1
18 1492 1 100 1490 1 150
Цифра 150 в конце указанного кода отвечает за качество. Ее повышение приведет к появлению большего количества брони с модификатором sturdy/heavy/balanced. Аналогичные действия можно производить с оружейниками и конюшнями.
В файле module.ini найти запись regulars_xp_multiplier = 2.0. Повышение данного параметра приведет к увеличению опыта, получаемого в сражениях (но не за счет навыка тренера).
В файле menus.txt найдите следующий код:
mno_pre_join_help_attackers 3 2204 2 1224979098644774912 144115188075857179 2190 3 1224979098644774913 1224979098644774912 432345564227567631 30 2 1224979098644774913 0 Move_in_to_help_the_{s2}. 4 1303 1 0 2133 2 144115188075856215 144115188075855973 2133 2 144115188075856216 144115188075857179 2060 1 864691128455135285 . mno_pre_join_help_defenders 3 2204 2 1224979098644774912 144115188075855973 2190 3 1224979098644774913 1224979098644774912 432345564227567631 30 2 1224979098644774913 0 Rush_to_the_aid_of_the_{s1}. 4 1303 1 1 2133 2 144115188075856215 144115188075857179 2133 2 144115188075856216 144115188075855973 2060 1 864691128455135285 .
Замените его на этот:
mno_pre_join_help_attackers 2 2204 2 1224979098644774912 144115188075857179 2190 3 1224979098644774913 1224979098644774912 432345564227567631 Move_in_to_help_the_{s2}. 4 1303 1 0 2133 2 144115188075856215 144115188075855973 2133 2 144115188075856216 144115188075857179 2060 1 864691128455135285 . mno_pre_join_help_defenders 2 2204 2 1224979098644774912 144115188075855973 2190 3 1224979098644774913 1224979098644774912 432345564227567631 Rush_to_the_aid_of_the_{s1}. 4 1303 1 1 2133 2 144115188075856215 144115188075857179 2133 2 144115188075856216 144115188075855973 2060 1 864691128455135285 .
В файле conversation.txt найти следующий код:
dlga_start:battle_reason_stated 4095 0 5 31 2 144115188075856100 2 2202 1 72057594037927941 1609 2 72057594037927943 72057594037927941 1073741855 2 72057594037927943 576460752303423501 31 2 72057594037927943 576460752303423502 I_will_drink_from_your_skull! 2968 1 600 1 1152921504606847115 NO_VOICEOVER
Заменить его на:
dlga_start:battle_reason_stated 4095 0 10 31 2 144115188075856100 2 2202 1 72057594037927941 1609 2 72057594037927943 72057594037927941 1073741855 2 72057594037927943 576460752303423501 1073741855 2 72057594037927943 576460752303423565 1073741855 2 72057594037927943 576460752303423566 1073741855 2 72057594037927943 576460752303423568 1073741855 2 72057594037927943 576460752303423569 1073741855 2 72057594037927943 576460752303423570 31 2 72057594037927943 576460752303423502 I_will_drink_from_your_skull! 2968 1 600 1 1152921504606847115 NO_VOICEOVER
Теперь все викинги-бандиты могут быть наняты в ходе разговора с ними
В файле scripts.txt в секции refresh_center_inventories -1 найти следующий код:
1500 2136 3 1224979098644774922 1000 3000
Цифра 3000 отвечает за количество денег у торговцев. Поменяйте ее и подождите 1 игровую неделю.
В файле triggers.txt найти следующий код:
0.000000 0.000000 168.000000 0 1 1 1 936748722493063799
0.000000 0.000000 168.000000 0 1 1 1 936748722493063800
0.000000 0.000000 168.000000 0 1 1 1 936748722493063801
0.000000 0.000000 168.000000 0 1 1 1 936748722493063802
0.000000 0.000000 168.000000 0 1 1 1 936748722493063204
Числа 168 в каждой строке означают количество часов между обновлением ассортимента.
В файле scripts.txt найти строку refresh_village_defenders -1. Изменить строку кода под ней на:
19 21 1 1224979098644774912 2133 2 1224979098644774913 50 4 0 1601 2 1224979098644774914 1224979098644774912 31 2 1224979098644774914 30 2204 2 1224979098644774915 1224979098644774912 522 3 1224979098644774916 1224979098644774915 78 1675 2 1224979098644774912 1224979098644774916 5 0 31 2 1224979098644774914 55 2204 2 1224979098644774915 1224979098644774912 522 3 1224979098644774916 1224979098644774915 79 1675 2 1224979098644774912 1224979098644774916 5 0 2147483678 2 1224979098644774914 1224979098644774913 2204 2 1224979098644774915 1224979098644774912 522 3 1224979098644774916 1224979098644774915 77 1675 2 1224979098644774912 1224979098644774916 3 0
Сделайте резервную копию scripts.txt, затем найдите этот раздел:
cf_check_hero_can_escape_from_player -1
32 21 1 1224979098644774912 2133 2 1224979098644774913 0 4 0 200 1 504403158265495585 1073742370 3 504403158265495585 2 1224979098644774912 546 3 504403158265495585 4 1224979098644774912 2133 2 1224979098644774913 1 5 0 30 2 1224979098644774912 360287970189640912 2147483678 2 1224979098644774912 360287970189640914 4 0 200 1 504403158265495680 2133 2 1224979098644774913 1 5 0 2133 2 1224979098644774913 -1 3 0 3 0 2133 2 1224979098644774914 0 4 0 31 2 1224979098644774913 0 2136 3 1224979098644774915 0 100 4 0 31 2 144115188075857453 1 2105 2 1224979098644774915 7 3 0 2147483678 2 1224979098644774915 65 2133 2 1224979098644774914 1 5 0 31 2 1224979098644774913 -1 2133 2 1224979098644774914 1 3 0 31 2 1224979098644774914 1
65 - это процентный шанс вражеского лорда сбежать после битвы
Открываем module.ini и ищем regulars_xp_multiplier = 2.0.Меняем 2 на более высокую цифру, в нативе стоит 3.
1. В папке модуля находите файл scripts.txt и открываете блокнотом
2. Находите строку в самом начале 12 21 1 1224979098644774912 2133 2 1224979098644774913 50
3. 50 - это стартовый лимит гарнизона. Первое улучшение увеличивает его на 70, второе на 200
4. Меняете 50 на что душа пожелает.
5. Радуетесь и параллельно корите себя, за то, что вы читер.
такие вещи уже не делают через .txt файлы, это делают через модульную систему
через .txt удобно менять значения некоторых переменных, но не саму логику
можно почитать
нужно установить (https://rusmnb.ru/index.php?topic=5710.0) модульную систему VC 2.054 (http://download3.taleworlds.com/VC_Source_2054.zip), научиться компилировать её и изменять под свои нужды
открываем module_scripts.py и ищем нужный скрипт..
# script_party_get_ideal_size @used for NPC parties.
# Input: arg1 = party_no
# Output: reg0: ideal size
("party_get_ideal_size",
[
(store_script_param_1, ":party_no"),
#default limit is 30 for any party
(assign, ":limit", 30),
(try_begin),
(party_slot_eq, ":party_no", slot_party_type, spt_kingdom_hero_party),
(party_stack_get_troop_id, ":party_leader", ":party_no", 0),
(store_faction_of_party, ":faction_id", ":party_no"),
#default limit is 20 for kingdom lords
(try_begin),
(neq, ":faction_id", "fac_adventurers"),
(assign, ":limit", 20),
(try_end),
#each (leadership level) gives 5 to limit
(store_skill_level, ":skill", "skl_leadership", ":party_leader"),
(store_attribute_level, ":charisma", ":party_leader", ca_charisma),
(val_mul, ":skill", 5),
(val_add, ":limit", ":skill"),
#each (charisma level) gives 1 to limit
(val_add, ":limit", ":charisma"),
#each (9 renown) gives 1 to limit #same that player chief
(troop_get_slot, ":troop_renown", ":party_leader", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 9), #VC use 9. Renown is important but no the key
(val_add, ":limit", ":renown_bonus"), #common renown in lords and kings enter 1000 and 1500 = 166 men
#if this party is faction leader it takes additional 100 limit #possesions give bonus
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_leader, ":party_leader"),
(faction_get_slot,":num_castles",":faction_id",slot_faction_num_castles),
(faction_get_slot,":num_towns",":faction_id",slot_faction_num_towns),
(val_mul,":num_castles",10),
(val_mul,":num_towns",20),
(val_add,":num_towns",":num_castles"),
(val_add, ":limit", ":num_towns"),
# (val_add, ":limit", 100),
(try_end),
#if this party is faction marshal it takes additional 20 limit
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_marshal, ":party_leader"),
(val_add, ":limit", 20),
(try_end),
#party takes additional 20 limit per each castle it's party leader owns
#Brytenwalda based system was renown, but VC prefer propierties -Fryd concept-
(try_for_range, ":cur_center", walled_centers_begin, walled_centers_end),
# (try_for_range, ":cur_center", castles_begin, castles_end),
(party_slot_eq, ":cur_center", slot_town_lord, ":party_leader"),
(try_begin), #towns
(party_slot_eq, ":cur_center", slot_party_type, spt_town),
(val_add, ":limit", 80),
(else_try), #castles forts
(val_add, ":limit", 40),
(try_end),
(try_end),
(try_end),
#if player has level of 0 then ideal limit will be exactly same, if player has level of 80 then ideal limit will be multiplied by 2 ((80 + 80) / 80)
#below code will increase limits a little as the game progresses and player gains level
(store_character_level, ":level", "trp_player"),
(val_min, ":level", 80),
(store_add, ":level_factor", 80, ":level"),
(val_mul, ":limit", ":level_factor"),
(val_div, ":limit", 80),
(assign, reg0, ":limit"),
]),
добавляем одну строку перед последней
(val_min, ":limit", 150),
val_min - это функция, которая из двух переменных выбирает наименьшее значение и присваивает его первой переменной
при limit<150 значение limit=limit,
при limit>150 значение limit=150..
добавив одну эту строку мы ограничиваем уже сформированное скриптом значение переменной limit нужной нам константой 150
почему перед последней, потому что в последней строке происходит присвоение регистру reg0 значения переменной limit через функцию assign..
а reg0 это и есть результат работы скрипта
вот и вся логика..
естественно, реализация может быть разной и зависит от вашего скилла программирования..
как по мне это самый простой вариант
получаем
# script_party_get_ideal_size @used for NPC parties.
# Input: arg1 = party_no
# Output: reg0: ideal size
("party_get_ideal_size",
[
(store_script_param_1, ":party_no"),
#default limit is 30 for any party
(assign, ":limit", 30),
(try_begin),
(party_slot_eq, ":party_no", slot_party_type, spt_kingdom_hero_party),
(party_stack_get_troop_id, ":party_leader", ":party_no", 0),
(store_faction_of_party, ":faction_id", ":party_no"),
#default limit is 20 for kingdom lords
(try_begin),
(neq, ":faction_id", "fac_adventurers"),
(assign, ":limit", 20),
(try_end),
#each (leadership level) gives 5 to limit
(store_skill_level, ":skill", "skl_leadership", ":party_leader"),
(store_attribute_level, ":charisma", ":party_leader", ca_charisma),
(val_mul, ":skill", 5),
(val_add, ":limit", ":skill"),
#each (charisma level) gives 1 to limit
(val_add, ":limit", ":charisma"),
#each (9 renown) gives 1 to limit #same that player chief
(troop_get_slot, ":troop_renown", ":party_leader", slot_troop_renown),
(store_div, ":renown_bonus", ":troop_renown", 9), #VC use 9. Renown is important but no the key
(val_add, ":limit", ":renown_bonus"), #common renown in lords and kings enter 1000 and 1500 = 166 men
#if this party is faction leader it takes additional 100 limit #possesions give bonus
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_leader, ":party_leader"),
(faction_get_slot,":num_castles",":faction_id",slot_faction_num_castles),
(faction_get_slot,":num_towns",":faction_id",slot_faction_num_towns),
(val_mul,":num_castles",10),
(val_mul,":num_towns",20),
(val_add,":num_towns",":num_castles"),
(val_add, ":limit", ":num_towns"),
# (val_add, ":limit", 100),
(try_end),
#if this party is faction marshal it takes additional 20 limit
(try_begin),
(neq,":faction_id", "fac_adventurers"),
(faction_slot_eq, ":faction_id", slot_faction_marshal, ":party_leader"),
(val_add, ":limit", 20),
(try_end),
#party takes additional 20 limit per each castle it's party leader owns
#Brytenwalda based system was renown, but VC prefer propierties -Fryd concept-
(try_for_range, ":cur_center", walled_centers_begin, walled_centers_end),
# (try_for_range, ":cur_center", castles_begin, castles_end),
(party_slot_eq, ":cur_center", slot_town_lord, ":party_leader"),
(try_begin), #towns
(party_slot_eq, ":cur_center", slot_party_type, spt_town),
(val_add, ":limit", 80),
(else_try), #castles forts
(val_add, ":limit", 40),
(try_end),
(try_end),
(try_end),
#if player has level of 0 then ideal limit will be exactly same, if player has level of 80 then ideal limit will be multiplied by 2 ((80 + 80) / 80)
#below code will increase limits a little as the game progresses and player gains level
(store_character_level, ":level", "trp_player"),
(val_min, ":level", 80),
(store_add, ":level_factor", 80, ":level"),
(val_mul, ":limit", ":level_factor"),
(val_div, ":limit", 80),
(val_min, ":limit", 150),
(assign, reg0, ":limit"),
]),
и компилируем..
то что я скинул выше, это и есть данный скомпилированный скрипт с одной добавленной строкой
на сайте вся необходимая информация о модульной системе есть (https://rusmnb.ru/index.php?topic=5710.0)..
как уж вы будете вникать в код и его редактировать - это уже только от вас зависит