nd_try
----
Является устаревшим этой операции. Это означает, что он устарел и не может не поддерживаться в будущих версиях M & B. Вы должны использовать вместо try_end.
Что заместо чего пользовать?
Спасибо конечно, но не мог бы ты аккуратнее перевести?Если чёто не понятно говори, я исправлю.
условие попадания в параллельную ветку else_try определяется не в начале предыдущего блока, а всей историей выполнения этого блока.
парадигму структурного программирования, где условия выполнения блока проверяются перед его запуском.
try_for_parties
----
Открывает попробовать ведомость по каждому участнику по наземным карте.
try_for_agents
----
Открывает попробовать ведомость по каждому агенту по карте битвы.
store_script_param_1
----
Сохраняет значение первого параметра сценарий для назначения на ваш выбор. Если не вернуть его будет равна 0.
store_script_param_2
----
Сохраняет значение первого параметра второй сценарий для назначения на ваш выбор. Если не вернуть его будет равна 0.
Если хочешь, чтобы по частям выполнялись - делай еще вложенные try_begin в этот блок.Т.е. вложенные делать можно? Спасибо :) Вон она где значит собака порылась ;)
Только аккуратнее с числом этих блоков будь, проверяй, чтобы все блоки закрывались в нужных местах. А то я 1 раз пропустил всего-лишь 1 try_end и в итоге целый день ломал мозг, в чем же дело и почему в игре нужный мне эффект не выполняется. Модулька компилируется нормально, ошибок нет, проверял сам скрипт - все нормально написано...Если хочешь, чтобы по частям выполнялись - делай еще вложенные try_begin в этот блок.Т.е. вложенные делать можно? Спасибо :) Вон она где значит собака порылась ;)
Ок.Хотя из этого следует, что все-таки действия выполняются сразу после проверки условия...
Сегодня коротко.
При работе с операциями "ветвления" try_begin - else_try - try_end (которые очень похожи на if - else), надо помнить, чтоЦитата: Rongarусловие попадания в параллельную ветку else_try определяется не в начале предыдущего блока, а всей историей выполнения этого блока.
Пример:
(assign, reg0, 0), #устанавливаем reg0 = 0
(try_begin),
(eq, reg0, 0), #да, все верно, reg0 = 0. Начинаем выполнять этот блок.
Действие 1. #выполняем какие-то действия.
(assign, reg0, 1), #устанавливаем reg0 = 1
(eq, reg0, 0), #операция eq возвращает false. reg0 уже не равен 0. Блок откидывается.
(else_try) #блок без условий. Он выполнится, если все блоки выше вернули false. Значит, начинаем выполнять этот блок
Действие 2. #выполняем какие-то действия.
(try_end), #конец ветвления.
Таким образом, были выполнены как Действие 1, так и Действие 2. Таким поведением модульная система не вписывается вЦитата: Rongarпарадигму структурного программирования, где условия выполнения блока проверяются перед его запуском.
Be vigilant!
А то я 1 раз пропустил всего-лишь 1 try_end и в итоге целый день ломал мозг, в чем же дело и почему в игре нужный мне эффект не выполняется.очень полезная штука для проверки правильности написания скрипта это дебаг...
Хотя из этого следует, что все-таки действия выполняются сразу после проверки условияточно, и в дебаге это видно сразу и наглядно
Хотя из этого следует, что все-таки действия выполняются сразу после проверки условия...То-то и оно, что мне кажется, что ты все-таки прав... вернусь домой - проверю.
как можно узнать бежит сейчас юнит (агент) или неттоже задавался этим вопросом, ответа не нашел :(
Вы знаете в кауой пееременной хранится скорость?неа, не знаем... тайна сия велика есть :cry: :) если знаешь, поделись
сверяйте перменную с 0,тогда юнит будут двигатьсяэто конечно свежая и креативная идея :thumbup:
можно попробовать запустить триггер, с кажем с интервалом в 1 секунду, в котором
1) фиксируется позиция агента, заносится в слот
2) через одну сикунду эта позиция извлекается из слота и сравнивается с новой позицией объекта (получаем расстояние между позициями),на основании расстояния высчитываем скорость. Заносим новую позицию в слот вместо старой
... ну и так до бесконечности
Вы знаете в кауой пееременной хранится скорость?,если да сверяйте перменную с 0,тогда юнит будут двигатьсяМысль конечно хорошая, но что-то мне подсказывает, что нет в модульке такой переменной "по духу" чтоли не подходит... а даже еслибы и была, то проблемы теже, что и в описанном камрадом shturmfogel-ем способе. Т.е. при реализации искуственность будет в глаза бросаться.
Промтопереводчики это тру. :) Надо будет как-нибудь заняться переводом...
position_set_ *
----
Устанавливает X, Y или Z координаты входной позиции на входные значения.
overlay_set_position
position_set_ *
overlay_set_text
set_fixed_point_multiplier
(assign, ":val", 150),
(set_fixed_point_multiplier, 100),
(convert_to_fixed_point, ":val"),
в надежде, что число в переменной ":val" преобразуется в 1,5, то на деле, число в этой переменной просто умножиться на 100, и мы получим 15000.str_store_string
create_text_overlay
this_or_next|
(this_or_next|eq...),
(this_or_next|eq...),
(eq...)
А есть ли возможность добавлять собственные функции? В каком файле храняться их коды?Возможность то есть, но у нас нет возможности воспользоваться этой возможностью :) Все команды зарыты в движок игры, поэтому их могут изменять только те у кого есть исходники движка.
Например, если взять код troop_is_hero, то его можно легко преобразовать в troop_is_female.
Это намного упростило бы озвучку разнополых юнитов.
(party_set_extra_icon, <party_id>, <map_icon_id>, <up_down_distance_fixed_point>, <up_down_frequency_fixed_point>, <rotate_frequency_fixed_point>, <fade_in_out_frequency_fixed_point>)
начиная с up_down_distance_fixed_point(party_get_position, reg3, "p_main_party"),
или
(position_get_x, reg3, "p_main_party"),
(position_get_y, reg4, "p_main_party"),
и еще некоторые команды вслепую
{reg3} и {reg4} выводятся в тексте в меню лагеря.
Но либо нули, либо ошибки, либо явно не координаты.
в лаунчире ставишь галочки напротив "включить режим редактирования" и "показывать частоту кадров", во время игры на глобальной карте нажимаешь ctrl+E
в лаунчире ставишь галочки напротив "включить режим редактирования" и "показывать частоту кадров", во время игры на глобальной карте нажимаешь ctrl+EУ вас правда это работает? Конечно же я это пробовал. Еще советуют Z удерживать, но это никаких мне координат не выводит. И вообще ничего не происходит. Пробовал и на Варбанде и на Истории героя.
(party_get_position, pos3, "p_main_party"),Вот спасибо, а это то, что нужно. А то как-то вслепую угадываю.
(position_get_x, reg3, pos3),
(position_get_y, reg4, pos3),
(position_get_z, reg5, pos3),
У вас правда это работает? Конечно же я это пробовал.
они как бы умножаются на 100Они умножаются на текущий fixed_point_multiplier.
Это, вот эта функция?Да.
(set_fixed_point_multiplier, <value>),
Мне ещё не понятно, есть ли у партий идентификаторы? Вроде, должны быть. Но когда пытаешься вывести их на экран:trp_x — это чё? slot_troop_leaded_party прописывается только у лордов. У остальных он 0.
(troop_get_slot, ":party_no", "trp_x", slot_troop_leaded_party),