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

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

В ответ пользователю Gerter
#2828
Gerter
потестил у себя нужную часть кода - вот так все работает. каждый раз после смерти феникса/элемов герой их перепризывает
elemental = 0
fenix = 0

function DefenderHeroMove(hero)
if elemental == 0 then
elemental = 1
startThread(UnitCastGlobalSpell, hero, SPELL_SUMMON_ELEMENTALS)
end
if fenix == 0 then
fenix = 1
startThread(UnitCastGlobalSpell, hero, SPELL_CONJURE_PHOENIX)
end
return not nil
end

function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == 85) then
print('fire elem dead')
elemental = 0
end

if(GetCreatureType(unit) == 91) then
print('phoenix dead')
fenix = 0
end
end

Спасибо огромное. Помогло.
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
#2830
Вопрос к боевым скриптам. Хочу сделать боссбаттл, но не простой. Сражение начинается против суккубы и дьявола. После убийства суккубы дьявол пропадает и спаунится архидемон. Если же сначала погиб дьявол, то суккуба пропадает и призывается искусительница. Вопросы в том, какими командами это всё делается, возможно ли вообще такое (не завершится ли бой после убийства лишь одного юнита и пр. подводные камни).
Автор карт:
Долина расхитителей
Выбор мира
В ответ пользователю OrnsteinDragonslayer
#2831
OrnsteinDragonslayer
Вопрос к боевым скриптам. Хочу сделать боссбаттл, но не простой. Сражение начинается против суккубы и дьявола. После убийства суккубы дьявол пропадает и спаунится архидемон. Если же сначала погиб дьявол, то суккуба пропадает и призывается искусительница. Вопросы в том, какими командами это всё делается, возможно ли вообще такое (не завершится ли бой после убийства лишь одного юнита и пр. подводные камни).
EnableAutoFinish(nil)

function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == 21) then
removeUnit("имя дьявола")
SummonCreature(DEFENDER,28,10,-1,-1)
end
if(GetCreatureType(unit) == 27) then
removeUnit("имя суккуба")
SummonCreature(DEFENDER,134,10,-1,-1)
end
end

Как удалять юнитов, которые с начала боя, я не знаю( там нужно их скриптовое имя).
А вот, которые призываются, имя пишется в конце:
SummonCreature(DEFENDER, CREATURE_DEVIL, 1, 11, -1, 1, 'Devil')
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
#2832
Как удалять юнитов, которые с начала боя, я не знаю( там нужно их скриптовое имя).
Можно получить список существ вражеской стороны с помощью GetCreatures(DEFENDER). На примере дьявола:
local units = GetCreatures(DEFENDER);
for i, unit in units do
local unit_id = GetCreatureType(unit);
if(unit_id == АЙДИ_ДЬЯВОЛА) then
removeUnit(unit)
end
end
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Аватар пользователя
#2833
бой с кодом выше будет продолжаться бесконечно, т.к. не задано условие завершения при выключенном автоматическом
Нет войне.
Аватар пользователя
#2834
Вот с этим кодом:
function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == 21) then
removeUnit("CREATURE_DEVIL")
SummonCreature(DEFENDER,137,10,-1,-1)
end
if(GetCreatureType(unit) == 27) then
removeUnit("CREATURE_SUCCUBUS")
SummonCreature(DEFENDER,134,10,-1,-1)
end
end

local units = GetCreatures(DEFENDER);
for i, unit in units do
local unit_id = GetCreatureType(unit);
if(unit_id == 27) then
removeUnit(unit)
end
end

local units = GetCreatures(DEFENDER);
for i, unit in units do
local unit_id = GetCreatureType(unit);
if(unit_id == 21) then
removeUnit(unit)
end
end

Вот такая ошибка:


И это не только в этом бою. И да, ничего не происходит из задуманного. Видимо нужно как то получить имя героя...
Автор карт:
Долина расхитителей
Выбор мира
Аватар пользователя
#2835
^аргумент heroname, с которым вызвана GetHeroName() не определен.
нужно вызывать так - GetHeroName(GetHero(сторона)), например

у меня тоже небольшой вопрос нарисовался. Столкнулся с проблемой, что невозможно заставить существ откастовать некоторые абилки, например абилку баньши, т.к. для нее просто нет id. Пробовал прописать аргументом название абилки из файла существа - ABILITY_DEATH_WAIL, но это значение тоже не определено. Получается, эти абилки вообще нельзя скастовать в принципе или можно как то?
Нет войне.
Аватар пользователя
#2836
OrnsteinDragonslayer, код настолько неверен, что даже непонятно с какой стороны объяснить. Начать надо с того, что игра в ошибке прямо указывает в какой функции она произошла и какая переменная ей не понравилась. В приведённом коде их нет, это значит что ошибка произошла в другой части боевого скрипта. По остальному рекомендую посмотреть мануал Новика, особенно про боевые хуки.

Gerter, боевой скрипт знает всё что есть в common.lua. Если там нет соответствующего макроса, можно ещё посмотреть в types.xml, и если там есть то что нужно, вставить в скрипт как число. К примеру в common.lua заклинания заканчиваются на
SPELL_BLADE_BARRIER = 284;
а в types.xml после него есть ещё
SPELL_UBER_METEOR_SHOWER 285 и много других далеко за 300.
В частности ABILITY_DEATH_WAIL это 316.
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Аватар пользователя
#2837
благодарю, про types.xml даже не знал, если честно, всегда ограничивался стандартным списком id из мануала. теперь буду пользоваться расширенным, спасибо
Нет войне.
В ответ пользователю Jack_of_shadows
Аватар пользователя
#2838
Jack_of_shadows
OrnsteinDragonslayer, код настолько неверен, что даже непонятно с какой стороны объяснить. Начать надо с того, что игра в ошибке прямо указывает в какой функции она произошла и какая переменная ей не понравилась. В приведённом коде их нет, это значит что ошибка произошла в другой части боевого скрипта. По остальному рекомендую посмотреть мануал Новика, особенно про боевые хуки.

Ну, я с комбатскриптами на Вы, потому просто взял и скопировал всё выше, добавив просто определители существ. А мануал был бы полезен, но где найти его? Гугл молчит, на форуме человека с ником Novik нету (вроде так пишется, да? только это нашёл в гугле). В общих мануалах геройских нет. Буду признателен, если покажете на всеобщее обозрение.
Автор карт:
Долина расхитителей
Выбор мира
Аватар пользователя
#2839
Автопереведено
OrnsteinDragonslayer,
Вложения 1
1 файл • Общий размер: 475,0 KB
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Аватар пользователя
#2840
еще один небольшой вопрос по механике. все заклы делятся на таргетные/областные/глобальные, но есть исключения типа телепорта, которые требуют и таргета и указания области. Такие спеллы, как я понимаю вообще неприменимы в комбате? Попытка скастить телепорт всегда приводит к ошибке, а заколдованная стрела, хоть и юзается но эффекта не имеет. Есть ли способ разрешить такую проблему(уверен на 99%, что нет, но мало ли)?
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
#2841
Насчёт телепорта знаю, что есть такая функция : телепорт юнита на определённую клетку
Аватар пользователя
#2842
это понятно, но мне интересен телепорт, как заклинание
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
#2843
кто-нибудь пробовал использовать руны на других расах в юоевом скрипте?
Если да, скажите, как их использовать через commandDoSpell или CommandDoSpecial?:p (просто вроде как это заклинания)

Статистика

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

Сейчас на сайте 3 пользователей 1090 гостей