Марта
В чём тут может быть причина? Почему во второй функции не работает проверка на имя персонажа, или на принадлежность к первому игроку?
Рассказываю. QuestionBox отдает в функцию-коллбек(Portal_HaladF в вашем случае) первым аргументом номер игрока,которому отослали сообщение, а не героя. Героя же она вообще не отдаёт. Так её написали разработчики. Решение тут такое:
function Town_Portal_Tilgatal_Obelisk_F (heroname)
local player = GetObjectOwner(heroname)
if(player == 1) then
QuestionBox("/Maps/SingleMissions/L1/Portal_Halad.txt", "Portal_HaladF(player,[["..heroname.."]])", "Town_Portal_Torost_question_F(player,[["..heroname.."]])"); ----вопрос: вы желаете в Халад? Если да - портуемся, если нет - предлагаем Торост.
sleep(1)
else
print("не тот герой");
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER, "town_portal_Tilgatal", "Town_Portal_Tilgatal_Obelisk_F");
затем функцию коллбек немного изменяем, учитывая что первым передается игрок
function Portal_HaladF (player,heroname)
local player = player + 0 -- Объясняю финт ушами. Когда вы отдаёте прям в кавычках аргументы, они все передадутся строками.
-- в player на входе в функцию лежит "1", а если прибавить к строке содержащей число ноль, она станет числом(т.е будет просто 1).
if(player == 1) then
SetObjectPosition(heroname, 56, 90, 0);
else
print("не тот герой"); -- тут идет проверка на игрока, так что целесообразнее написать "не тот игрок"
end;
end;
Теперь объясню, что произошло. Аргументы коллбек функции можно отдать руками(как в приведённом мною примере), однако стандартная передача аргументов затирается(Я не смог придумать этому решения, кроме как вручную отдать те параметры, которые игра передавала ранее. В этом случае это возможно, ведь передаётся лишь номер игрока). То есть мы просто открываем скобки(да, прям в кавычках) и пишем туда переменные. Важно: числа можно передать непосредственно, просто указав переменную в скобках. Вот этот же [["..heroname.."]] динозавр - это способ передачи строки. [[ ]] - это тоже кавычки. Важно чтобы кавычки перед двумя точками совпадали с теми кавычкам, которыми вы открываете
название вашей функции, иначе не сработает. Это достаточно неочевидная вещь, и о ней стоит почитать в руководстве Хоттабыча.
П.С
Под ваши нужды подошел бы TalkBox , но боюсь его использование может вызвать затруднения.