Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3609
Старый 16.05.2022, 00:16
  #3609
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

МартаУвы, не работает. В игре пишут:

[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;

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

__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием