У меня вызвали сомнения вот эти строчки:
local x,y,p = 0;
if IsObjectExists("Olhar") == true then
x,y,p = GetObjectPosition("Olhar");
end;
if GetHeroTown("Olhar") ~= nil then
p = 1;
end;1. local x, y, p = 0;-- эквивалентно --
local x = 0
local y = nil
local p = nil
-- а не --
local x = 0
local y = 0
local p = 0
2. В функции, которая вызывается только для живого героя проверяется его наличие, причём нетривиальным (IsHeroAlive) способом. Зачем?
3. Не используется функция, которая даёт имя города вместо имени героя, если тот в городе, что может привести GetObjectPosition к ошибке.
P.S. Смотрел по 76-й сборке.
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога
Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4