Тема: Модульная система. Вопросы и ответы.  (Прочитано 312208 раз)

Тогда могу предложить следующее: в конце скрипта game_start вставьте вот это
(party_set_slot, "<идентификатор вашего замка>", slot_center_ex_faction, fac_neutral),

И хочу спросить... Я пишу скрипт, скрипт большой и с логическими ошибками. Чтобы было легче разобраться с ошибками решил отмониторить то, когда и какие значения будут принимать его переменные с помощью сообщений (которые записываются в журнал истории). Но журнал едва-ли вмещает то, что я желаю в нём увидеть. ...Так как его расширить, не подскажете?

...Так вот, отмониторил я его переменные (пришлось частями) и выяснилось, что у некоторых конструкций try_begin проверяются только первые несколько блоков (не выполняется даже то, что непосредственно после else_try). Скажем, вот эту конструкцию
я даже вытащил из скрипта и разместил обособленно... ...Вместо того, чтобы заканчиваться на третьем else_try теперь почему-то заканчивался на шестом. В силу каких-таких правил, интересно, такое происходит?

Ясно: надо было и тестировать как скрипт, а не пихать в триггер для миссии (они похоже не рассчитаны на объёмные конструкции).
« Последнее редактирование: 09 Мая, 2014, 10:14 от Дикий-дикий повар »
Помогите кто-нибудь, пожалуйста. Как я уже сказал, пишу скрипт (для построения юнитов различными строями). В конце скрипта у меня два цикла, для расчёта позиций и для поиска наиболее подходящего для позиции агента, один в другом (изначально расположил цикл для подбора агента в цикле для расчёта позиций). В цикле по агентам, как только находился более подходящий агент, происходила перепись его идентификатора из одной переменной в другую (похоже, что такое можно делать только в mission_templates), из которой брался идентификатор для скриптования.
...
    (get_distance_between_positions, ":distance_1", ":position", ":target_position"),
    (lt, ":distance_1", ":distance_2"),
    (assign, ":distance_2", ":distance_1"),
    (assign, ":agent_2", ":agent"),
   (try_end),
   (agent_set_scripted_destination, ":agent_2", ":target_position", 1),
   (assign, ":distance_2", 100000),
  (try_end),
На деле игра (как раз на этом-самом скриптовании) жаловалась на инвалидский идентификатор агента.
...Этот вариант в любом случае не подойдёт, т. к. будет сложновато (если вообще возможно) исключить для цикла идентификаторы уже заскриптованых агентов (в случае ежели они и до этого находились в заскриптованом состоянии). Посему решил сделать по-другому. Но ежели просто поменять циклы местами (внутри цикла по агентам цикл для расчёта позиций), то получается, что для каждого агента будут персонально просчитываться одни и те же позиции.
 Вот если бы разместить эти циклы отдельно один от другого: в первом позиции рассчитываются и записываются в регистры позиций, скажем с pos66 по pos109, а во-втором агенты будут по-очереди примеряться на каждую позицию и скриптоваться на более подходящую из них. Просто я не могу сообразить, как можно было бы осуществить запись расчётов на каждой интерацие в новый регистр.
Ответ #752 17 Мая, 2014, 21:57
0
Есть следующее меню:

Интересует пункт recrut_all: По слоту slot_town_num_unique_troop хранится значение 4. Но на экране отображается Recrut all (184 denars) вместо Recrut all (800 denars). Но деньги у игрока забирает как надо т.е 800 динаров. В чем ошибка???? :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\
Ответ #753 18 Мая, 2014, 02:01
0
Ошибка в том, что блок команд пункта меню выполняется после активация этого пункта меню.
А строки формируются раньше.
Нужно вычисления, сколько будет стоит найм всех, перенести в блок команд всего меню.

