Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
8 лет назад
Такой вопрос. Имеем это в боевом скрипте:

function AttackerUnitDeath(unit)
SummonCreature(DEFENDER, CREATURE_GHOST, 50 * diff)
end

Какое нужно поставить условие, чтобы призраки не появлялись при потере боевых машин (тележка, баллиста и палатка)? Что-то не соображу. Помогите, плиз.
Аватар пользователя
8 лет назад
function AttackerUnitDeath(unit)
Можно проверить тип юнита:
IsCreature(unit);
А ещё там реализованы готовые функции где всё это уже проверяется, можно использовать AttackerCreatureDeath вместо AttackerUnitDeath. Цитата из руководства Новика:
В файле /scripts/combat-startup.lua данный хук заменен на целый набор функций:
void AttackerUnitDeath(unitName)
void AttackerHeroDeath(sUnitName)
void AttackerCreatureDeath(sUnitName)
void AttackerWarMachineDeath(sUnitName)
void AttackerBuildingDeath(sUnitName)
void DefenderUnitDeath(sUnitName)
void DefenderHeroDeath(sUnitName)
void DefenderCreatureDeath(sUnitName)
void DefenderWarMachineDeath(sUnitName)
void DefenderBuildingDeath(sUnitName)
Аватар пользователя
8 лет назад
Спасибо!
Аватар пользователя
8 лет назад
такой вопрос - есть ли возможность узнать через боевой скрипт, было ли совершено какое-либо действие героем или юнитом? все функции из руководств по типу UnitCastGlobalSpell() и т.п. заставляют юнит совершить какое-либо действие, но можно ли узнать было ли совершено такое действие в принципе по ходу боя, не прописывая его явным образом?
Аватар пользователя
8 лет назад
Тут такой вопрос (для финальной версии карты нужно), есть скриптовая команда MoveHero("Straker", GetObjectPosition("PlayerTown")). Она рабочая, но не всегда... порой он остается на месте. К примеру, если у входа в город стоит герой. Можно ли как-то это изменить?

Добавлено через 1 минуту
Мне нужно одно: чтобы герой сломя голову бежал после своего появления на конкретный замок.

Добавлено через 2 минуты
Помнится, в кампании Империя Единорога некромант в первой миссии так себя и ведет. Мне нужно что-то подобное, но:

Герой появляется в определенный день и в замке может сидеть герой.
Аватар пользователя
8 лет назад
Вопрос: я поставил регион у замка игрока 2 и назвал его vyhod1, я хочу чтобы оттуда никто не выходил, посему хочу заблокировать этот регион. Пишу
SetRegionBlocked(vyhod1, true, 2);
Но это не работает и герой гуляет. Что не так?
Аватар пользователя
8 лет назад
Вместо true нужно 1.
В ответ пользователю OrnsteinDragonslayer
Аватар пользователя
8 лет назад
OrnsteinDragonslayer
Вопрос: я поставил регион у замка игрока 2 и назвал его vyhod1, я хочу чтобы оттуда никто не выходил, посему хочу заблокировать этот регион. Пишу
SetRegionBlocked(vyhod1, true, 2);
Но это не работает и герой гуляет. Что не так?
Кавычек вокруг имени региона не хватает.
В ответ пользователю RedHeavenHero
8 лет назад
Можно ли как то сделать так, что бы функция работала каждую неделю не переписывая код много раз с переменной?
Код:
SetObjectEnabled("tav", nil)
function Army(heroname)
MessageBox("Maps/SingleMissions/Revenge of the/qwe.txt")
QuestionBox("Maps/SingleMissions/Revenge of the/rtyui.txt", "arm")
Trigger(OBJECT_TOUCH_TRIGGER, "tav", "nil")
end

function arm(heroname)
sleep(2)
gold= GetPlayerResource(1, 6)
sleep(1)
if gold<6000 then
sleep(1)
MessageBox("Maps/SingleMissions/Revenge of the/rtyu.txt")
else
gold= GetPlayerResource(1, 6)
sleep(1)
if gold>=6000 then
SetPlayerResource(1, GOLD, gold - 6000)
AddHeroCreatures("Godric", 2, 80)
MessageBox("Maps/SingleMissions/Revenge of the/aer.txt")
end
end
end
В ответ пользователю Годрикова впадина
Аватар пользователя
8 лет назад
Годрикова впадина
Можно ли как то сделать так, что бы функция работала каждую неделю не переписывая код много раз с переменной?
Код:
SetObjectEnabled("tav", nil)
function Army(heroname)
MessageBox("Maps/SingleMissions/Revenge of the/qwe.txt")
QuestionBox("Maps/SingleMissions/Revenge of the/rtyui.txt", "arm")
Trigger(OBJECT_TOUCH_TRIGGER, "tav", "nil")
end

