eclipse909 Posted February 18, 2013 Share Posted February 18, 2013 Доброго времени суток. Есть скрипт.. function toggle( key, state ) local veh = getPedOccupiedVehicle( g_Me ); if veh and not isEditingPosition then if state == "up" then ... else ... end end end Вопрос, реально ли к state == "up" приписать условие, если кнопку держал не менее 2 секунд, то тогда срабатывает, а если меньше то ничего не произойдёт. Если реально, подскажите пожалуйста как это сделать. Link to comment
Flaker Posted February 18, 2013 Share Posted February 18, 2013 При нажатии таймер на 2 сек устанавливаешь, потом через 2 сек проверяешь, нажата ли кнопка если да, то выполняешь действие... Link to comment
_Vincent_ Posted February 18, 2013 Share Posted February 18, 2013 Раз скриптеры пока спят... отпишусь. Я лично видел похожие реализации на серверах. Раз в том же onClientKey есть возможность отслеживать отпускания клавиши, то почему бы ею не воспользоваться? ЗЫ Один скриптер проснулся. fail Link to comment
eclipse909 Posted February 19, 2013 Author Share Posted February 19, 2013 Flaker, не мог бы ты сделать пример такой проверки, ато у меня только получается что после нажания действие выполнятется через 2 секунды =( Link to comment
Flaker Posted February 19, 2013 Share Posted February 19, 2013 Раз скриптеры пока спят... отпишусь.Я лично видел похожие реализации на серверах. Раз в том же onClientKey есть возможность отслеживать отпускания клавиши, то почему бы ею не воспользоваться? ЗЫ Один скриптер проснулся. fail Ахах) Я когда вчера зашел на форум, увидел, что ты в онлайне, так и подумал, что уже отвечаешь наверно) Ну и решил тебя обогнать Ладно, по теме: addEventHandler("onClientKey", root, function(button, press) if ( press and button == "3" ) then setTimer( function() if ( getKeyState( "3" ) ) then --TODO end end, 2000, 1) end end ) Что то типо того... Link to comment
Kenix Posted February 19, 2013 Share Posted February 19, 2013 Лучше через getTickCount замутить это. Link to comment
Flaker Posted February 19, 2013 Share Posted February 19, 2013 Сомневаюсь, что это будет на сколько нибудь оптимальнее... Не думаю, что таймер загрузит клиента на столько... Link to comment
eclipse909 Posted February 19, 2013 Author Share Posted February 19, 2013 Flaker, спасибо ты мега помощник, уже сколько подсказал, только еще чуть чуть уточнить задачу хочу, я имел ввиду, что если я держу кнопку 1 секунду и отпускаю, то ничего не происходит, а если 2,3,4,5.. и т.д. секунд то действие происходит, но когда я отпускаю клавишу, а не по истечению 2х секунд, сори что снова не ясно объяснил задачу, в примере который указал (if state == "up" then). Возможно такую проверку реализовать? Link to comment
_Vincent_ Posted February 19, 2013 Share Posted February 19, 2013 Короче, ты хочешь, чтобы нужно было держать клавишу обязательно не отпуская ее в течение N секунд, и поэтому просто проверка по истечении N секунд на то, нажата ли клавиша, тебя не устраивает? Link to comment
eclipse909 Posted February 19, 2013 Author Share Posted February 19, 2013 Ну почти, хочу держать клавишу N секунд, если продержал N секунд, то потом не важно сколько еще продержу, но действие должно выполниться когда отпустил её, если не продержал N секунд и отпустил, то ничего не должно происходить. Вообщем когда отпускаю клавишу, нужно узнать сколько времени она была зажата. addEventHandler("onClientKey", root, state, function(button, press) if ( press and button == "3" ) then setTimer( function() if ( getKeyState( "3" ) ) then if state == "up" then outputChatBox( "трулалла" ) end end end, 2000, 1) end end ) Вот что то такое надо, тока не работает.. сори за мой нубизм. Так бы не обращался за помощью. Link to comment
Flaker Posted February 19, 2013 Share Posted February 19, 2013 local keyPressTime; addEventHandler("onClientKey", root, function(button, press) if ( button == "3" ) then if ( press ) then keyPressTime = getTickCount(); else if ( getTickCount() - 2000 >= keyPressTime ) then --TODO end end end end ) Link to comment
eclipse909 Posted February 20, 2013 Author Share Posted February 20, 2013 Спасибо огромнейшее. Теперь всё работает как задумывалось. Буду тоже учиться, что б самостоятельно реализовывать свои идеи. 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