maksam07 Posted August 15, 2015 Share 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 ) Link to comment
maksam07 Posted August 15, 2015 Author Share Posted August 15, 2015 dayz? нет. Обычный сервер. Не знаю как с ближнего оружия, но с автоматов такой баг был Link to comment
TheNormalnij Posted August 16, 2015 Share Posted August 16, 2015 Тогда ищи другие обработчики onClientPlayerDamage и onPlayerDamage. Link to comment
maksam07 Posted August 16, 2015 Author Share Posted August 16, 2015 Тогда ищи другие обработчики onClientPlayerDamage и onPlayerDamage. например? я знаю что можно переписать систему жизней на ту, которая в дэйз (там такого бага нет), но она более геморная и мне не подходит. Link to comment
TheNormalnij Posted August 16, 2015 Share Posted August 16, 2015 Нет, в смысле, что скорее всего что-то еще считает жизни в ресурсах. Link to comment
maksam07 Posted August 16, 2015 Author Share Posted August 16, 2015 в этом же ресурсе ничего больше не считает жизни. Да и баг происходит только при совмещении функций cancelEvent и setElementHealth, если их по отдельности писать в событии, то все нормально, но мне нужно именно эти 2 функции. Link to comment
TheNormalnij Posted August 16, 2015 Share Posted August 16, 2015 В других ресурсах гляньте. Link to comment
maksam07 Posted August 17, 2015 Author Share Posted August 17, 2015 что именно я должен найти? Есть у меня в некоторых ресурсах onClientPlayerDamage, но там другие функции для этого события. Link to comment
TheNormalnij Posted August 17, 2015 Share Posted August 17, 2015 Возможно, этот код конфликтует с вашим. Link to comment
maksam07 Posted September 1, 2015 Author Share Posted September 1, 2015 Немного пришлось задержаться. Проверил на тестовом сервере, там было отключено все, кроме самых важных скриптов (админка, плэй и еще пара), все работало точно так же как и на моем. я обнаружил что человека поворачивает на 0 в тот момент, когда он должен был умереть после выстрела, но не умер. Я мог бы скриптом сделать урон всему оружию на единицу, но тогда не будет идти урон транспорту, точнее будет, но совсем мизерный. Есть еще идеи? Мне нужно обязательно сделать cancelEvent, без него не получится скрипт. Link to comment
Easterdie Posted September 3, 2015 Share 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 ) Link to comment
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