HeroistЧто касается 'combat-common.lua' , я так и не нашел в той теме пояснений. Что именно считается, как "несколько строк" ? Хотелось бы по-подробнее, если можно.
1.В основном файле 'MapScript.lua' прописываем строки. (введем переменную 'vasya')
vasya = "Скриптовое имя героя";
SetGameVar("vasya", vasya);
2.Создадим новый lua файл в архиве карты в папке 'scripts' . Пусть будет 'battle.lua'
3.Копируем файл 'combat-common.lua' в архив с картой и дописываем несколько строк.
sleep(1);
vasya = GetGameVar("vasya");
if GetHeroName(GetAttackerHero()) == vasya then
doFile("/scripts/battle.lua");
print("Вася вступил в бой!");
else if GetHeroName(GetDefenderHero()) == vasya then
doFile("/scripts/battle.lua");
print("Вася вступил в бой!");
end;
end;
4.открываем созданный файл 'battle.lua' и пишем следующее:
vasya = GetGameVar("vasya");
if GetHeroName(GetAttackerHero()) == vasya then
human = ATTACKER;
comp = DEFENDER;
human_hero = GetAttackerHero();
print("игрок - атакующий");
else human = DEFENDER;
comp = ATTACKER;
human_hero = GetDefenderHero();
print("игрок - обороняющийся");
end;
Переменные 'human','comp','human_hero','comp_hero' введены для удобства - они потребуются практически во всех функциях боевого скрипта, независимо от того, игрок нападает или обороняется. Также для удобства print-ы для вывода инфы в консоль.
Осталось лишь добавить доп условия и их следствия в функции Prepare() или Start() - тут уже фантазия автора карт
Ps: Из пункта 3 видно, что боевой скрипт не будет запускатся, если герой 'vasya' в нем не учавствует.
Pss: Такой подход является более универсальным, в отличие от SetHeroCombatScript, в котором потерей героя может считаться и его сбегание с поля боя с последующим выкупом его в таверне.