Здравствуйте. Картоделы, можете подсказать как сделать задание с вопросами, на подобии да или нет, но при этом вопрос будет показываться только, если в армии героя будет определенное количество существ?
Сообщения от Скрипты
Хм...
(Попытка починить тему)
(Попытка починить тему)
Здравстуйте.
Очевидно: если есть существа, то выдавать QuestionBox, если нет – MessageBox
Очевидно: если есть существа, то выдавать QuestionBox, если нет – MessageBox
Здравствуйте дорогие картостроители. Можете подсказать команду, которая может убрать какие-то объекты с карты и поставить новые?
Здравствуйте!
RemoveObject (для статики)/ RazeBuilding (для зданий)
Наоборот: CreateStatic/CreateArtifact/..
RemoveObject (для статики)/ RazeBuilding (для зданий)
Наоборот: CreateStatic/CreateArtifact/..
Приветствую рабочий класс. Проблема такова - нужно отследить активацию квеста - условия Коэффициент сюжетный и захвачен ли игроком город. Код таков. Стартую поток в начале скрипта, но игра выдает ошибку в консоли при загрузках. Что не так? Другие треды такие же нормально идут, а этот...
Value was NIL when getting global with name 'ActFinalSQ'
Добавлено через 39 минут
И второй вопрос вам с двух ног распишу. Не понимаю, как работает QuestionBox. Код представлю ниже. Что хочу - при взаимодействии с объектом всплывают диалоги, которые меняются в зависимости от коэффициента внутриигрового. В один из моментов должен быть представлен квешнбокс игроку, но в этот же момент времени воспроизводится функция которая в квешнбоксе забита при нажатии ОК, потом при ОТМЕНА, а потом вдобавок действие, которое делается при другом коэффициенте. У меня тут уже голова трескается, потому что всё вроде и работает - функции выполняются, да только не так, как нужно! Памахите решить траблс - что поменять нужно?
Добавлено через 2 минуты
Там в самом низу некорректный комментарий - ETP -- телепорт к крипте.
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 -- телепорт к крипте.
При указании функции-коллбэка в QuestionBox она должна выглядеть как строка. "AYE", "AEN"
Действительно - убрал скобки и всё заработало как надо. Но теперь другой вопрос к этому же фрагменту кода. Теперь Обьект не реагирует на последующие взаимодействия, кроме первого. Триггер не сбрасывал ни где. В чем я ошибся?
Добавлено через 18 минут
Ай. Решил проблему, заменив if на elseif. Когда искал решение первой ошибки исправил, а вернуть забыл! Теперь вопрос таки по треду - ошибки больше нет, всё грузится, но при выполнении условий ничего не происходит...
Добавлено через 18 минут
Ай. Решил проблему, заменив if на elseif. Когда искал решение первой ошибки исправил, а вернуть забыл! Теперь вопрос таки по треду - ошибки больше нет, всё грузится, но при выполнении условий ничего не происходит...
Приветствую, мои сонные друзья! У меня новый вопрос, который я даже понятия не имею, как реализовать! Задача: перед некоторыми битвами сохранять текущую армию героя, а в конце, после битвы, восстанавливать её обратно. Как можно отследить этот процесс? И, важно, не добавлять юнитов, просто, а было у меня 100 синов, 15 гидр, после битвы у меня должно остаться 100 синов и 15 гидр. Образно говоря.
Здравствуйте! Столкнулся с казалось бы элементарной проблемой. Не получается выполнить проверку этапа задания, подскажите, что не так делаю
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");
Функция SetObjectiveProgress используется для определения прогресса в задании, а не его стостояния. Вам нужна функция SetObjectiveState/GetObjectiveState
Оу, все посмотрел, но даже не заметил что у меня Progress написано, спасибо
Добавлено через 10 часов 52 минуты
Пытаюсь сделать проверку на наличие существа у героя. В логах пишет, что GetHeroCreature непонятный скрипт, поэтому заменяет ее на nil. Причем ни в одной карте не увидел этого скрипта, получается в официальном руководстве указан неверный скрипт для проверки наличия существ? Возник резонный вопрос, каким же скриптом делать проверку?
Добавлено через 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");
Автопереведено
Получить героя и существов
Господа товарищи
Прошу поделиться мыслями.
То есть.
Для неких глобальных таблиц добавляется поле со строкой куда помещается дословно имя таблицы и уже оно подставляется в хэндлер (т.е. для таблицы player1 = {key='player1'})
Но таблиц поменьше довольно много и для каждой писать ключ довольно геморно. Оборачивание хэндлера в анонимную функцию лишено смысла - замыкания не поддерживаются тут, локальная функция не имеет доступа к внешнему окружению.
Если кто-то шарит за это, отпишитесь.
Прошу поделиться мыслями.
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
endplayer - это таблица, которую надо параметром передать в хэндлер. Хэндлер object_touch триггера передается сейчас строкой (как в примере).
То есть.
Для неких глобальных таблиц добавляется поле со строкой куда помещается дословно имя таблицы и уже оно подставляется в хэндлер (т.е. для таблицы player1 = {key='player1'})
Но таблиц поменьше довольно много и для каждой писать ключ довольно геморно. Оборачивание хэндлера в анонимную функцию лишено смысла - замыкания не поддерживаются тут, локальная функция не имеет доступа к внешнему окружению.
Если кто-то шарит за это, отпишитесь.
Ооооо, объектно-ориентированный lua?!
Насчёт таблиц, я всего разок таким пользовался, кажется, но это был тривиальный случай, и я ничего такого хитрого для упрощения не изобретал.
the023, пожалуйста, расскажите, что это за RPGEngine такой и чем вы вообще пользуетесь, это очень-очень интересно. Вот эта библиотека, да?
Насчёт таблиц, я всего разок таким пользовался, кажется, но это был тривиальный случай, и я ничего такого хитрого для упрощения не изобретал.
the023, пожалуйста, расскажите, что это за RPGEngine такой и чем вы вообще пользуетесь, это очень-очень интересно. Вот эта библиотека, да?
Статистика
Приветствуем новейшего участника:
recijeb
Сейчас на сайте 9 пользователей 1315 гостей
Посетители сегодня 31
- Валера 111
- Граф Орлов
- Джек
- Драккошка
- Дугал
- Злобный Ящур
- Нэйко
- Саргон
- ALVYDAS
- Arandor
- AstralLein
- burymm
- Dark Jack
- dotahcxun
- elizbar1967
- fktifzobr@mail.ru
- Golvek
- Happy Life
- Heroist
- Hottler
- HwKeeper
- IchGViji
- kcfgogbfalgfl
- LifeForm
- Narron
- OrnsteinDragonslayer
- PingWing
- Ple-Sen
- Sir Syddan
- Siverfale
- Valery59