Перейти к содержанию
#907
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, в котором потерей героя может считаться и его сбегание с поля боя с последующим выкупом его в таверне.

Статистика

Приветствуем новейшего участника: leyu