function arm(heroname)
sleep(2)
gold= GetPlayerResource(1, 6)
sleep(1)
if gold<6000 then
sleep(1)
MessageBox("Maps/SingleMissions/Revenge of the/rtyu.txt")
else
gold= GetPlayerResource(1, 6)
sleep(1)
if gold>=6000 then
SetPlayerResource(1, GOLD, gold - 6000)
AddHeroCreatures("Godric", 2, 80)
MessageBox("Maps/SingleMissions/Revenge of the/aer.txt")
end
end
end
Конечно можно просто триггер обнулять не надо
В ответ пользователю DarkLordax
8 лет назад
Всмысли?
Сейчас стоит OBJECT_TOUCH_TRIGGER, надо просто что бы функция снова была доступна каждую неделю.
В ответ пользователю Годрикова впадина
Аватар пользователя
8 лет назад
Годрикова впадина
Всмысли?
Сейчас стоит OBJECT_TOUCH_TRIGGER, надо просто что бы функция снова была доступна каждую неделю.
Блин ну тогда...
проверку дня сделай на понедельник или другой нужный день
В ответ пользователю Gerter
Аватар пользователя
8 лет назад
Gerter
такой вопрос - есть ли возможность узнать через боевой скрипт, было ли совершено какое-либо действие героем или юнитом? все функции из руководств по типу UnitCastGlobalSpell() и т.п. заставляют юнит совершить какое-либо действие, но можно ли узнать было ли совершено такое действие в принципе по ходу боя, не прописывая его явным образом?
Вот кстати тоже интересует данный вопрос. Насколько широкие возможности у комбат скриптов? И можно ли как то взаимодействовать с комбат логом? Например отслеживать и заносить походу боя определенные данные в переменную(количество потраченной маны, или сколько урона определенным заклинанием нанес).
Возможно ли это в принципе на уровне интерпретируемых скриптов? Или это все это скрыто без какой либо возможности взаимодействия?
В ответ пользователю Kavalar
Аватар пользователя
8 лет назад
Kavalar
Вот кстати тоже интересует данный вопрос. Насколько широкие возможности у комбат скриптов? И можно ли как то взаимодействовать с комбат логом? Например отслеживать и заносить походу боя определенные данные в переменную(количество потраченной маны, или сколько урона определенным заклинанием нанес).
Возможно ли это в принципе на уровне интерпретируемых скриптов? Или это все это скрыто без какой либо возможности взаимодействия?
1. Лог недоступен для скриптов
2. Количество потраченной маны можно отслеживать через функцию GetUnitManaPoints.
3. Косвенно можно определить, сколько существ убил герой каким-то заклинанием (само заклинание определить вряд ли удастся), если замерить ману и количество существ в каждом отряде до и после сотворения заклинания.
В ответ пользователю RedHeavenHero
Аватар пользователя
8 лет назад
RedHeavenHero
1. Лог недоступен для скриптов
2. Количество потраченной маны можно отслеживать через функцию GetUnitManaPoints.
3. Косвенно можно определить, сколько существ убил герой каким-то заклинанием (само заклинание определить вряд ли удастся), если замерить ману и количество существ в каждом отряде до и после сотворения заклинания.
То есть что-то вроде, если мана героя уменьшилась проверяем стеки врага?

Появилась идея по идентификации заклинания, например извлекать до начала боя его наличие у героя в книжке, и считать аналитически с поправкой на SP и бонусы от школ сколько урона оно должно наносить. Потом просто провести сравнение, и если сошлось количество затрачиваемой маны и урон то записать. Как думаете может сработать?
Единственная проблема правда это учет резиста, и если существ еще можно проанализировать то как быть с геройскими бонусами, или бонусами от артефактов пока непонятно.:smile32:

Статистика

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

Сейчас на сайте 5 пользователей 1443 гостей