maksam07 Posted August 15, 2015 Posted August 15, 2015 Доброго времени суток! Перейду сразу к проблеме. Если в событии onClientPlayerDamage прописать отмену события (cancelEvent), но после отмены дописать вычитание жизней, то выходит какой то баг.. или что-то такое. После первого выстрела в человека все нормально, жизни отнимаются как указано в скрипте, но после второго выстрела человека поворачивает на 0 и убирается оружие. Как это можно исправить или обойти такой баг? Сам простенький код могу предоставить: function playerDamage ( attacker, weapon, bodypart, loss ) cancelEvent() if attacker and attacker ~= localPlayer and getElementType ( attacker ) == "player" then setElementHealth ( localPlayer, getElementHealth ( localPlayer )-loss ) end end addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), playerDamage )
maksam07 Posted August 15, 2015 Author Posted August 15, 2015 dayz? нет. Обычный сервер. Не знаю как с ближнего оружия, но с автоматов такой баг был
TheNormalnij Posted August 16, 2015 Posted August 16, 2015 Тогда ищи другие обработчики onClientPlayerDamage и onPlayerDamage.
maksam07 Posted August 16, 2015 Author Posted August 16, 2015 Тогда ищи другие обработчики onClientPlayerDamage и onPlayerDamage. например? я знаю что можно переписать систему жизней на ту, которая в дэйз (там такого бага нет), но она более геморная и мне не подходит.
TheNormalnij Posted August 16, 2015 Posted August 16, 2015 Нет, в смысле, что скорее всего что-то еще считает жизни в ресурсах.
maksam07 Posted August 16, 2015 Author Posted August 16, 2015 в этом же ресурсе ничего больше не считает жизни. Да и баг происходит только при совмещении функций cancelEvent и setElementHealth, если их по отдельности писать в событии, то все нормально, но мне нужно именно эти 2 функции.
maksam07 Posted August 17, 2015 Author Posted August 17, 2015 что именно я должен найти? Есть у меня в некоторых ресурсах onClientPlayerDamage, но там другие функции для этого события.
maksam07 Posted September 1, 2015 Author Posted September 1, 2015 Немного пришлось задержаться. Проверил на тестовом сервере, там было отключено все, кроме самых важных скриптов (админка, плэй и еще пара), все работало точно так же как и на моем. я обнаружил что человека поворачивает на 0 в тот момент, когда он должен был умереть после выстрела, но не умер. Я мог бы скриптом сделать урон всему оружию на единицу, но тогда не будет идти урон транспорту, точнее будет, но совсем мизерный. Есть еще идеи? Мне нужно обязательно сделать cancelEvent, без него не получится скрипт.
Easterdie Posted September 3, 2015 Posted September 3, 2015 только сегодня снайперке отпиливал фриз при попадании в целящегося: function isPedAiming ( thePedToCheck ) if isElement(thePedToCheck) then if getElementType(thePedToCheck) == "player" or getElementType(thePedToCheck) == "ped" then if getPedTask(thePedToCheck, "secondary", 0) == "TASK_SIMPLE_USE_GUN" then return true end end end return false end function stopSniperFreeze ( attacker, weapon, bodypart, loss) if (weapon == 34 and isPedAiming(localPlayer) and getPedWeapon(localPlayer) ~= 34) then if (getElementHealth(localPlayer) > 2) then cancelEvent() setElementHealth(localPlayer,getElementHealth(localPlayer)) end end end addEventHandler ( "onClientPlayerDamage", getLocalPlayer(), stopSniperFreeze )
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now