PerformAttack | Краш игры

  • Автор темы Автор темы Danis
  • Дата начала Дата начала

Danis

Продвинутый
12 Июн 2016
285
0
Проект
Custom Hero Arena
При использовании PerformAttack крашит игру, без ошибок в консоли, и дота вылетает оставляя за собой только окошко вылета (слева кнопка "отладка" справа закрыть программу)
Эта штука написана в полностью луа итеме.
Код:
if ability:IsCooldownReady() and caster:GetAttackCapability() == DOTA_UNIT_CAP_MELEE_ATTACK then
			caster:PerformAttack(target, true, true, true, false, false)
			target:AddNewModifier(caster,ability,"modifier_echotic_sabre_slow",{duration = ability:GetSpecialValueFor("duration")})
			ability:StartCooldown(ability:GetCooldown(ability:GetLevel()))
		end
 
Последнее редактирование модератором:
Такие вылеты бывают при рекурсивных вызовах, но ability:IsCooldownReady() не располагает к этому.
 
Принтани перед перформатаком какую нибудь белеберду. Если выводится овердофига раз то у тебя косяк с рекурсией. Иначе хрен знает.
 
Дофига раз выводит, что делать?
 
Дофига раз выводит, что делать?
После этой строки принтани кулдаун абилки и так же ability:GetCooldown(ability:GetLevel())
После этой строки:
Код:
ability:StartCooldown(ability:GetCooldown(ability:GetLevel()))
 
Последнее редактирование модератором:
CryDeS, Оно ничего не принтит, вылетает раньше чем принтит.
 
Короче
Код:
if ololo then
	if not caster.performFlag then
        caster.performFlag = true
		caster:PerformAttack
	end
	caster.performFlag = nil
end
Или просто начни кд перед PerformAttack
 
А я реализовывал подобное через модификатор атаки: когда носитель атакует, запускал скрипт, что осуществляет perfom attack, в котором снимал с кастера модификатор на время perfom attack, а затем возвращал на место :)
 
Зачем снимать модификатор когда можно одной проверкой обойтись?
 
В моем случае модификатор выступал проверкой.
 
Реклама: