CustomGames.ru - Dota 2 пользовательские игры

PerformAttack | Краш игры

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
PerformAttack | Краш игры
« : 07-10-2016, 17:04:06 »
При использовании 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
« Последнее редактирование: 07-10-2016, 17:06:58 от Danis »
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн ZLOY

  • Супермодератор
  • 367
  • Мощь: 4
Re: PerformAttack | Краш игры
« Ответ #1 : 07-10-2016, 17:07:49 »
Такие вылеты бывают при рекурсивных вызовах, но ability:IsCooldownReady() не располагает к этому.

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: PerformAttack | Краш игры
« Ответ #2 : 07-10-2016, 17:09:42 »
Принтани перед перформатаком какую нибудь белеберду. Если выводится овердофига раз то у тебя косяк с рекурсией. Иначе хрен знает.

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: PerformAttack | Краш игры
« Ответ #3 : 07-10-2016, 17:12:01 »
Дофига раз выводит, что делать?
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: PerformAttack | Краш игры
« Ответ #4 : 07-10-2016, 17:14:07 »
Дофига раз выводит, что делать?
После этой строки принтани кулдаун абилки и так же ability:GetCooldown(ability:GetLevel())
После этой строки:
Код
ability:StartCooldown(ability:GetCooldown(ability:GetLevel()))

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: PerformAttack | Краш игры
« Ответ #5 : 07-10-2016, 17:18:50 »
CryDeS, Оно ничего не принтит, вылетает раньше чем принтит.
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн ZLOY

  • Супермодератор
  • 367
  • Мощь: 4
Re: PerformAttack | Краш игры
« Ответ #6 : 07-10-2016, 17:22:24 »
Короче
Код
if ololo then
if not caster.performFlag then
                caster.performFlag = true
caster:PerformAttack
end
caster.performFlag = nil
end
Или просто начни кд перед PerformAttack
« Последнее редактирование: 07-10-2016, 17:24:14 от ZLOY »

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: PerformAttack | Краш игры
« Ответ #7 : 07-10-2016, 17:26:03 »
Спасибо
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1904
  • Мощь: 16
Re: PerformAttack | Краш игры
« Ответ #8 : 07-10-2016, 20:43:12 »
А я реализовывал подобное через модификатор атаки: когда носитель атакует, запускал скрипт, что осуществляет perfom attack, в котором снимал с кастера модификатор на время perfom attack, а затем возвращал на место :)

Оффлайн ZLOY

  • Супермодератор
  • 367
  • Мощь: 4
Re: PerformAttack | Краш игры
« Ответ #9 : 08-10-2016, 05:05:50 »
Зачем снимать модификатор когда можно одной проверкой обойтись?

Оффлайн Илья

  • Супермодератор
  • 1904
  • Мощь: 16
Re: PerformAttack | Краш игры
« Ответ #10 : 08-10-2016, 11:38:57 »
В моем случае модификатор выступал проверкой.