Сообщения от Текущие вопросы и ответы по редактору карт
С помощью GetAttackerCreatures и GetDefenderCreatures (возвращают массив существ нападающего и защищающегося), а также с помощью IsHuman(ATTACKER) (возвращает true, если нападающий играет за человека).
Не надо вызывать StartCombat лучше. Такие штуковины нужны, если у Вас специфические условия победы в битве (например, у врага все существа призванные, надо именно призванных существ убить, так было в 6-5 оригинала как раз). Если условия победы стандартные (замочить всех, кроме призванных), это не нужно!
А как еще повесить битву на триггер?
2-й :Можно и по другому - сделать так чтоб скрипт срабатывал независимо от того, является ли игрок нападающим или обороняющимся. Триггеры здесь не нужны, делается путем добавления нескольких строк скрипта в файл 'combat-common.lua' - файл запускается игрой при старте любого боя.
PS: второй способ универсальнее для различных ситуаций боя. Можно так же сделать проверку на определенных героев.
А, я виноват, с другой функцией перепутал. Да, нападающий человек должен быть.
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога
Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
А как еще повесить битву на триггер?
Повесить битву на триггер? В смысле в самом бою или после него?
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога
Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога
Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
function tradeF()
TalkBoxForPlayers(1, nil, nil, nil, nil, "snar", 0, "путь/имя.txt", "путь/имя.txt", 0, "путь/имя.txt", "путь/имя.txt", "путь/имя.txt.", "путь/имя.txt");
end;
Trigger(OBJECT_TOUCH_TRIGGER, "trade", "tradeF");
function snar(player_id, choice)
monet = GetPlayerResource(1, GOLD);
if choice == 1
then SetPlayerResource(1, GOLD, monet-2000);
ChangeHeroStat("имя героя", STAT_ATTACK, 1);
elseif choice == 2
then SetPlayerResource(1, GOLD, monet-3000);
ChangeHeroStat("имя героя", STAT_ATTACK, 2);
elseif choice == 3
then SetPlayerResource(1, GOLD, monet-2000);
ChangeHeroStat("имя героя", STAT_DEFENCE, 1);
elseif choice == 4
then SetPlayerResource(1, GOLD, monet-6000);
ChangeHeroStat("имя героя", STAT_DEFENCE, 2);
TeachHeroSpell("имя героя", 25);
end;
end;
Вот. trade - это название объекта, где идёт торговля.
Я пробовал написать if A and B then C - чтобы после and указать второе условие (нужное количество золота) для получения нужных параметров, но получилась полная ерунда.
Либо сделать такой толкбокс, чтобы он не выводил варианты, на которые нет денег изначально.
Нет, ну так и делается, только потом, в самом конце нужно ещё else добавить, который выводит сообщение о нехватке денег. А как ещё?
Либо сделать такой толкбокс, чтобы он не выводил варианты, на которые нет денег изначально.
Поробовал снова - всё действительно работает. Хм... видать, я не выспался) Спасибо!