Куда-то сюда

 [
    (party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
    (str_store_troop_name_plural, s20, ":trp"),
  ],
 

Добавлено: 18 Мая, 2014, 02:04

...Этот вариант в любом случае не подойдёт, т. к. будет сложновато (если вообще возможно) исключить для цикла идентификаторы уже заскриптованых агентов (в случае ежели они и до этого находились в заскриптованом
Слоты агентов вам в помощь.
« Последнее редактирование: 18 Мая, 2014, 02:04 от Rongar »
Благодарю, Rongar. Возьму слот slot_agent_courage_score - всё равно собираюсь держать всех и постоянно в заскриптованом состоянии (в любом случае нужно будет попробовать добавить слотов). Теперь можно сказать, что скрипт принял нужную форму, только вот все агенты скриптуются на одну точку - ну да это уже мои проблемы (я знаю где ошибся).
Ответ #755 18 Мая, 2014, 18:11
0
Ошибка в том, что блок команд пункта меню выполняется после активация этого пункта меню.
А строки формируются раньше.
Нужно вычисления, сколько будет стоит найм всех, перенести в блок команд всего меню.

Куда-то сюда

 [
    (party_get_slot, ":trp", "$current_town", slot_town_unique_troop),
    (str_store_troop_name_plural, s20, ":trp"),
  ],

Не помогло
Ответ #756 18 Мая, 2014, 21:15
0
Возьму слот slot_agent_courage_score - всё равно собираюсь держать всех и постоянно в заскриптованом состоянии (в любом случае нужно будет попробовать добавить слотов).
Слоты можно свои добавлять. Главное чтобы номера не пересекались с уже существующими.


Не помогло
Загадка какая-то. Примеров, когда так работает по коду дофига.
Две версии осталось только
1. Сменить регистр на что-то побольше. Возможно где-то переписывается.
2. Сделать через строку
(str_store_string,s11,блабалбал{reg0}),


 
Ответ #757 18 Мая, 2014, 22:37
0
Загадка какая-то. Примеров, когда так работает по коду дофига.
Две версии осталось только
1. Сменить регистр на что-то побольше. Возможно где-то переписывается.
2. Сделать через строку
(str_store_string,s11,блабалбал{reg0}),
Я использовал другой регистр (reg60). Оно помогло
Ответ #758 19 Мая, 2014, 14:21
0
Подскажите на, что указывает данная ошибка, возникает через некоторое время  после боя, если не заходить в села, замки, города. (всю модульную перерыл понять не могу, при срабатывание забивает лог сообшений, номера партий могут быть разные)

script error on opcode:1680:Invalid Party ID: 2769;LINE NO:10:
 At Game triggers trigger no: 33 consequences.
 At Game triggers trigger no: 33 consequences.

(хотя бы в общих чертах где искать)
script error on opcode:1680:Invalid Party ID: 2769;LINE NO:10:
 At Game triggers trigger no: 33 consequences.
 At Game triggers trigger no: 33 consequences.
 =
сбой возникает при попытке использовать идентификатор агента в операции party_get_battle_opponent (смотрите в header_operations номер 1680) в триггере номер 33, 2769 - это насколько я понимаю значение, которое операция получила вместо идентификатора партии, и 10 - точно не знаю наверное строка в триггере.
Ответ #760 19 Мая, 2014, 15:26
0
Спасибо посмотрю
 

Добавлено: 19 Мая, 2014, 15:31

триггере номер 33
еще вопрос триггере номер 33 где искать.

 

Добавлено: 19 Мая, 2014, 16:18

Дикий-дикий повар
Все спасибо, нашел  :thumbup:
   
« Последнее редактирование: 19 Мая, 2014, 16:18 от Pavvvell »
Ответ #761 24 Мая, 2014, 23:41
0
Объясните мне плиз:
1. Где находить размер гарнизона замка и города, и отрядов лордов и Гг. мне нужно установить 150, 400, 100 и 100 соответственно. И отключить влияние известности и харизмы на повышение кол-ва людей в отряде, только сто, не больше.
2.Как сделать чтобы с начала игры карта была в "тумане", то есть ни замков, ни городов, ни деревень ничего не было видно, только когда Гг проезжает рядом уже появляется и остается на всегда.
3.Чтобы в деревни нанимались только крестьяне, а не новобранцы культур. И найм их зависел от известности и отношения к деревне, например: с известностью в 100 ед и отношению в 10, Гг мог нанять от 5 до 7 крестьян.
П.С. если это где-то есть, то ссылку киньте. Заранее спасибо.
Ответ #762 05 Июня, 2014, 22:28
0
Привет Именно он
1. Для этого тебе нужен Morghs M&B WB-WFAS Editor(скачать можно прямо с сайта если не ошибаюсь), в Party templates editor там изменяешь pt_kingdom_1_reinforcements_a, или pt_kingdom_2_reinforcements_a и всех остальных.
2. Также нужен Morghs M&B WB-WFAS Editor, в parties editor  там убираешь флажок always_visible, и все.
3. Для этого тебе понадобится МС(модульная система), там в module_scripts, находишь культуру фракции и находишь:
      (faction_set_slot, "fac_culture_1",  slot_faction_tier_1_troop, "trp_swadian_recruit"),

изменяешь на например:
      (faction_set_slot, "fac_culture_1",  slot_faction_tier_1_troop, "trp_farmer"),
и т.д.

Ссылки на скачивание:
-Morghs M&B WB-WFAS Editor:
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=34
-МС(модульная система):
http://rusmnb.ru/index.php?action=dldir;sa=details;lid=185
P.S. Здесь же на сайте можно найти как ими пользоваться
Ответ #763 06 Июня, 2014, 19:55
0
Дана презентация:

Вызывается следующим образом из меню reports:

Результат на скрине mb4.jpg

Но не появляется надписть Declaration of War {s1} has declared war against {s2}!, там, где должна быть надпись (ожидание.jpg).
Как это исправить??? :-\ :-\ :-\ :-\ :-\ :-\
 

Добавлено: 06 Июня, 2014, 21:38

Уже исправил
« Последнее редактирование: 06 Июня, 2014, 21:38 от Janycz »
Ответ #764 09 Июня, 2014, 19:23
0
Добрый день. Народ, подскажите в чем проблема. Использовал скрипт на разделение денег. Условно на дукаты и динары
Однако, в магазинах как были цены в динарах, так и осталось. Аналогично и по еженедельным выплатам и доходам. Подскажите, в чем проблема может быть?
Ответ #765 12 Июня, 2014, 14:38
0
Подскажите, есть оператор который заставляет просчитать партию ее маршрут, объясняю когда мы заставляем партию при помощи назначения поведения следовать туда -то, она начинает движение по прямой к этой цели и только когда, во что-нибудь упрется (горы или реку), начинает просчитывать свой маршрут, а можно сделать чтоб сразу.
Ответ #766 12 Июня, 2014, 15:57
0
Подскажите, есть оператор который заставляет просчитать партию ее маршрут, объясняю когда мы заставляем партию при помощи назначения поведения следовать туда -то, она начинает движение по прямой к этой цели и только когда, во что-нибудь упрется (горы или реку), начинает просчитывать свой маршрут, а можно сделать чтоб сразу.
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Ответ #767 12 Июня, 2014, 16:44
0
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Грузить будет.
Ответ #768 12 Июня, 2014, 20:29
0
Оператора нет. Но ты можешь реализовать это через поиск в глубину (как в классической задаче про путника)
Грузить будет.
Согласен.
Ответ #769 15 Июня, 2014, 00:34
0
Заметил, одну странность, я нанял в таверне (на последние деньги) наемников, через некоторое время выдал жалование остался должен им около тысячи , в следующем бою их всех героически угробил, а долг остался, (как я понимаю они ко мне с того света ночью являются и деньги требуют), как это поправить чтоб долг соответствовал количеству бойцов и менялся когда их количество уменьшается,  а то как-то неуютно, ну зачем мертвецам деньги? Может кто хорошо в бютжет презенташион разбирается или уже редактировал ее, а то я туда залез там черт ногу сломит.
« Последнее редактирование: 15 Июня, 2014, 00:38 от Pavvvell »
Если уж разглядывать такие тонкости, то неплохо бы добавить: как будет происходить распределение "погашенного долга" между подопечными? Снять с крайних убитых (это будет выглядеть по меньшей мере странно)? Случайно обделить некоторых? Или обделить всех в процентах (особенно чудесно ежели в компании без торговцев: "та-а-ак, в прошлый раз я вам задолжал и раздал что было, некоторые из нас не вернулись из боя, это сколько же я должен доплатить?.. ...Эх мне бы секретаршу".)?
А что по презентации непонятно? Или надо целиком разбирать?
Ответ #771 16 Июня, 2014, 23:18
0
А что по презентации непонятно? Или надо целиком разбирать?
Непонятно следующее, как сделать отдельно долг который мы должны замкам и городам, и отдельно своему отряду, а то там считается все сразу в общем, и как выделить отдельно сколько мы должны отряду (где во общем самая главная текучка) не понято.
Найдите строку (assign, "$g_player_debt_to_party_members", ":player_new_debt_to_party_members"), - когда всё подсчитано и выведено на экран переписывает новые долги (локальная) в старые (глобальная), поскольку будем разделять, здесь понадобятся две сроки: для компании и для владений. Переменная ":player_new_debt_to_party_members" выше заполняется из reg0 и в этом же try-блоке выводится на экран, а в конце его вызывается скрипт провоцирующий реакцию компаньёнов с типом характера tmt_egalitarian. Содержимое этого блока, начиная с вывода текста и заканчивая (val_sub, ":cur_y", 27), (расстояние меж строк) надо удвоить: для вывода оплаты компании возьмите переменную ":total_wage" (в ней то, что вам нужно), для поселений ":all_centers_accumulated_taxes_and_rents" (налоги) + ":tax_lost" (потери налогов) + ":<где-нибудь после (val_add, ":net_change", ":net_profit"), сложите net_profit в новую переменную (объявите, естественно, вне цикла try_for_range)>" (производства).
Ещё что-нибудь?
Ответ #773 19 Июня, 2014, 04:50
0
Ещё что-нибудь?
Спасибо буду пробовать, если что спрошу.
Ответ #774 20 Июня, 2014, 19:51
0
В каком файле описаны характеристики оружий/брони?

0 Пользователей и 1 Гость просматривают эту тему.

Теги: