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;
У данного скрипта только второй недостаток, т.к. первый получиться никак не успеет - все уже будут заменены.
Спасибо за замеченный недочёт.