MaligNos

Members
  • Content Count

    215
  • Joined

  • Last visited

Community Reputation

38 Good

1 Follower

About MaligNos

  • Rank
    Chump

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. MaligNos

    Exite outra maneira ?

    Eu coloquei dois links de tutoriais no meu comentário acima. E também existem vários outros espalhados por ai, basta saber pesquisar (Google é um grande amigo de qualquer programador).
  2. MaligNos

    BINDKEY VERIFICATION

    -- client side function teste() outputChatBox("estou na acl") end addEvent( "addBind", true ) addEventHandler( "addBind", localPlayer, function() bindKey ( "M", "up", teste ) end ) addEventHandler( "onClientResourceStart", resourceRoot, function() if getKeyBoundToFunction( teste ) ~= "M" then triggerServerEvent ( "upRequest", localPlayer ) end end ) -- server side addEventHandler ( "onResourceStart", resourceRoot, function() for _, thePlayer in ipairs(getElementsByType("player")) do if estaAcl(thePlayer,"BOPE") then triggerClientEvent ( thePlayer, "addBind", thePlayer ) end end end ) addEventHandler("onPlayerLogin", root, function() local thePlayer = source if estaAcl(thePlayer,"BOPE") then triggerClientEvent ( thePlayer, "addBind", thePlayer ) end end ) function estaAcl(thePlayer, acl) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( acl ) ) then return true end return false end addEvent( "upRequest", true ) addEventHandler( "upRequest", root, function() local thePlayer = client if estaAcl(thePlayer,"BOPE") then triggerClientEvent ( thePlayer, "addBind", thePlayer ) end end )
  3. Como você não quer usar pela team, precisa alterar as linhas 4, 5 e 6 e nesse lugar você pode colocar aquela verificação: if (qtsElementData("PM") >= 5) then
  4. MaligNos

    Exite outra maneira ?

    Você precisa aprender tabelas e loops. local janelas = { { titulo = "Mission Description", memo = "You must kill 50 zombies in area 51\n\n \n Reward\nMoney: R$ 5,000.00 \nEXP : 3555 " }, { titulo = "Mission Description", memo = "123456" }, { titulo = "Mission Description", memo = "KEVIN" } } local elementos = { window = {}, btns = {}, } addEventHandler("onClientResourceStart", resourceRoot, function() for i,janela in ipairs(janelas) do wnd = guiCreateWindow(939, 156, 196, 329, janela.titulo, false) elementos.window[wnd] = i-1 guiSetVisible (wnd, false) guiWindowSetSizable(wnd, false) guiCreateMemo(9, 32, 175, 196, janela.memo, false, wnd) btnExit = guiCreateButton(10, 280, 174, 40, "EXIT", false, wnd) btnCopy = guiCreateButton(9, 233, 175, 37, "COPY", false, wnd) elementos.btns[btnExit] = {wnd,"exit"} elementos.btns[btnCopy] = {wnd,"copy"} end end ) addEventHandler ("onClientGUIClick", resourceRoot, function (button, state, absoluteX, absoluteY) if (elementos.btns[source]) then if (elementos.btns[source][2] == "exit") then guiSetVisible (elementos.btns[source][1], false) end end end) addEventHandler ("onClientGUIClick", resourceRoot, function (button, state, absoluteX, absoluteY) if (source == info) then for wnd, id in pairs(elementos.window) do if (id == guiGridListGetSelectedItem(ListMissions)) then guiSetVisible (wnd, true) else guiSetVisible (wnd, false) end end end end)
  5. --[[ -- exemplo uso if (qtsElementData("PM") >= 5) then -- assalta banco end --]] function qtsElementData(dataname) local qtd = 0 for _,p in ipairs(getElementsByType("player")) do if getElementData(p,dataname) then qtd = qtd + 1 end end return qtd end
  6. Com o segundo trecho ele sempre retornará um valor entre -180...180, mas isso nem importa para o nosso caso, tenha conhecimento apenas de como funciona o esquema de valores relativos (diferença) e a lógica de como calculá-los (geralmente apenas simples subtrações).
  7. MaligNos

    [AJUDA]Visibilidade de Blips

    function pedir (source) local blip = createBlipAttachedTo (source, 62) local players = getElementsByType ("player") for _, driver in ipairs (players) do local account = getAccountName (getPlayerAccount(driver)) if not isObjectInACLGroup ("user."..account, aclGetGroup ("UBER")) then setElementVisibleTo (blip, driver, false) end end end addCommandHandler ("uber", pedir)
  8. MaligNos

    [AJUDA] Reparar carro distancia

    Faça com que detecte os clicks apenas quando for habilitado o cursor pelo M: function detectar(_, state, _, _, _, _, _, clickedElement) if ( state == "up" and clickedElement ) then if ( getElementType ( clickedElement ) == "vehicle" ) then triggerServerEvent ( "onClientRequestRepair", localPlayer, clickedElement ); end end end bindKey ( "M", "down", function ( ) if (not isCursorShowing()) then showCursor(true) addEventHandler("onClientClick", root, detectar) else showCursor(false) removeEventHandler("onClientClick", root, detectar) end end )
  9. Como já mencionado, os parâmetros de rotação do moveObject se referem à rotação relativa ao estado inicial, seria basicamente assim: se o objeto possui as rotações (rx = 120, ry = 0, rz = 180) e eu quiser rotacioná-lo para esses outros valores absolutos (rx = 50, ry = 20, rz = 30), eu devo usar o diferencial deles, que seria no caso: (rx = -70, ry = 20, rz = -150). Ai basicamente o moveObject somaria esses valores com a rotação inicial: rx: (120 + (-70)) = 50 ry: (0 + 20) = 20 rz: (180 + (-150)) = 30 Funcionamento da função com o rx: function calculo(120,50) local dif = 50 – 120 -- (-70) -- segundo trecho do cálculo² dif = (-70 + 180) % 360 – 180 --[[ dif = 110 % 360 – 180 dif = 110 – 180 dif = -70 --]] return -70 end Observações: O operador “%” refere-se ao resto da divisão. O segundo trecho do cálculo nem se faz necessário para o nosso caso, ele serve mais para obter a distância mais curta*. *Vamos utilizar como exemplo os seguintes dados: rotação inicial (absoluta): 350 rotação desejada (absoluta): 30 -- Sem o segundo trecho: function calculo(350,30) local dif = 30 – 350 -- (-320) return -320 end -- Com o segundo trecho: function calculo(350,30) local dif = 30 – 350 -- (-320) dif = (-320 + 180) % 360 – 180 --[[ dif = -140 % 360 – 180 dif = 220 – 180 dif = 40 --]] return 40 end O que daria o seguinte: 1) 350 – 320 = 30 2) 350 + 40 = 390 → 30** **No segundo caso deu 390, mas queremos o valor 30. Lembre-se que o valor máximo de um ângulo é 360º, então nesse segundo caso ele percorre até os 360 e mais 30 (total de 40 unidades), o que é mais curto do que sair do 350 e voltar até o 30 (320 unidades).
  10. Tenta isso: local i = 0 att = setTimer(function() i = i+1 if i > 1 then moveObject(obj, 1000, rotas[i].posX, rotas[i].posY, rotas[i].posZ, calculo(rotas[i-1].rotX, rotas[i].rotX), calculo(rotas[i-1].rotY, rotas[i].rotY),calculo(rotas[i-1].rotZ, rotas[i].rotZ)) else moveObject(obj, 1000, rotas[i].posX, rotas[i].posY, rotas[i].posZ) end end, 1000, #rotas) function calculo(angulo1, angulo2) local dif = angulo2 - angulo1 dif = (dif + 180) % 360 - 180 return dif end
  11. Por nada ^^. Setando a rotação pelo moveObject seria melhor, já que ele vai movendo linearmente até chegar no valor desejado, ai diminuiria uma pouco essa feiura na rotação.
  12. MaligNos

    tempo para entrar no carro

    local counter = 0 setTimer(function(p) for seat, player in pairs(getVehicleOccupants(veh6[p])) do counter = counter + 1 end if counter > 0 then outputChatBox ( "Voçê esta no Vehicle", p, 255, 255, 255, true ) else outputChatBox ( "Voçê Nao entrou no veiculo a tempo mission failed", p, 255, 255, 255, true ) destroyElement (veh6[p]) end counter = 0 end, 5000, 1, client)
  13. Tente usar o setElementRotation antes do moveObject, porque provavelmente com o moveObject nesse 1000 milisegundos ele mantêm a rotação inicial e com isso acaba por desfazer o comando de rotação. Ou então faça o que o Lord mencionou, adicione a rotação nos parâmetros do moveObject, mas para isso precisaria adaptar o código para obter o diferencial de rotação de um dado para outro, já que é utilizado a rotação relativa no moveObject e não absoluta como no setElementRotation.
  14. MaligNos

    [HELP]Visão_Ped

    Dessa forma ele irá começar a atirar mesmo se o player estiver atrás do ped, e não só apenas no seu campo de visão. Tem que tentar fazer algo como o @Lord Henry mencionou... só não ajudo pq sou ruim de matemática, ia ter que parar pra pensar um pouco kkk
  15. Usa o segundo exemplo para criar as rotas, abra o arquivo que ele vai gerar, copie seu conteúdo, e então jogue no começo do primeiro exemplo. Outra possibilidade seria remover a declaração "local" da linha 11 do segundo código, que então a tabela gerada nele serviria em todo o script, mas desse modo é necessário adicionar o rotas.lua no meta.xml