TheNormalnij Posted July 22, 2013 Share Posted July 22, 2013 Прогресс бар как-бы не используют для этого. Вам нужно обрабатывать onClientRender. Link to comment
AriosJentu Posted July 22, 2013 Author Share Posted July 22, 2013 Прогресс бар как-бы не используют для этого. А тогда что используют для этого? Вам нужно обрабатывать onClientRender. это типа OnPlayerUpdate? Link to comment
TheNormalnij Posted July 22, 2013 Share Posted July 22, 2013 onClientRender вызывает функцию каждый раз, когда создается новый кадр. В 99% случаях пользуются dx* функциями. Link to comment
Other Languages Moderators Disinterpreter Posted July 22, 2013 Other Languages Moderators Share Posted July 22, 2013 это типа OnPlayerUpdate? onClientRender срабатывает, когда GTA делает новый кадр. А OnPlayerUpdate при обновлении информации клиента. Все просто Link to comment
TheNormalnij Posted July 22, 2013 Share Posted July 22, 2013 OnPlayerUpdate - такого события совсем нет, есть onPlayerUpdate Link to comment
Other Languages Moderators Disinterpreter Posted July 22, 2013 Other Languages Moderators Share Posted July 22, 2013 OnPlayerUpdate - такого события совсем нет, есть onPlayerUpdate Он спросил сравнение с событием из САМП... Link to comment
Kenix Posted July 22, 2013 Share Posted July 22, 2013 Используй функцию setTimer и делай triggerEvent определенного события. Link to comment
AriosJentu Posted July 23, 2013 Author Share Posted July 23, 2013 Так, с этой штукой я разобрался. Ещё несколько вопросов. 1) В старых версиях MTA (1.0.3 или даже меньше) Мап Эдитор не был таким обновленным (по моему даже без GUI был, где в ручную объекты вводить), и вместо прицела был простой свет. Не знаете ID такого-же света, только белого (там, если я правильно помню - был оранжевый). 2) Повторюсь с вопросом в постах ранее - можно ли забиндить команду по клавише? Подобие CallRemoteFunction из SA-MP, например чтобы не вводить команду /saveplayer, а можно было нажать F7, и была выполнена команда. Так как я копировать данные ресурса в мод не хочу, но забиндить кнопку хочу через мод. Link to comment
TheNormalnij Posted July 23, 2013 Share Posted July 23, 2013 bindKey может биньдить функции и команды. Link to comment
AriosJentu Posted July 23, 2013 Author Share Posted July 23, 2013 bindKey может биньдить функции и команды. Его можно ставить вне function, как addEvent...? Link to comment
Other Languages Moderators Disinterpreter Posted July 23, 2013 Other Languages Moderators Share Posted July 23, 2013 "я написал команду, но мне хотелось бы увидеть, чтобы она исполнялась с помощью какой-либо клавиши"bindKey или onClientKey Писал же уже я. Link to comment
AriosJentu Posted July 23, 2013 Author Share Posted July 23, 2013 Спасибо. Если будут ещё вопросы - буду задавать их в данную тему. PS - bindKey(source, "f7", "up", "/saveplayer") так чтоле? И ещё - чё ознают значения up, down, both в (un)bindKey? Почитав, я подумал, что up - это просто нажать, down - зажать, а both - любое из этого. Я точно не понял. Link to comment
CocaColaBear Posted July 23, 2013 Share Posted July 23, 2013 Спасибо. Если будут ещё вопросы - буду задавать их в данную тему.PS - bindKey(source, "f7", "up", "/saveplayer") так чтоле? И ещё - чё ознают значения up, down, both в (un)bindKey? Почитав, я подумал, что up - это просто нажать, down - зажать, а both - любое из этого. Я точно не понял. Сами названия же говорят за себя up - кнопка была отжата down - кнопка нажата, но не отпущена both - срабатывает при любом состоянии, нажал или отпустил. Link to comment
AriosJentu Posted July 23, 2013 Author Share Posted July 23, 2013 Понятно. Прописал в моде данный код unbindKey(source, "fire", "both") unbindKey(source, "mouse1", "both") unbindKey(source, "space", "both") unbindKey(source, "lshift", "both") unbindKey(source, "rshift", "both") unbindKey(source, "mouse3", "both") выполняться должен при onPlayerJoin, но кнопки всё равно работают. Link to comment
CocaColaBear Posted July 23, 2013 Share Posted July 23, 2013 Так делать нельзя. unbindKey работает только после bindKey. Т.е. в bindKey привязывается функция или команда, но не стандартные настройки. Если ты хочешь отключить стандартные действия, то используй toggleControl Link to comment
AriosJentu Posted July 23, 2013 Author Share Posted July 23, 2013 Ещё вопрос. Вот забиндил я кнопку lshift для бега (бег - ускорение игры), но когда отпускаю игра продолжает быть ускореной, но хотелось бы чтобы когда я отпустил кнопку, скорость игры была стандартной (обычный бег) function Speed() setGameSpeed(1.3) end addEventHandler("onClientResourceStart", getRootElement(getThisResource()), function() bindKey("lshift", "down", Speed) end ) Link to comment
TheNormalnij Posted July 23, 2013 Share Posted July 23, 2013 function sprint( _, _, speed ) setGameSpeed( speed ) end addEventHandler("onClientResourceStart", resourceRoot, function() bindKey("lshift", "down", sprint, 1.3 ) bindKey("lshift", "up", sprint, 1 ) end ) Link to comment
AriosJentu Posted July 24, 2013 Author Share Posted July 24, 2013 Благодарю. Появился ещё вопрос. lamp = {} local lampo = 0 function StartLamp(source) bindKey(source, "mouse1", "down", function(source) if getPedWeapon(source) == 22 then if lampo == 0 then lampo = 1 lamp[source] = createObject(1215, 0, 0, 0) attachElements(lamp[source], source, 0.3, 0.04, -0.7) setElementCollisionsEnabled(lamp[source], false) setObjectScale(lamp[source], 0) end if lampo == 1 then lampo = 0 destroyElement(lamp[source]) end end if getPedWeapon(source) ~= 22 then outputChatBox("У вас в руках нет фонарика", source) end end ) end addEventHandler("onPlayerJoin", getRootElement(), StartLamp) вот написан выше код (написанный мной). Данный код должен по нажатию левой кнопки выдавать свет (если выбран пистолет кольт), и если не кольт - то высветилось что нет фонарика. Ранее данный код работал, но свет не отображал, а теперь он вообще выдаёт варн и кнопка не работает (Bad argument на строку bindKey) Link to comment
AriosJentu Posted July 24, 2013 Author Share Posted July 24, 2013 Так, с этой штукой разобрался. Теперь такой вопрос - как сделать мигание изображения? Ну типа появилось, через секунду исчезло, через секунду опять появилось, и т.д, как бы бесконечный цикл. Я слышал, что нужно альфу менять, через tocolor, но я не додумался, само изображение - dxDrawImage Link to comment
TEDERIs Posted July 25, 2013 Share Posted July 25, 2013 source - является глобальной переменной, создаваемой при вызове события. В твоем коде source передается как аргумент, что просто переписывает ее. Убери source из аргументов функции StartLamp. Кроме того, переключение состояния предназначено для нескольких игроков, поэтому хранить статус следует в соответствующей таблице, в которой роль ключа будет играть плеер. В качестве такой таблице можно использовать уже созданную lamp, а локальную переменную lampo ликвидировать. Реализовать мигание изображения можно при помощь таймера, или же при помощи getTickCount(). Что то вроде того: local startTime = getTickCount ( ) local duration = 3000 local popDown function onRender ( ) local now = getTickCount ( ) local elapsedTime = now - startTime local progress = elapsedTime / duration if progress > 1 then startTime = now if popDown then popDown = false progress = 0 else popDown = true progress = 1 end else if popDown then progress = 1 - progress end end dxDrawImage ( x, y, width, height, "img", 0, 0, 0, tocolor ( 255, 255, 255, 255 * progress ) ) end addEventHandler ( "onClientRender", root, onRender, false ) Здесь показан алгоритм плавного появления и исчезания изображения img. Не проверял, но должен работать. Link to comment
AriosJentu Posted July 25, 2013 Author Share Posted July 25, 2013 Благодарю вас, данный код мне понадобится для других целей, но мне нужно чтобы резко изображение было, каждую секунду чтобы мигало, никак не переходило. Link to comment
Kenix Posted July 25, 2013 Share Posted July 25, 2013 Неверно, source не является глобальной переменной, она видна только в функции-обработчике события. Link to comment
AriosJentu Posted July 25, 2013 Author Share Posted July 25, 2013 Неверно, source не является глобальной переменной, она видна только в функции-обработчике события. Спасибо, но с фонариком я уже справился. Link to comment
CocaColaBear Posted July 25, 2013 Share Posted July 25, 2013 Благодарю вас, данный код мне понадобится для других целей, но мне нужно чтобы резко изображение было, каждую секунду чтобы мигало, никак не переходило. local tick, show = getTickCount, true addEventHandler ( "onClientRender", root function() if(getTickCount()-tick >= 1000) then show = not show tick = getTickCount() end if(show) then dxDrawImage(...) end end ) Секунду показывается изображение, секунду нет. 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