столкнулся с проблемой, что функция setATB не срабатывает на боевые машины. возможно, это связано с тройным выстрелом катапульты/баллисты, но тем не менее. мб кто-то знает, как тут разобраться?
Нет войне.
Впервые здесь? Я Роха — провести быструю экскурсию?
столкнулся с проблемой, что функция setATB не срабатывает на боевые машины. возможно, это связано с тройным выстрелом катапульты/баллисты, но тем не менее. мб кто-то знает, как тут разобраться?
Сейчас проверил на баллисте с тройным выстрелом - все работало. Ошибка в чем-то другом.
function DefenderMachineMove(machine)
local n = GetWarMachineType(machine)
if n == 1 or n == 2 then
setATB(machine, 0.5)
end
endкод работает, но сдвига по шкале нетcommandDoSpecial(имя юнита, id абилки, координаты по которым юзать абилку)
рандомить - функцией random(), но в комбате она не работает. благо есть парочка кастомных реализаций этого дела
в эту функцию и так передается имя умершего юнита. поэтому так же можно использовать GetCreatureType()
function DefenderCreatureDeath(unit)
if(GetCreatureType(unit) == CREATURE_PHOENIX) then
fenix = 0
end
endfunction 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
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