МартаУвы, не работает. В игре пишут:
[Script Warning!] Walue was NIL when getting global with name 'player'
Script Error: attempf to perform arithmetic on a nil value
ЗЫ Что такое TalkBox, я даже не знаю).
Возможно накосячил я где-то. Сейчас я протестирую у себя, и отправлю вам.
АПД:
Действительно, почему-то с плеером косяк, я его исправил. Ниже приведён полностью рабочий кусок кода, протестирован мной.
вам осталось добавить такую же пляску с [[ ]] к плееру. Одно скажу: в вашем случае вторая проверка излишне. Если вы показываете сообщение лишь 1 игроку, нет смысла в функции портала даже проверять, что это игрок первый, ибо он и так только первый. Но вы доделайте с передачей игрока, чтобы на будущее понимать как это работает. Но в самом коде, как вы можете увидеть, он не понадобился.
SetObjectEnabled("testObj",nil)
Trigger(OBJECT_TOUCH_TRIGGER,"testObj","testF")
function testF(heroname)
local player = GetObjectOwner(heroname);
if(player == 1) then
QuestionBox(GetMapDataPath().."messages/broken_portal.txt","callbackF([["..player.."]],[["..heroname.."]])","callback_noF([["..player.."]],[["..heroname.."]])") -- сообщение произвольное из моей папки.
end;
end;
function callbackF(player,heroname)
local x,y,floorID = GetObjectPosition(heroname) -- Для теста герой просто телепортируется на месте
SetObjectPosition(heroname,x,y,floorID)
end;
function callback_noF(player,heroname)
local x,y,floorID = GetObjectPosition(heroname)-- Для теста герой просто телепортируется на месте + 5 клеток по всем осям
SetObjectPosition(heroname,x+5,y+5,floorID)
end
Ниже привожу уже исправленный ваш код
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)
SetObjectPosition(heroname, 56, 90, 0);
end;
Надеюсь заработает, что-то к ночи голова не варит - извиняюсь, если какая-то глупая ошибка будет, проверьте пять раз логику происходящего на всякий пожарный