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

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

Аватар пользователя
#2811
столкнулся с проблемой, что функция setATB не срабатывает на боевые машины. возможно, это связано с тройным выстрелом катапульты/баллисты, но тем не менее. мб кто-то знает, как тут разобраться?
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
#2812
Gerter
столкнулся с проблемой, что функция setATB не срабатывает на боевые машины. возможно, это связано с тройным выстрелом катапульты/баллисты, но тем не менее. мб кто-то знает, как тут разобраться?
Сейчас проверил на баллисте с тройным выстрелом - все работало. Ошибка в чем-то другом.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#2814
RedHeavenHero
Сейчас проверил на баллисте с тройным выстрелом - все работало. Ошибка в чем-то другом.

хотя нет, все равно не работает( можешь показать свой код, мб я по сути что-то неверно делаю...
пишу как-то так:

function DefenderMachineMove(machine)
local n = GetWarMachineType(machine)
if n == 1 or n == 2 then
setATB(machine, 0.5)
end
end
код работает, но сдвига по шкале нет

Так, перенес функцию сдвига в DefenderCreatureMove - стало работать. Странно, героя и юнитов получалось сдвигать внутри их ходов...
Нет войне.
Аватар пользователя
#2816
кто-нибудь знает как проверить каст героя в боевом скрипте?
Аватар пользователя
#2817
узнать, что именно скастовал герой - нельзя. установить сам факт каста можно, например, по изменению маны в HeroMove' е
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
#2818
кто-нибудь знает, как активировать на существо какое-ниюудь умение в боевом скрипте. Например:
function AttackerCreatureMove()
отлетает корнями или что-то другое
end
(синтаксис этой функции не помню)

И ещё, может знаете, как рандомить значения(что-то смотрел в инете по lua
, но не нашёл)
Аватар пользователя
#2819
commandDoSpecial(имя юнита, id абилки, координаты по которым юзать абилку)

рандомить - функцией random(), но в комбате она не работает. благо есть парочка кастомных реализаций этого дела
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
#2820
Gerter
commandDoSpecial(имя юнита, id абилки, координаты по которым юзать абилку)

рандомить - функцией random(), но в комбате она не работает. благо есть парочка кастомных реализаций этого дела

Каких именно?
Карты для героев 5

"Плата за любовь"
"Путь некроманта"
"Темные грани"
"Рок Гримхейма"
Аватар пользователя
#2821
в карте Эхо Пустоты есть отличный ГПСЧ, пользуюсь им
Нет войне.
#2822
Подскажите как определить в функции DefenderCreatureDeath, что умерло какое-нибудь определенное существо?
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
#2823
в эту функцию и так передается имя умершего юнита. поэтому так же можно использовать GetCreatureType()
Нет войне.
В ответ пользователю Gerter
#2824
Gerter
в эту функцию и так передается имя умершего юнита. поэтому так же можно использовать GetCreatureType()
Я знаю, просто мне нужно чтобы после смерти феникса одна переменная(fenix) =0.
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
#2825
Автопереведено
function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == CREATURE_PHOENIX) then
fenix = 0
end
end

примерно так
Нет войне.
В ответ пользователю Gerter
#2826
Gerter
function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == CREATURE_PHOENIX) then
fenix = 0
end
end

как то так

Странно... ничего не происходит. Вот скрипт, если что.( С элементалями тоже неработает)

diff = GetDifficulty() + 1
defender = GetDefenderHero()
attacker = GetAttackerHero()
defender_turn = 0
death = 0
elemental= 0
fenix = 0

function Start()
SummonCreature(DEFENDER,103, 12 * diff,8,9)
SummonCreature(DEFENDER,105, 9* diff,8,2)
end

function DefenderHeroMove()
if elemental == 0 then
elemental = 1
UnitCastGlobalSpell(defender,SPELL_SUMMON_ELEMENTALS )
end
defender_turn = defender_turn + 1
if defender_turn == 1 then
combatSetPause(1)
UnitCastGlobalSpell(defender,SPELL_ARMAGEDDON)
sleep(200)
combatSetPause(nil)
end
if defender_turn == 2 then
SummonCreature(DEFENDER,104, 10 * diff)
if fenix == 0 then
fenix = 1
UnitCastGlobalSpell(defender,SPELL_CONJURE_PHOENIX)
end
end
end

function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == CREATURE_FIRE_ELEMENTAL ) then
elemental = 0
end
end
death = death + 1
if death == 1 then
print("bbb")
end
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
Аватар пользователя
#2827
потестил у себя нужную часть кода - вот так все работает. каждый раз после смерти феникса/элемов герой их перепризывает
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
Нет войне.

Статистика

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

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