Скрипты - Страница 222 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 222 из 223
 
Опции темы
#3316
Старый 03.02.2021, 11:07
  #3316
^
Flame Crystal
 
Аватар для Flame Crystal
📖
Регистрация: 22.08.2020
Адрес: Украина
Сообщения: 115
Регистрация: 22.08.2020
Адрес: Украина
Сообщения: 115
Вопрос
Re: Скрипты

Здравствуйте. Картоделы, можете подсказать как сделать задание с вопросами, на подобии да или нет, но при этом вопрос будет показываться только, если в армии героя будет определенное количество существ? 
__________________
Это мой новый аккаунт, я в прошлом называлась Michel_Darina.
С уважением, ваша Дарина)
Мои сценарии:
Лесной хранитель
Путь к свету
Фалькон Сокол - готова на 90%
Это мой новый аккаунт, я в прошлом называлась Michel_Darina.
С уважением, ваша Дарина)
Мои сценарии:
Лесной хранитель
Путь к свету
Фалькон Сокол - готова на 90%
Flame Crystal вне форума
Ответить с цитированием
#3317
Старый 03.02.2021, 11:13
  #3317
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 23297
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 23297
По умолчанию
Re: Скрипты

Хм...
(Попытка починить тему)
__________________
"Мечты не уход от действительности, а средство приблизиться к ней."











Стикеры GBF в Telegram
"Мечты не уход от действительности, а средство приблизиться к ней."











Стикеры GBF в Telegram
Ment вне форума
Ответить с цитированием
#3318
Старый 03.02.2021, 17:03
  #3318
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
По умолчанию
Re: Скрипты

Здравстуйте.
Очевидно: если есть существа, то выдавать QuestionBox, если нет – MessageBox
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3319
Старый 08.02.2021, 12:14
  #3319
^
Flame Crystal
 
Аватар для Flame Crystal
📖
Регистрация: 22.08.2020
Адрес: Украина
Сообщения: 115
Регистрация: 22.08.2020
Адрес: Украина
Сообщения: 115
Вопрос
Re: Скрипты

Здравствуйте дорогие картостроители. Можете подсказать команду, которая может убрать какие-то объекты с карты и поставить новые? 
__________________
Это мой новый аккаунт, я в прошлом называлась Michel_Darina.
С уважением, ваша Дарина)
Мои сценарии:
Лесной хранитель
Путь к свету
Фалькон Сокол - готова на 90%
Это мой новый аккаунт, я в прошлом называлась Michel_Darina.
С уважением, ваша Дарина)
Мои сценарии:
Лесной хранитель
Путь к свету
Фалькон Сокол - готова на 90%
Flame Crystal вне форума
Ответить с цитированием
#3320
Старый 08.02.2021, 14:21
  #3320
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
По умолчанию
Re: Скрипты

Здравствуйте!
RemoveObject (для статики)/ RazeBuilding (для зданий)

Наоборот: CreateStatic/CreateArtifact/..
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3321
Старый 10.02.2021, 00:29
  #3321
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 155
Регистрация: 10.01.2016
Сообщения: 155
По умолчанию
Re: Скрипты

Приветствую рабочий класс. Проблема такова - нужно отследить активацию квеста - условия Коэффициент сюжетный и захвачен ли игроком город. Код таков. Стартую поток в начале скрипта, но игра выдает ошибку в консоли при загрузках. Что не так? Другие треды такие же нормально идут, а этот...
Value was NIL when getting global with name 'ActFinalSQ'
ERROR: StartThread first parameter must be a function
startThread(ActFinalSQ)

function ActFinalSQ()
         if A == 2 and SetObjectOwner('humanTown2', 1) then
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/ActFSQ0.txt")
         SetObjectPosition('AratF', 67, 67, 0)
         SetObjectPosition('AstridaF', 69, 70, 0)
         SetObjectPosition('LoggensF', 65, 70, 0)
         sleep(2)
         MoveCamera(67, 67, 0, 2, 1, 285, 1, 0)
         sleep(10)
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/ActFSQ1.txt")
         GetObjectiveState('FSQ', 1, OBJECTIVE_ACTIVE)
end
end


