2. Для начала надо зарезервировать героя за определённым игроком.
function new_day()
local day = GetDate(DAY)
if day == день_с_начала_игры then
DeployReserveHero("скриптовое имя героя", x, y, этаж)
end
end
Trigger(NEW_DAY_TRIGGER, 'new_day')
Чтобы герой не двигался:
EnableHeroAI("скриптовое имя героя", nil)