Активно использовался мх, дело явно в использовании чего-то из него
Друг друга атаковали 2 одинаковых героя, у каждого были шансы на сброс перезарядки атаки при атаке себя противником

Ладно, достало, уже все нервы выжжены и нет времени разбираться, абиле просто сделан частично упрощенный реворк (вместо вычитания белого урона вычитается минус бонусом через многоуровневую абилу).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
говорю же, у тебя подается 0+0x1E8, ставь проверки на нуль после ConvertHandle
21
DracoL1ch, а новый мемхак безопасный именно потому, что они там уже есть?
////////////
O_O shit. Что за прикол?! Тут причина та же самая?
Это из другой карты для игры... Но вроде бы код уже исправленный туда всунут!!! Сейчас офк перепроверю.
Но в русской три Кратоса друг друга 20 минут долбали - все норм было. В англ. ща очень быстро даже с одного фатал вылетел.
upd: да, округление есть, это точно в ENG.w3x war3map.j....
function Suppression takes nothing returns nothing
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
local timer t= CreateTimer()
local unit u5= GetAttackedUnitBJ()
local unit u6= GetAttacker()
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local real Suppressionhash= 0
local real damagedebuff= 0
local integer damagedebuffconvert= 0
set Suppressionhash=LoadReal(udg_Hash, GetHandleId(u6), StringHash("Suppressionhash"))
if ( IsUnitEnemy(u6, GetOwningPlayer(u5)) == true ) and ( IsUnitType(( u6 ), UNIT_TYPE_ANCIENT) != true ) and ( IsUnitType(( u6 ), UNIT_TYPE_STRUCTURE) != true ) and Suppressionhash == 0 then
if GetUnitBaseDamage(u6) <= GetUnitBaseDamage(u5) then
call AddSpecialEffectTargetUnitBJ("origin", u6, "Spartan3.mdl")
call ConditionalTriggerExecute(gg_trg_destroyspeceffect)
ТОЛЬКО ЕСЛИ ХЭШ = 0 И У ВРАГА U6 МЕНЬШЕ АТАКИ, ЗАПУСК ТАЙМЕРА И СЭЙВ ХЭША
СЧИТАЕМ, СКОЛЬКО МИНУСОВАТЬ, МИНУСУЕМ И СЭЙВИМ В ХЭШ
set damagedebuff=( 0.02 + ( 0.08 * ( GetUnitAbilityLevelSwapped('A31D', u5) ) ) ) * ( GetUnitBaseDamage(u6) )
set damagedebuffconvert=R2I(damagedebuff)
set damagedebuff=I2R(damagedebuffconvert)
call SetUnitBaseDamage(u6 , GetUnitBaseDamage(u6) - R2I(damagedebuff))
call SaveReal(udg_Hash, GetHandleId(u6), StringHash("Suppressionhash"), damagedebuff)
СЧИТАЕМ, СКОЛЬКО МИНУСОВАТЬ, МИНУСУЕМ И СЭЙВИМ В ХЭШ - ЗАКРЫТО.
ТОЛЬКО ЕСЛИ ХЭШ = 0 И У ВРАГА МЕНЬШЕ АТАКИ, ЗАПУСК ТАЙМЕРА И СЭЙВ ХЭША - ЗАКРЫТО.
call SaveUnitHandle(udg_Hash, GetHandleId(t), 2, u5)
call SaveUnitHandle(udg_Hash, GetHandleId(t), 1, u6)
call TimerStart(t, 2, false, function Suppression2)
else
ПРОСТО ДОБАВЛЯЕМ АТАКУ ГЕРОЮ
call SetUnitBaseDamage(u5 , GetUnitBaseDamage(u5) + ( GetUnitAbilityLevelSwapped('A31D', u5) ))
ПРОСТО ДОБАВЛЯЕМ АТАКУ ГЕРОЮ - ЗАКРЫТО.
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, GetHandleId(t))
endif
else
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, GetHandleId(t))
endif
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6
set t=null
set u5=null
set u6=null
ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
Загруженные файлы
16
ну по оффсету легко видно, что да, то же самое
21
Ладно, достало, уже все нервы выжжены и нет времени разбираться, абиле просто сделан частично упрощенный реворк (вместо вычитания белого урона вычитается минус бонусом через многоуровневую абилу).
Принятый ответ
32
Кстати может быть дело в функции кулдауна, она все еще может фаталить...
21
quq_CCCP, у этого героя есть только сброс кулдауна атаки
Но про то, что функция кулдауна может фаталить, плз поподробнее
16
да у тебя по адресу офсета атаки вылет, ни при чем тут остальное)
21
DracoL1ch, ну на будущее, я кулдауном активно пользуюсь, интересно, когда он еще может создавать фаталы, а с этой ситуацией уже все
А с атакой - ее, ятп, вычитать опасно, если атака задавалась или складывалась, пока проблем не было
16
да боже ж ты мой) с ней можно делать абсолютно что угодно, просто надо проверять, что у тебя юнит не потерялся, а он у тебя потерялся)
21
DracoL1ch, так оно юнита не находит, что ли и пытается несуществующему юниту после таймера переписать атаку? Ну так бы и написал... ок, учту на будущее
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.