Добавлено через 39 минут
И второй вопрос вам с двух ног распишу. Не понимаю, как работает QuestionBox. Код представлю ниже. Что хочу - при взаимодействии с объектом всплывают диалоги, которые меняются в зависимости от коэффициента внутриигрового. В один из моментов должен быть представлен квешнбокс игроку, но в этот же момент времени воспроизводится функция которая в квешнбоксе забита при нажатии ОК, потом при ОТМЕНА, а потом вдобавок действие, которое делается при другом коэффициенте. У меня тут уже голова трескается, потому что всё вроде и работает - функции выполняются, да только не так, как нужно! Памахите решить траблс - что поменять нужно?
function Ensleg() --функция диалога
        if B == 1 then -- первая официальная встреча, диалог
           MessageBox("/Maps/SingleMissions/ChoiseOTW1/ED1.txt")
           sleep(2)
           MessageBox("/Maps/SingleMissions/ChoiseOTW1/ED2.txt")
           sleep(2)
           MessageBox("/Maps/SingleMissions/ChoiseOTW1/ED3.txt")
           sleep(2)
           B = 5
          if B == 5 then --спрашивает про телепорт к крипте
           QuestionBox("/Maps/SingleMissions/ChoiseOTW1/EQ.txt", AEY(), AEN())
        if B == 0 then -- встреча при неактивном квесте.
               MessageBox("/Maps/SingleMissions/ChoiseOTW1/ED0.txt")
        if B == 2 then -- встреча после тусни в крипте
               SQFinal()
        if B == 3 then -- встреча после прохождения квеста
               MessageBox("/Maps/SingleMissions/ChoiseOTW1/EE.txt")
        if B == 4 then -- есл игрок вступил в диалог рядом с криптой - спрашивает про возвращение назад.
               QuestionBox("/Maps/SingleMissions/ChoiseOTW1/EQ2.txt", AEY2(), AEN())
end
end
end
end
end
end
end

Trigger(OBJECT_TOUCH_TRIGGER, "ensleg", "Ensleg");


function AEY() -- ответ ДА - телепорт к крипте
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/EN1.txt")
         sleep(1)
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/EN2.txt")
         sleep(1)
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/EN21.txt")
         sleep(1)
         MessageBox("/Maps/SingleMissions/ChoiseOTW1/EN3.txt")
         sleep(2)
         ETP()
end

function AEY2() --телепорт домой
           SetObjectPosition('Ohtarig', 100, 84, 0, 2)
           SetObjectPosition('ensleg', 102, 89, 0)
           B = 5
end

function ETP() --отказ телепортироваться
         SetObjectPosition('Ohtarig', 80, 169, 0, 2)
         SetObjectPosition('ensleg', 80, 167, 0)
         B = 4
end


Добавлено через 2 минуты
Там в самом низу некорректный комментарий - ETP -- телепорт к крипте.
OrnsteinDragonslayer вне форума
Ответить с цитированием
#3322
Старый 10.02.2021, 08:47
  #3322
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
По умолчанию
Re: Скрипты

При указании функции-коллбэка в QuestionBox она должна выглядеть как строка. "AYE", "AEN"
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3323
Старый 11.02.2021, 00:46
  #3323
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 155
Регистрация: 10.01.2016
Сообщения: 155
По умолчанию
Re: Скрипты

Действительно - убрал скобки и всё заработало как надо. Но теперь другой вопрос к этому же фрагменту кода. Теперь Обьект не реагирует на последующие взаимодействия, кроме первого. Триггер не сбрасывал ни где. В чем я ошибся?

Добавлено через 18 минут
Ай. Решил проблему, заменив if на elseif. Когда искал решение первой ошибки исправил, а вернуть забыл! Теперь вопрос таки по треду - ошибки больше нет, всё грузится, но при выполнении условий ничего не происходит...
OrnsteinDragonslayer вне форума
Ответить с цитированием
#3324
Старый 17.02.2021, 16:50
  #3324
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 155
Регистрация: 10.01.2016
Сообщения: 155
По умолчанию
Re: Скрипты

Приветствую, мои сонные друзья! У меня новый вопрос, который я даже понятия не имею, как реализовать! Задача: перед некоторыми битвами сохранять текущую армию героя, а в конце, после битвы, восстанавливать её обратно. Как можно отследить этот процесс? И, важно, не добавлять юнитов, просто, а было у меня 100 синов, 15 гидр, после битвы у меня должно остаться 100 синов и 15 гидр. Образно говоря.
OrnsteinDragonslayer вне форума
Ответить с цитированием
#3325
Старый 07.03.2021, 13:12
  #3325
^
Капуста
 
Аватар для Капуста
📖
Регистрация: 07.02.2020
Сообщения: 9
Регистрация: 07.02.2020
Сообщения: 9
По умолчанию
Re: Скрипты

Здравствуйте! Столкнулся с казалось бы элементарной проблемой. Не получается выполнить проверку этапа задания, подскажите, что не так делаю

progress = GetObjectiveProgress("obj_alh", 1);

function func_alh_complite ()
  if (progress == 1)
   then MessageBox ("/Maps/SingleMissions/Vayshan0_1/mess_alh_complite.txt");
   SetObjectiveProgress("obj_alh", OBJECTIVE_COMPLETED);
   Trigger(REGION_ENTER_AND_STOP_TRIGGER, "reg_alh_complite", nil);
  end;
 end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "reg_alh_complite", "func_alh_complite");
