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

Сообщения от Скрипты

В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
Здравствуйте. Картоделы, можете подсказать как сделать задание с вопросами, на подобии да или нет, но при этом вопрос будет показываться только, если в армии героя будет определенное количество существ? 
Аватар пользователя
5 лет назад
Хм...
(Попытка починить тему)
Аватар пользователя
5 лет назад
Здравстуйте.
Очевидно: если есть существа, то выдавать QuestionBox, если нет – MessageBox
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
Здравствуйте дорогие картостроители. Можете подсказать команду, которая может убрать какие-то объекты с карты и поставить новые? 
Аватар пользователя
5 лет назад
Здравствуйте!
RemoveObject (для статики)/ RazeBuilding (для зданий)

Наоборот: CreateStatic/CreateArtifact/..
Аватар пользователя
5 лет назад
Приветствую рабочий класс. Проблема такова - нужно отследить активацию квеста - условия Коэффициент сюжетный и захвачен ли игроком город. Код таков. Стартую поток в начале скрипта, но игра выдает ошибку в консоли при загрузках. Что не так? Другие треды такие же нормально идут, а этот...
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 -- телепорт к крипте.
Аватар пользователя
5 лет назад
При указании функции-коллбэка в QuestionBox она должна выглядеть как строка. "AYE", "AEN"
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
Действительно - убрал скобки и всё заработало как надо. Но теперь другой вопрос к этому же фрагменту кода. Теперь Обьект не реагирует на последующие взаимодействия, кроме первого. Триггер не сбрасывал ни где. В чем я ошибся?

Добавлено через 18 минут
Ай. Решил проблему, заменив if на elseif. Когда искал решение первой ошибки исправил, а вернуть забыл! Теперь вопрос таки по треду - ошибки больше нет, всё грузится, но при выполнении условий ничего не происходит...
Аватар пользователя
5 лет назад
Приветствую, мои сонные друзья! У меня новый вопрос, который я даже понятия не имею, как реализовать! Задача: перед некоторыми битвами сохранять текущую армию героя, а в конце, после битвы, восстанавливать её обратно. Как можно отследить этот процесс? И, важно, не добавлять юнитов, просто, а было у меня 100 синов, 15 гидр, после битвы у меня должно остаться 100 синов и 15 гидр. Образно говоря.
В ответ пользователю OrnsteinDragonslayer
Аватар пользователя
5 лет назад
Здравствуйте! Столкнулся с казалось бы элементарной проблемой. Не получается выполнить проверку этапа задания, подскажите, что не так делаю
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");
Аватар пользователя
5 лет назад
Функция SetObjectiveProgress используется для определения прогресса в задании, а не его стостояния. Вам нужна функция SetObjectiveState/GetObjectiveState
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
Оу, все посмотрел, но даже не заметил что у меня 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");
Аватар пользователя
5 лет назад
Автопереведено
Получить героя и существов
В ответ пользователю }{0TT@6bI4
5 лет назад
Господа товарищи

Прошу поделиться мыслями.
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'}) 

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

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

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

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 9 пользователей 1315 гостей