Перейти к содержанию

Сообщения от Текущие вопросы и ответы по редактору карт

Аватар пользователя
#5232
Задачу сделай среди второстепенных в Map Properties Tree и активируй (и выполняй) скриптом. А разговор с отшельником красиво оформишь TalkBox'ом.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#5233
Возник еще один вопрос. Что не так с этим скриптом?

Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'Alteris-ruini', 'RegionEnter');
function RegionEnter(Itil)
MessageBox(path.."Alteris.txt");
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'Alteris-ruini', nil);
end;

Задумка такая: при входе Ильфиной в регион Alteris-ruini должно выдаваться текстовое сообщение, а затем скрипт прекращается.
И еще один вопрос: можно ли как-то сделать так, чтобы в случае ошибки с одним из скриптов остальные корректно выполнялись? А то после добавления этого скрипта перестал работать и скрипт с сообщениями по дням игры.
Аватар пользователя
#5234
Лишний end вижу.

Можно. Конструкция try except.
Точнее... Возможно, вру. Загуглил и не нашёл, как это сделано в lua, может, как-то иначе.
Обработка ошибок точно реализрвана Дурманом в скриптах мода NHF. Попробуйте скачать и посмотреть, как там. Но try вероятно используется.
 

К А
Стикеры GBF в Telegram
В ответ пользователю Navkratis
Аватар пользователя
#5236
Navkratis
И еще один вопрос: можно ли как-то сделать так, чтобы в случае ошибки с одним из скриптов остальные корректно выполнялись? А то после добавления этого скрипта перестал работать и скрипт с сообщениями по дням игры.

Пожалуйста, называй куски кода — блоками или функциями или участками скрипта, но не скриптами.

Во-первых, есть такая функция errorHook(sFunc), вставляешь внутрь тестируемой функции и в случае ошибки внутри неё сначала запустится функция sFunс. Но это поможет разве что для отладки. Во-вторых, если ошибка произошла внутри функции, то не выполнятся только последующие строки этой функции. Но: если ошибка произошла вне какой-то функции и перед триггером, то триггер не прогрузится и функция не запустится. Потому лучше всего, вставив errorHook в начало скрипта, в функцию sFunc вписать копии всех триггеров:
function Error()
Trigger(...)
Trigger(...)
...
Trigger(...)
end;
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю Navkratis
Аватар пользователя
#5238
Появилась еще одна проблема, которая выглядит до ужаса простой, но все же доставила мне затруднения. На прилагаемом скрине значение ShowCompleted в настоящее время выставлено true, и поэтому задание изначально отмечено выполненным. Когда же меняю это значение на false (больше ничего не трогаю), задание почему-то совсем пропадает из списка.

P.S. И еще одна проблемка - что не так в этом скрипте?

Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'enti', 'RegionEnter');
function RegionEnter(Itil)
MessageBox(path.."ent.txt");
AddHeroCreatures(Itil, CREATURE ANCIENT TREANTS, 1);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'enti', nil);
end;
end;
Вложения 1
1 файл • Общий размер: 37,9 KB
Аватар пользователя
#5239
Возможно ли контролировать выдачу опыта в сундуках? Например, чтобы в определённом сундуке было строго 500 ед.опыта и 1000 золота?
В ответ пользователю Miss Stark
Аватар пользователя
#5240
Miss Stark
Возможно ли контролировать выдачу опыта в сундуках? Например, чтобы в определённом сундуке было строго 500 ед.опыта и 1000 золота?
Можно. Для этого в редакторе карт выбираете сундук ,нажимаете пробел выбираете пункт фиксировано и пишете
1
Пример: если указать - "1" то в сундуке будет 1000 золота /500 опыта
2 - 1500/1000
3 - 2000/1500
и т.д.

Добавлено через 14 минут
Navkratis


P.S. И еще одна проблемка - что не так в этом скрипте?

Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'enti', 'RegionEnter');
function RegionEnter(Itil)
MessageBox(path.."ent.txt");
AddHeroCreatures(Itil, CREATURE ANCIENT TREANTS, 1);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'enti', nil);
end;
end;
Первое ,что бросается в глаза - это CREATURE ANCIENT TREANTS и отсутствие кавычек.
Необходимо указать ID (номер) монстра из pdf файла документации по игре.
Я так понимаю необходимы древние энты.Тогда необходимо написать следующее.
AddHeroCreatures("Itil", 54, 1);
и возможно 1 end лишний.
В ответ пользователю Fallenru
Аватар пользователя
#5241
Огромное спасибо, все получилось :) До этого пытался делать скрипт по примеру из HOMM5_Editor_Practical_Guide_rus, похоже, информация там не соответствует действительности.

Добавлено через 3 часа 55 минут
И если можно, задам последний вопрос, опять же, на тему "что здесь не так?" :rolleyes:

Trigger(OBJECT_TOUCH_TRIGGER, 'providez', 'providezF' );
SetObjectEnabled('providez', false)
function providezF(Itil)
MessageBox(path.."xizina.txt");
AddHeroSpells("Itil", 40);
Trigger(OBJECT_TOUCH_TRIGGER, 'providez', nil);
end;

Задумка такая - герой подходит к хижине провидца, там ему выпадает определенное сообщение и он получает заклинание "Силы фантома". Сообщение появляется, а вот заклинание - нет.
Аватар пользователя
#5242
Почаще заглядывай в консоль для выяснения таких ошибок. Там бы написали "Value was nil when getting global with name 'AddHeroSpells'!", что означает: переменная AddHeroSpells определена не была. Все скриптовые функции — это переменные, содержащие функции, которые определяются из запускающихся с игрой луашников. Если переменная определена не была, то такой функции нет. Тогда смотрим в руководство (или в редакторе скриптов щёлкаем Ctrl+Пробел) и выясняем, что есть только функция TeachHeroSpell. Её и вписываем.

Если будешь следовать таком принципу разбора ошибок, то и помощь не понадобится. Также ещё можно воспользоваться методом отладки Jack_of_Shadows.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#5243
Спасибо, помогло. Остается сделать тестовое прохождение сценария, и как следует отдохну от всех этих злокозненных скриптов :rolleyes:

Добавлено через 3 часа 12 минут
При тестировании карты выяснилась такая особенность - написанные выше участки скриптов (со входом в регион) почему-то активируются и когда в эти регионы входят вражеские герои, хотя была задумано, что они будут исполняться только при нахождении в них Ильфины. Так что теперь есть два варианта - либо забросить карту, которая все равно никого не заинтересует :rolleyes: , либо опять узнать с помощью форума, что пошло не так:o
Аватар пользователя
#5244
Ну очевидно, что регионы работают для любых героев.
Внутрь скобочек после каждой функции, запускаемой триггером входа в регион вставьте перемнную, например, heroname.
Далее:
function example(heroname)
if heroname=="Itil" then
Нужный код
end;
end;
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
#5246
Подскажите пожалуйста, как сделать чтобы на карте для определённого игрока уровень сложности не влияли на стартовые кол-во золота и ресурсов? Чтобы сделать при любой сложности например для конкретного игрока всегда ресурсы как на сложности герой?