__________________
Мемы по пятым героям - https://vk.com/please_sb
Мемы по пятым героям - https://vk.com/please_sb
Капуста вне форума
Ответить с цитированием
#3326
Старый 08.03.2021, 09:43
  #3326
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
По умолчанию
Re: Скрипты

Функция SetObjectiveProgress используется для определения прогресса в задании, а не его стостояния. Вам нужна функция SetObjectiveState/GetObjectiveState
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3327
Старый 08.03.2021, 23:26
  #3327
^
Капуста
 
Аватар для Капуста
📖
Регистрация: 07.02.2020
Сообщения: 9
Регистрация: 07.02.2020
Сообщения: 9
По умолчанию
Re: Скрипты

Оу, все посмотрел, но даже не заметил что у меня Progress написано, спасибо

Добавлено через 10 часов 52 минуты
Пытаюсь сделать проверку на наличие существа у героя. В логах пишет, что GetHeroCreature непонятный скрипт, поэтому заменяет ее на nil. Причем ни в одной карте не увидел этого скрипта, получается в официальном руководстве указан неверный скрипт для проверки наличия существ? Возник резонный вопрос, каким же скриптом делать проверку?
zog = GetHeroCreature("Ohtarig", 129)

function func_log ()
  if (zog == 1)
   then MessageBox("/Maps/SingleMissions/Vayshan0_1/mess_log1.txt");
   SetObjectiveState("obj_log", OBJECTIVE_ACTIVE);
   Trigger(REGION_ENTER_AND_STOP_TRIGGER, "reg_log", "func_log");
   else MessageBox("/Maps/SingleMissions/Vayshan0_1/mess_log.txt");
    sleep(1);
    StartCombat("Ohtarig", nil, 1, 129, 1, nil,"func_remove_log",nil, not nil);
    Trigger(REGION_ENTER_AND_STOP_TRIGGER, "reg_log", nil);
 end;
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "reg_log", "func_log");
__________________
Мемы по пятым героям - https://vk.com/please_sb
Мемы по пятым героям - https://vk.com/please_sb
Капуста вне форума
Ответить с цитированием
#3328
Старый 09.03.2021, 17:12
  #3328
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 904
Выставка наград
По умолчанию
Re: Скрипты

GetHeroCreatures
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3329
Старый 04.04.2021, 03:29
  #3329
^
the023
📖
Регистрация: 07.05.2016
Сообщения: 8
Регистрация: 07.05.2016
Сообщения: 8
Восклицание
Re: Скрипты

Господа товарищи

Прошу поделиться мыслями.

function BindTriggerToObject(object, handler)
Trigger(OBJECT_TOUCH_TRIGGER, object, handler)
end

RPGEngine.Init = function()
for i, player in players do
for j, object in player.RPG.BUILDINGS do
local handler = 'EnterBuilding('..player.key..", "..'"'..object.key..'")'
BindTriggerToObject(object.name, handler)
end
end
end

 

player - это таблица, которую надо параметром передать в хэндлер. Хэндлер object_touch триггера передается сейчас строкой (как в примере).

То есть.
Для неких глобальных таблиц добавляется поле со строкой куда помещается дословно имя таблицы и уже оно подставляется в хэндлер (т.е. для таблицы player1 = {key='player1'}) 

Но таблиц поменьше довольно много и для каждой писать ключ довольно геморно. Оборачивание хэндлера в анонимную функцию лишено смысла - замыкания не поддерживаются тут, локальная функция не имеет доступа к внешнему окружению.

Если кто-то шарит за это, отпишитесь.
__________________
eugnazaroff

создание скриптов к HOMM V
eugnazaroff

создание скриптов к HOMM V
the023 вне форума
Ответить с цитированием
#3330
Старый 04.04.2021, 18:16
  #3330
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 23297
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 23297
По умолчанию
Re: Скрипты

Ооооо, объектно-ориентированный lua?!
Насчёт таблиц, я всего разок таким пользовался, кажется, но это был тривиальный случай, и я ничего такого хитрого для упрощения не изобретал.
the023, пожалуйста, расскажите, что это за RPGEngine такой и чем вы вообще пользуетесь, это очень-очень интересно. Вот эта библиотека, да?
__________________
"Мечты не уход от действительности, а средство приблизиться к ней."











Стикеры GBF в Telegram
"Мечты не уход от действительности, а средство приблизиться к ней."











Стикеры GBF в Telegram
Ment вне форума
Ответить с цитированием
Ответ
Страница 222 из 223


Опции темы



Часовой пояс GMT +4, время: 21:07.


vBulletin v3.5.0, Copyright ©2000-2021, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru