Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#2183
Старый 04.04.2016, 20:41
  #2183
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Скрипты

Вот сокращенный вариант из моей карты, только комп за игроком гонится, поэтому может будет не совсем так выглядеть, как вам хотелось. hero герой компьютера, player_hero соответственно герой игрока. Запускать как поток. Комп пытается допрыгать до игрока в начале хода, плюс если игрок за это время быстро отойдет в сторону, это тоже корректно обработается.
function MainKnightSavedHeroReturnWithPlayerThread()

local hero = quest_main_knight.AttackParam('hero');
local start_date = GetDate(ABSOLUTE_DAY);
local move_date = 0;
local curr_date;
local hx_last, hy_last, hf_last = -1, -1, -1;
local hx_curr, hy_curr, hf_curr;

while(1) do
if(IsObjectExists(hero)) then

if(IsObjectExists(player_hero)) then
hx_curr, hy_curr, hf_curr = GetObjectPosition(player_hero);
if((hx_last ~= hx_curr) or (hy_last ~= hy_curr) or (hf_last ~= hf_curr)) then
hx_last, hy_last, hf_last = hx_curr, hy_curr, hf_curr;
MoveHeroRealTime(hero, hx_curr, hy_curr, hf_curr);
end
end

-- в начале каждого хода добавляются очки передвижения
curr_date = GetDate(ABSOLUTE_DAY);
if(move_date ~= curr_date) then
move_date = curr_date;
ChangeHeroStat(hero, STAT_MOVE_POINTS, 2500);
sleep(1);
if(IsObjectExists(player_hero)) then
hx_curr, hy_curr, hf_curr = GetObjectPosition(player_hero);
MoveHeroRealTime(hero, hx_curr, hy_curr, hf_curr);
end
end

else
break
end
sleep(5);
end

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