Jump to content

Sergey_Walter

Members
  • Posts

    96
  • Joined

  • Last visited

Everything posted by Sergey_Walter

  1. Народ помогите плиз! Смотрите, к примеру я создаю полигоны: local colcircle = { } создаю их в цикле... colcircle[row.id] = createColRectangle ( row.x, row.y, 100.0, 100.0 ) потом каждому полигону создаю событие чтоб когда входишь в него, игроку присваивался ид этого полигона.. addEventHandler ( "onColShapeHit", colcircle[row.id], function(thePlayer) setElementData(thePlayer, "gangid", row.id, true ) outputChatBox("onColShapeHit") end) Так как полигоны стоят впритык к друг другу, ты например заходишь на другой полигон, то событие onColShapeLeave происходит наперёд чем onColShapeHit, а нужно чтоб обнулило и заменило на ид другого полигона. Делал событие onColShapeLeave выше события onColShapeHit, таже проблема, но иногда бывало норм addEventHandler ( "onColShapeLeave", colcircle[row.id], function(thePlayer) setElementData(thePlayer, "gangid", 0, true ) end) Делал второе событие за пределами функции создания полигонов, но там незадача с таблицей, как я туда впишу все айди полигонов без цикла, цикл то туда не впихнёшь, ну или наверно есть возможность как нить обозначить чтоб он срабатывал на все айди полигонов: addEventHandler ( "onColShapeLeave", colcircle[?], function(thePlayer) setElementData(thePlayer, "gangid", 0, true ) end) Вот видео записал как срабатывают onColShapeLeave и onColShapeHit, полигоны стоят впритык и срабатывают странно..
  2. Не врубился чё делает твой скрипт Вроде ничё не мувит, мб запоминает статус обьекта?
  3. Короче вот что получилось, м.б комунить потом пригодится)
  4. Нет такой функции (если ты её сам не напишешь), есть только функция передвижения объектов. да нет, плавность в изменении ротации обьекта добавили в версии сампа 0.3d, я даже помню видео снимал, а вот оно) https://www.youtube.com/watch?v=WFGrW_47U5w
  5. Как я помню в версии сампа 0.3е функция плавного открывания шлагбаума выглядела так: blockslak = CreateObject(968, 1622.3656, -1318.4294, 17.1529, 0.0, -90.0, 90.0); --создали обьект MoveObject(blockslak, 1622.3656, -1318.4294, 17.1529 + 0.001, 0.001, 0.0, 0.0, 90.0); --открыли его MoveObject(blockslak, 1622.3656, -1318.4294, 17.1529 - 0.001, 0.001, 0.0, -90.0, 90.0); --закрыли его заметь что последниие цифры ротации 0.0, -90.0, 90.0 при закрывании такие-же как и у первоначального созданного обьекта, тоесть прокрутили его в определённое положение и обратно! а вот в мта считается так: blockslak = createObject(968,1622.3656,-1318.4294,17.1529, 0.0, -90.0, 90.0) --создали обьект moveObject ( blockslak , 1500, 1622.3656,-1318.4294,17.1529, 0.0, 90.0, 0.0) --открыли его moveObject ( blockslak , 1500, 1622.3656,-1318.4294,17.1529, 0.0, -90.0, 0.0)--закрыли его тут уже нужно писать аргумент на сколько обьект должен прокрутится, тоесть было при создании 0.0, -90.0, 90.0, при открывании 0.0, 90.0, 0.0 и при закрывании 0.0, -90.0, 0.0, но вот уже нельзя снова поставить аргументы такиеже как и при создании обьекта 0.0, -90.0, 90.0 чтоб вернуть его в первоначальное положение! Вот из за этого возникает масса проблем, например надо тебе шлагбаум вернуть в обратное положение, а он ещё недомувился до открытого положения и в этот момент тебе нужно его закрыть, получится так что он уйдёт под землю =( Я конешно понимаю что есть много решений этой проблеммы, но я не люблю лишних строк Думаю понятно разьяснил
  6. Ну в принципе всё работает, но всё равно есть баги как не крути, и всё потому что там нельзя задать первоначальное положение шлагбаума как в сампе =( Лучшим решением для меня оказался следущий код автоматического открывания шлагбаума) bargate = createObject(968,1622.3656000,-1318.4294000,17.1529000,0.0000000,-90.0000000,90.0000000) -- damarker = createMarker(1621.3656000,-1322.4294000,17.1529000, "cylinder", 9.5, 255, 0, 0, 0 ) isMoving = false function gatefunc( hitPlayer ) if isMoving == false then isMoving = true moveObject ( bargate, 1500, 1622.3656000,-1318.4294000,17.1529000, 0.0, 90.0, 0.0, "OutBounce") setTimer( triggerEvent, 2500, 1, "gatefuncclose", root) end end addEventHandler( "onMarkerHit", damarker, gatefunc ) function gatefuncclose( ) moveObject ( bargate, 1500, 1622.3656000,-1318.4294000,17.1529000, 0.0, -90.0, 0.0, "OutBounce") setTimer ( function() isMoving = false end, 1500, 1 ) end addEvent ( "gatefuncclose", true ) addEventHandler("gatefuncclose", getRootElement(), gatefuncclose)
  7. Сделал так.. addEvent( 'onObjectMoved', true ) local _moveObject = moveObject function moveObject( ... ) local args = { ... } if _moveObject( args ) then setTimer( triggerEvent, args[ 2 ], 1, 'onObjectMoved', args[ 1 ] ) return true end return false end local gate = createObject(968,1622.3656000,-1318.4294000,17.1529000,0.0000000,-90.0000000,90.0000000) -- function Step() -- Здесь вызываю движение moveObject ( gate, 1500, 1622.3656000,-1318.4294000,17.1529000, 0.0, 90.0, 0.0, "OutBounce") end addEventHandler( 'onObjectMoved', gate, function() local fX, fY, fZ = getElementPosition( gate ) outputChatBox( 'Новая позиция объекта: ' .. fX .. ', ' .. fY .. ', ' .. fZ ) end ) пишит http://screenshot.su/show.php?img=92246 ... 829bca.jpg в этой строке проблемма: if _moveObject( args ) then Удалял эту if, обьект не двигается, но аргументы передаёт на onObjectMoved =(
  8. Я понял в moveObject другие аргументы нужно будет писать? И что значит "Источник тут будет объект" ? Напишите пример плиз...
  9. Дайте пожалуйста оптимизированную альтернативу моему коду, так как не хочется использовать 2 таймера и 3 функции для одного шлагбаума. И есть ли авто вызываемая функция как в сампе OnObjectMoved(objectid)? local gate = createObject(968,1622.3656000,-1318.4294000,17.1529000,0.0000000,-90.0000000,90.0000000) -- local endmoved = false function Step() if endmoved == false then moveObject ( gate, 1500, 1622.3656000,-1318.4294000,17.1529000, 0.0, 90.0, 0.0, "OutBounce") endmoved = true setTimer(Step2, 1500, 1) end end function Step2() if endmoved == true then moveObject ( gate, 1500, 1622.3656000,-1318.4294000,17.1529000, 0.0, -90.0, 0.0, "OutBounce") setTimer(Step3, 1500, 1) end end function Step3() endmoved = false end function bindKeys() local players = exports.pool:getPoolElementsByType("player") for k, arrayPlayer in ipairs(players) do if not(isKeyBound(arrayPlayer, "lalt", "down", Step)) then bindKey(arrayPlayer, "lalt", "down", Step) end end end function bindKeysOnJoin() bindKey(source, "lalt", "down", Step) end addEventHandler("onResourceStart", getResourceRootElement(), bindKeys) addEventHandler("onPlayerJoin", getRootElement(), bindKeysOnJoin)
  10. Кто знает ответьте, как изменить кнопку начала голосового чата в ресурсе voice, по дефолту стоит z и я там не нашёл функции bindKey(). И можно ли например включить микрофон по событию у клиента независимо от его нажатия на кнопку начала голосового чата?
×
×
  • Create New...