Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
-
Объявления
-
⚙️ Новые онлайн-инструменты для DayZ 07/26/26
-
- 0

Хочу на некоторые кнопки повесить различные действия но что то не совсем выходит =(
В общем проблема в том что при заходе в игру или перезаходе функция не вешается, точнее как я понял вешается но после полной прогрузки все дисплейивентхендлеры обнуляються, пробовал делать в скрипте задержку в 20 секунд, помогло только при перезаходе из лобби, при первом запуске нужно больше минуты задержка но это очень как то долго.
Скрипт вызываю из инита почти в самом конце.
Скрипт выглядит примерно так:
fastKeyexpression = {}; (findDisplay 46) displayAddEventHandler ["KeyDown","_this call fastKeyexpression"]; fastKeyexpression = { _keyDown = _this select 1; if (_keyDown == 62) then {hint "Использован бинт";}; if (_keyDown == 63) then {hint "Использовано болеутоляющее";}; if (_keyDown == 64) then {hint "Использован пакет крови";}; if (_keyDown == 65) then {hint "Использована морфий";}; };Это упрощенный вариант для тестов.
Пробовал делать различные проверки и выяснилось примерно следующее изначально displayAddEventHandler вешается но после окончательной прогрузки обнуляется что ли...
Проверял таким образом:
_fnc_bandage_fast_key_off = 0; while {alive player} do { if ("ItemBandage" in magazines player) then { if (_fnc_bandage_fast_key_off == 0) then { bandagefastkey = (findDisplay 46) displayAddEventHandler ["KeyDown","if ((_this select 1) == 62) then {cutText [""Используем бинты"", ""PLAIN""];};"]; _fnc_bandage_fast_key_off = 1; }; } else { if (_fnc_bandage_fast_key_off == 1) then { (findDisplay 46) displayRemoveEventHandler ["KeyDown", bandagefastkey]; _fnc_bandage_fast_key_off = 0; }; }; if (!isnil "bandagefastkey") then {hint str bandagefastkey;}; };Эта проверка показало что переменная bandagefastkey на момент хинта уже была определена но не работает, то есть действие которое повесилось обнуляется....
Если убрать проверку if (_fnc_bandage_fast_key_off == 0) все работает но в цикле навешивается постоянно и удалить не имеется возможным
Пробовал делать задержку waituntil {!isnull (finddisplay 46)}; но не работает...
Если зайти выкинуть и поднять бинты то все работает
В общем вопрос заключается в том как правильно его запустить или сделать правильно задержку?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах