Форум HeroesWorld-а - Показать сообщение отдельно - NHF - новые герои для Heroes V 3.1
Показать сообщение отдельно
#2758
Старый 08.04.2016, 17:54
  #2758
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: NHF - новые герои для Heroes V 3.1

DirtyLiarСпасибо.

Ещё вопрос:

Как корректно (и, по возможности, компактно) заменить в армии героя существо"А" на существо"Б"? (Допустим, навскидку, специализация героя - в бою всех своих баньши превращать в рыцарей смерти)

Конкретный пример:

if (hero == "replacer") and (GetHeroCreatures ('replacer', CREATURE_А) > 0 ) then
local replace = GetHeroCreatures ('replacer', CREATURE_А);
RemoveHeroCreatures ('replacer', CREATURE_А, replace);
AddHeroCreatures ('replacer', CREATURE_B, replace);
end;
Данный скрипт имеет ряд недостатков:
1. Если заменяемые существа расставлены в несколько слотов, то при замене произойдёт объединение в один.
2. Если в армии присутствует только один слот заменяемых существ (и больше никакой армии), то при замене добавится ещё одно существо.
В моде NHF использован подобный скрипт для Дейдры, где она Умертвий заменяет на Баньши:
----------------ДЕЙДРА-------------------
function error_NHF_Nemor_F ()
print("error:NHF_Nemor_F");
end;
function NHF_HERO_F.Nemor ()
errorHook(error_NHF_Nemor_F);
local prirost = 0;
local creatures = "";
local temp_name = NHF_tempName_F("Nemor");
local count_umertvie = GetHeroCreatures("Nemor", CREATURE_WIGHT);
if count_umertvie > 0 then
RemoveHeroCreatures("Nemor", CREATURE_WIGHT, count_umertvie);
AddHeroCreatures("Nemor", CREATURE_BANSHEE , count_umertvie);
end;
end;

У данного скрипта только второй недостаток, т.к. первый получиться никак не успеет - все уже будут заменены.

Спасибо за замеченный недочёт.
Dyrman вне форума
Ответить с цитированием