Например, можно сделать так:
----------------КИИНА---------------------
NHF_Kiina_week = 0;
--NHF_Kiina_mass = {};
NHF_Kiina_mass_i = 0;
NHF_Kiina_mass_i_bad = 0;
NHF_Kiina_mass_preserv_creature = {{{44,145},{46,146},{48,147},{50,148},{52,149},{54,150},{56,151}},{10,9,7,4,3,2,1}};
function error_NHF_Kiina_F ()
print("error:NHF_Kiina_F");
end;
function NHF_HERO_F.Kiina (hero, mob)
errorHook(error_NHF_Kiina_F);
if hero then
NHF_Kiina_frendly_F(hero, mob)
return
end
if NHF_Kiina_week < ceil(GetDate(ABSOLUTE_DAY)/7) then
NHF_Kiina_week = ceil(GetDate(ABSOLUTE_DAY)/7);
local SizeMap = GetTerrainSize();
local count_mob = NHF_Kiina_mass_i_bad + (GetHeroLevel("Kiina")*NHF_Kiina_persent);
local temp_name = NHF_tempName_F("Kiina")
NHF_Kiina_mass_i_bad = 0;
local new_mobs = {n=0}
for i = 0, count_mob do
local x = random(SizeMap);
local y = random(SizeMap);
local z = random(GetMaxFloor()+1);
if IsTilePassable(x,y,z) == true then
NHF_Kiina_mass_i = NHF_Kiina_mass_i + 1;
local lvl_creature = floor((GetHeroLevel("Kiina")/5)+1)+random(3);
if lvl_creature > 7 then
lvl_creature = 7;
end;
local ID_creature = NHF_Kiina_mass_preserv_creature[1][lvl_creature][random(2)+1];
local name = "NHF_Kiina_creatures_"..NHF_Kiina_mass_i;
new_mobs.n = new_mobs.n + 1
new_mobs[new_mobs.n] = name
CreateMonster(name, ID_creature, NHF_Kiina_mass_preserv_creature[2][lvl_creature],x,y,z, MONSTER_MOOD_AGGRESSIVE, MONSTER_COURAGE_ALWAYS_FIGHT,(random(360)));
else
NHF_Kiina_mass_i_bad = NHF_Kiina_mass_i_bad +1;
end;
end;
sleep()
for i = 1, new_mobs.n do
local name = new_mobs[i]
PlayVisualEffect("/Effects/_(Effect)/Objects/Water/Siren.(Effect).xdb#xpointer(/Effect)", name, name.."_Effect_Tag");
SetObjectEnabled(name, nil);
SetTrigger(OBJECT_TOUCH_TRIGGER, name, "NHF_Touch_mobs_F");
end
ShowFlyingSign("/MapObjects/Preserve/NewHeroes/Kiina/Spawn_creatures.txt",temp_name,GetObjectOwner(temp_name), 5);
end;
end;
function NHF_Kiina_frendly_F(hero,mob)
local temp_name = NHF_tempName_F(hero);
if (IsAIPlayer(GetObjectOwner(temp_name)) ~= 1) and (hero == "Kiina") and mob > "NHF_Kiina_creatures_" and mob < "NHF_Kiina_creatures`" then
SetMonsterCourageAndMood(mob, GetObjectOwner(temp_name), MONSTER_MOOD_FRIENDLY, MONSTER_COURAGE_ALWAYS_JOIN);
end;
end;
NHF_mass_heroes_touch_mob = {"Hafad","Sandro","Fiona","Konstantin","Kiina"};
--Отключение и прикосновение мобов
function NHF_Touch_mobs_F(hero,mob)
if (IsAIPlayer(GetObjectOwner(hero)) ~= 1) and (IsObjectExists(mob) == not nil) then
for i, hero_temp in NHF_mass_heroes_touch_mob do
if IsHeroAlive(hero_temp) == true then
if (hero == hero_temp) then
NHF_HERO_F[hero_temp](hero_temp,mob);
break;
end;
end;
end;
if mob > "NHF" and mob < "NHG" then
StopVisualEffects(mob.."_Effect_Tag");
end
Trigger(OBJECT_TOUCH_TRIGGER, mob, nil);
SetObjectEnabled(mob,true);
sleep(0.1);
MakeHeroInteractWithObject(hero,mob);
--sleep();
Trigger(OBJECT_TOUCH_TRIGGER, mob, "NHF_Touch_mobs_F");
end;
end;