Форум HeroesWorld-а - Показать сообщение отдельно - NHF - новые герои для Heroes V 3.1
Показать сообщение отдельно
#1750
Старый 18.02.2015, 19:44
  #1750
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2380
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2380
Выставка наград
По умолчанию
Re: NHF - новые герои для Heroes V 3.1

Например, можно сделать так:
	----------------КИИНА---------------------
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;

__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием