Jump to content

Gustavo Freire

Members
  • Posts

    22
  • Joined

  • Last visited

Posts posted by Gustavo Freire

  1. -- tabela com a posição dos markers
    local markers = { 
        { 
            pos = { 505.2783203125, -1340.4423828125, 15.9609375 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
        
    }
    
     -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker
    local markerStorage = {
    
        ['parentElement'] = createElement( 'marker.parent' ),
        ['markerData'] = { }
    }
    
    -- armazena as bikes alugadas
    local rentStorage = { }
    
    -- desconta o dinheiro do jogador
    local getPay = function( value, thePlayer )
    
        local validValue = value and tonumber( value ) and value > 0 
    
        if not validValue then
    
            return false
    
        end 
    
        local playerMoney = getPlayerMoney( thePlayer ) or 0 
    
        if playerMoney < value then
    
            return false
    
        end
    
        return takePlayerMoney( thePlayer, tonumber( value ) )
    
    end
    
    local isElementWithinRentMarker = function( thePlayer )
        
        for i, _ in pairs( markerStorage['markerData'] ) do
    
            if isElementWithinMarker( thePlayer, i ) then 
    
                return true
    
            end
    
        end
    
        return false
    
    end
    
    -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true
    local verifyAndDestroyRentVehicle = function( thePlayer )
    
        -- verifica se a pessoa tem uma bike alugada
        if rentStorage[ thePlayer ] then 
    
            -- verifica se a bike existe
            if isElement( rentStorage[ thePlayer ] ) then
    
                -- destrói a bike
                destroyElement( rentStorage[ thePlayer ] )
    
            end
    
            -- zera a tabela
            rentStorage[ thePlayer ] = nil
    
            return true
    
        end
    
        return false
    
    end
    
    -- mensagem para quando alguém entrar no marker
    local markerOutputMessage = function( hit, dim )
        
        local isValidElement = isElement( hit ) and getElementType( hit ) == 'player'
        
        if not isValidElement then 
            
            return 
            
        end 
    
        local isElementInVehicle = getPedOccupiedVehicle( hit )
    
        if isElementInVehicle then 
    
            outputChatBox( 'Você precisa estar fora de um veículo para alugar uma bicicleta.', hit, 255, 255, 255 )
            return 
    
        end
    
        outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 )
        
    end
    
    -- comando de alugar a bike
    addCommandHandler( 'alugarbike', 
    function( thePlayer ) 
    
        -- verifica se o jogador está em um dos markeres de aluguel
        local isElementInMarker = isElementWithinRentMarker( thePlayer )
    
        -- verifica se o jogador está em um veículo
        local isElementInVehicle = getPedOccupiedVehicle( thePlayer )
    
        -- caso alguma das verificações seja verdadeira ele cancela a execução
        if not isElementInMarker or isElementInVehicle then
    
            return
    
        end
    
        -- destrói a bike caso o jogador já tenha uma
        if verifyAndDestroyRentVehicle( thePlayer ) then 
    
            return 
    
        end
    
        -- cobra o dinheiro do jogador
        local payment = getPay( 50, thePlayer ) or false 
    
        -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito
        if not payment then
    
            outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true )
            return
    
        end
    
        -- pega posição do jogador
        local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer )
        -- pega dimensão e o interior do marker
        local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 
    
        -- cria a bike e armazena na tabela
        rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ )
    
        -- seta o interior e a dimensão da bike
        setElementDimension( rentStorage[ thePlayer ], dim )
        setElementInterior( rentStorage[ thePlayer ], int )
    
        -- teleporta o jogador pra dentro da bike
        warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] )
    
    end)
    
    -- esse evento será chamado sempre que o resource ligar
    addEventHandler( 'onResourceStart', resourceRoot, 
    function( )
    
        -- fazemos um loop na tabela com as posições dos markers
        for i, v in ipairs( markers ) do 
    
            -- cria o marker
            local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker
    
            -- setamos o interior e a dimensão do marker
            setElementInterior( marker, v.int )
            setElementDimension( marker, v.dim )
            
            -- setamos o marker como elemento filho do elemento pai que criamos acima
            setElementParent( marker, markerStorage['parentElement'] ) 
    
            -- armazenamos alguns dados do marker
            markerStorage['markerData'][ marker ] = {
    
                ['markerElement'] = marker,
                ['int'] = v.int,
                ['dim'] = v.dim
            }
    
        end 
    
        addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage)
    
    end)
    
    -- esse evento será chamado sempre que alguém sair de um veículo
    addEventHandler( 'onVehicleExit', root, 
    function( thePlayer )
    
        verifyAndDestroyRentVehicle( thePlayer )
    
    end)
    
    -- esse evento é chamado sempre que alguém sair do servidor
    addEventHandler( 'onPlayerQuit', root, 
    function( )
    
        verifyAndDestroyRentVehicle( source ) 
    
    end)

    Não sei o que foi que eu fiz que mandei a versão com erro pra vc ao invés da corrigida, mas agora sim, aqui está a correta.

    • Thanks 1
  2. local markers = { 
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
    }

     

    Pra adicionar novos locais faça desse jeito.

  3. -- tabela com a posição dos markers
    local markers = { 
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        },
    }
    
     -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker
    local markerStorage = {
    
        ['parentElement'] = createElement( 'marker.parent' )
        ['markerData'] = { }
    }
    
    -- armazena as bikes alugadas
    local rentStorage = { }
    
    -- desconta o dinheiro do jogador
    local getPay = function( value, thePlayer )
    
        local validValue = value and tonumber( value ) and value > 0 
    
        if not validValue then
    
            return false
    
        end 
    
        local playerMoney = getPlayerMoney( thePlayer ) or 0 
    
        if playerMoney < value then
    
            return false
    
        end
    
        return takePlayerMoney( thePlayer, tonumber( value ) )
    
    end
    
    -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true
    local verifyAndDestroyRentVehicle = function( thePlayer )
    
        -- verifica se a pessoa tem uma bike alugada
        if rentStorage[ thePlayer ] then 
    
            -- verifica se a bike existe
            if isElement( rentStorage[ thePlayer ] ) then
    
                -- destrói a bike
                destroyElement( rentStorage[ thePlayer ] )
    
            end
    
            -- zera a tabela
            rentStorage[ thePlayer ] = nil
    
            return true
    
        end
    
        return false
    
    end
    
    -- mensagem para quando alguém entrar no marker
    local markerOutputMessage = function( hit, dim )
        
        local isValidElement = isElement( hit ) and getElementType( hit ) == 'player'
        local isElementInVehicle = getPedOccupiedVehicle( thePlayer )
        
        if not isValidElement or not isElementInVehicle then 
    
            return 
            
        end 
    
        outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 )
        
    end
    
    -- comando de alugar a bike
    addCommandHandler( 'alugarbike', 
    function( thePlayer ) 
    
        -- verifica se o jogador está em um dos markeres de aluguel
        local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] )
    
        -- verifica se o jogador está em um veículo
        local isElementInVehicle = getPedOccupiedVehicle( thePlayer )
    
        -- caso alguma das verificações seja verdadeira ele cancela a execução
        if not isElementInMarker or not isElementInVehicle then
    
            return
    
        end
    
        -- destrói a bike caso o jogador já tenha uma
        if verifyAndDestroyRentVehicle( thePlayer ) then 
    
            return 
    
        end
    
        -- cobra o dinheiro do jogador
        local payment = getPay( 50, thePlayer ) or false 
    
        -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito
        if not payment then
    
            outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true )
            return
    
        end
    
        -- pega posição do jogador
        local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer )
        -- pega dimensão e o interior do marker
        local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 
    
        -- cria a bike e armazena na tabela
        rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ )
    
        -- seta o interior e a dimensão da bike
        setElementDimension( rentStorage[ thePlayer ], dim )
        setElementInterior( rentStorage[ thePlayer ], int )
    
        -- teleporta o jogador pra dentro da bike
        warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] )
    
    end)
    
    -- esse evento será chamado sempre que o resource ligar
    addEventHandler( 'onResourceStart', resourceRoot, 
    function( )
    
        -- fazemos um loop na tabela com as posições dos markers
        for i, v in ipairs( markers ) do 
    
            -- cria o marker
            local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker
    
            -- setamos o interior e a dimensão do marker
            setElementInterior( marker, v.int )
            setElementDimension( marker, v.dim )
            
            -- setamos o marker como elemento filho do elemento pai que criamos acima
            setElementParent( marker, markerStorage['parentElement'] ) 
    
            -- armazenamos alguns dados do marker
            markerStorage['markerData'][ marker ] = {
    
                ['markerElement'] = marker,
                ['int'] = v.int,
                ['dim'] = v.dim
            }
    
        end 
    
        addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage)
    
    end)
    
    -- esse evento será chamado sempre que alguém sair de um veículo
    addEventHandler( 'onVehicleExit', root, 
    function( thePlayer )
    
        verifyAndDestroyRentVehicle( thePlayer )
    
    end)
    
    -- esse evento é chamado sempre que alguém sair do servidor
    addEventHandler( 'onPlayerQuit', root, 
    function( )
    
        verifyAndDestroyRentVehicle( source ) 
    
    end)

    Corrigi o erro.

  4. -- tabela com a posição dos markers
    local markers = { 
        { 
            pos = { 0, 0, 0 }, -- XYZ
            int = 0, -- Interior -> padrão 0
            dim = 0  -- Dimensão -> padrão 0
        }
    }
    
     -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker
    local markerStorage = {
    
        ['parentElement'] = createElement( 'marker.parent' )
        ['markerData'] = { }
    }
    
    -- armazena as bikes alugadas
    local rentStorage = { }
    
    -- desconta o dinheiro do jogador
    local getPay = function( value, thePlayer )
    
        local validValue = value and tonumber( value ) and value > 0 
    
        if not validValue then
    
            return false
    
        end 
    
        local playerMoney = getPlayerMoney( thePlayer ) or 0 
    
        if playerMoney < value then
    
            return false
    
        end
    
        return takePlayerMoney( thePlayer, tonumber( value ) )
    
    end
    
    -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true
    local verifyAndDestroyRentVehicle = function( thePlayer )
    
        -- verifica se a pessoa tem uma bike alugada
        if rentStorage[ thePlayer ] then 
    
            -- verifica se a bike existe
            if isElement( rentStorage[ thePlayer ] ) then
    
                -- destrói a bike
                destroyElement( rentStorage[ thePlayer ] )
    
            end
    
            -- zera a tabela
            rentStorage[ thePlayer ] = nil
    
            return true
    
        end
    
        return false
    
    end
    
    -- mensagem para quando alguém entrar no marker
    local markerOutputMessage = function( hit, dim )
        
        local isValidElement = isElement( hit ) and getElementType( hit ) == 'player'
        local isElementInVehicle = getPedOccupiedVehicle( thePlayer )
        
        if not isValidElement or not isElementInVehicle then 
    
            return 
            
        end 
    
        outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 )
        
    end
    
    -- comando de alugar a bike
    addCommandHandler( 'alugarbike', 
    function( thePlayer ) 
    
        -- verifica se o jogador está em um dos markeres de aluguel
        local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] )
    
        -- verifica se o jogador está em um veículo
        local isElementInVehicle = getPedOccupiedVehicle( thePlayer )
    
        -- caso alguma das verificações seja verdadeira ele cancela a execução
        if not isElementInMarker or not isElementInVehicle then
    
            return
    
        end
    
        -- destrói a bike caso o jogador já tenha uma
        if verifyAndDestroyRentVehicle( thePlayer ) then 
    
            return 
    
        end
    
        -- cobra o dinheiro do jogador
        local payment = getPay( 50, thePlayer ) or false 
    
        -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito
        if not payment then
    
            outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true )
            return
    
        end
    
        -- pega posição do jogador
        local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer )
        -- pega dimensão e o interior do marker
        local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 
    
        -- cria a bike e armazena na tabela
        rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ )
    
        -- seta o interior e a dimensão da bike
        setElementDimension( rentStorage[ thePlayer ], dim )
        setElementInterior( rentStorage[ thePlayer ], int )
    
        -- teleporta o jogador pra dentro da bike
        warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] )
    
    end)
    
    -- esse evento será chamado sempre que o resource ligar
    addEventHandler( 'onResourceStart', resourceRoot, 
    function( )
    
        -- fazemos um loop na tabela com as posições dos markers
        for i, v in ipairs( markers ) do 
    
            -- cria o marker
            local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker
    
            -- setamos o interior e a dimensão do marker
            setElementInterior( marker, v.int )
            setElementDimension( marker, v.dim )
            
            -- setamos o marker como elemento filho do elemento pai que criamos acima
            setElementParent( marker, markerStorage['parentElement'] ) 
    
            -- armazenamos alguns dados do marker
            markerStorage['markerData'][ marker ] = {
    
                ['markerElement'] = marker,
                ['int'] = v.int,
                ['dim'] = v.dim
            }
    
        end 
    
        addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage)
    
    end)
    
    -- esse evento será chamado sempre que alguém sair de um veículo
    addEventHandler( 'onVehicleExit', root, 
    function( thePlayer )
    
        verifyAndDestroyRentVehicle( thePlayer )
    
    end)
    
    -- esse evento é chamado sempre que alguém sair do servidor
    addEventHandler( 'onPlayerQuit', root, 
    function( )
    
        verifyAndDestroyRentVehicle( source ) 
    
    end)
    
    
    
    

    Fiz este código aqui, não testei, por isso pode ser que tenha algo errado. Recomendo que estude como funciona, tentei deixar o mais comentado possível pra facilitar sua compreensão. 

  5. Olá, você precisa usar algum recurso para repetir este código. Ali no exemplo do Androksi ele utilizou o onClientPreRender.

    Segue abaixo um exemplo de como esse seu código deveria ser para funcionar da maneira que você quer.

    local object = false -- variável que armazenará o objeto ou o valor `false` para a verificação do comando 
    local objectRotation = 0 -- rotação inicial do objeto 
    local object_id = 1337 -- id do objeto que será criado 
    
    local rotObject = function( ) -- função de rotação do objeto
    
        local pX, pY, pZ = getElementPosition( localPlayer )
        
        setElementPosition( object, pX, pY, pZ + 1 ) -- seta a posição do objeto para cima do player 
        setElementRotation( object, 0, 0, objectRotation ) -- seta a rotação do objeto 
        objectRotation = objectRotation + 1 -- aumenta a rotação do objeto
      
        if objectRotation >= 360 then -- verifica se a rotação chegou ao fim e reinicia 
    
            objectRotation = 0 
    
        end
    
    end
    
    local cdObject = function( ) -- cria e destroy o objeto
    
        if not object then
            
            local pX, pY, pZ = getElementPosition( localPlayer ) -- pega posição do jogador
    
            object = createObject( object_id, pX, pY, pZ  ) -- cria o objeto na posição do jogador 
    
            if object then  
            
                addEventHandler( 'onClientPreRender', root, rotObject ) -- adiciona o evento de render
    
            end 
    
        else 
    
            if isElement( object ) then 
    
                removeEventHandler( 'onClientPreRender', root, rotObject ) -- remove o evento de render 
                destroyElement( object ) -- destroi o objeto 
                object = false -- define a variável que armazena o objeto para false 
    
            end
            
        end    
    
    end
    
    addCommandHandler( 'objeto', cdObject ) -- adiciona o comando 

     

  6. local mrk = createMarker(-2420.59448, -608.15979, 131.56250, "cylinder", 1.6, 255,0,0, 40)
    
    
    addEventHandler("onClientKey", getRootElement(), 
    function(button, press)
    	if isElementWithinMarker( source, mrk ) then
    		if button == "F1" or "F3" then
    			cancelEvent()
    		end
    	end
    end)

    Não testei mas veja se funciona

  7. Estou desenvolvendo um resource de assalto a lojinha que utiliza tabelas para criar os markers que vão dentro das lojinhas, porém me deparei com um problema no desenvolvimento, ao usar o isElementWithinMarker ele só me permite assaltar no último marker criado, tentei resolver isso de diversas formas mas todas obtive o mesmo problema :( 

    --< server-side >
    function startAssaltoGF(source)
        if isElement(source) then 
            if estaNoMarkerGF(source) == true then 
                if isGuestAccount(getPlayerAccount(source)) then 
                    outputChatBox("#cd4747[ERRO]:#ffffffVocê deve estar logado para assaltar uma loja", source, 255, 255, 255, true)
                else 
                    outputChatBox("#cd4747[INFO]:#ffffffIniciando assalto.", source, 255, 255, 255, true)
                    setPedAnimation(source, "bomber", "bom_plant", -1, true, false, true)
                    toggleAllControls(source, false)
                    setTimer(
                        function() 
                            givePlayerMoney(source, 1000) 
                            outputChatBox("Você recebeu o dinheiro", source, 255, 255, 255, true)
                            toggleAllControls(source, true)
                            setPedAnimation(source, nil)
                        end, 10000, 1)
                end
            end 
        end 
    end
    
    local marker = {}
    
    for i, v in ipairs(configLojinhaGF.pos) do 
    marker[i] = createMarker(v[1], v[2], v[3]-1, "cylinder", 1.5, 255, 0, 0, 50)
        addEventHandler("onMarkerHit", marker[i], mostrarAssaltoGF)
        addEventHandler("onMarkerLeave", marker[i], tirarAssaltoGF)
    
        function estaNoMarkerGF(element)
            if isElement(element) then 
                if isElementWithinMarker(element, marker[i]) then 
                    return true 
                else 
                    return false 
                end 
            end 
        end
    end
      
    --< shared-side/config>
    configLojinhaGF = {
        pos = {
            {-2499.488, -617.549, 132.563},
            {-2499.318, -612.605, 132.563},
        },
    
    }

    obs: já tentei colocar a function do assalto dentro do for com:

    isElementWithinMarker(source, marker[i])

    porém obtive o mesmo resultado. Desde já obrigado pela atenção! :) 

  8. local gate = createObject (16775, 2532, -1514.5999755859, 27.10000038147, 0, 0, 0)
    local marker = createMarker (2532, -1514.5999755859, 27.10000038147, "cylinder", 8, 0, 0, 0, 0) 
      
    function moveGate (thePlayer) 
    local accName = getAccountName ( getPlayerAccount ( thePlayer ) )
       if isObjectInACLGroup ("user."..accName, aclGetGroup ( "CV" ) ) then
       	moveObject(gate, 1900, 2532, -1.514,5999755859, 18,89999961853)
      end 
    end 
    addEventHandler ( "onMarkerHit", root, moveGate ) 
      
    function move_back_gate () 
         moveObject(gate, 1900, 2532, -1514.5999755859, 27.10000038147, 0, 0, 0) 
    end 
    addEventHandler ("onMarkerLeave", root, move_back_gate)

    tenta isso, lembrando que você deve estar na acl CV

    • Like 1
  9. O código que você postou foi traduzido para português dificultando a te ajudar mas tenta isso: 

     

    local gate = createObject (16775, 2532, -1514.5999755859, 27.10000038147, 0, 0, 0)
    local marker = createMarker (2532, -1514.5999755859, 27.10000038147, "cylinder", 8, 0, 0, 0, 0) 
      
    function moveGate (thePlayer) 
    local accName = getAccountName ( getPlayerAccount ( thePlayer ) )
       if isObjectInACLGroup ("user."..accName, aclGetGroup ( "CV" ) ) then
       	Moveobject (gate, 1900, 2532, -1.514,5999755859, 18,89999961853)
      end 
    end 
    addEventHandler ( "onMarkerHit", root, moveGate ) 
      
    function move_back_gate () 
         moveObject (gate, 1900, 2532, -1514.5999755859, 27.10000038147, 0, 0, 0) 
    end 
    addEventHandler ("onMarkerLeave", root, move_back_gate)

     

    • Thanks 1
  10. A um tempo atrás experimentei fazer um script de copom para policiais, porém como não tinha funcionado deixei a idéia de lado e hoje resolvi tentar pedir ajuda aqui. Ele até funciona mas não da maneira correta, gostaria que quando apertasse o 'capslock' e falasse mandasse a voz ao copom e ao soltar ele fosse desativado, mas da maneira que fiz é necessário pressionar para ativar/desativar.

    Desde já muito obrigado!

    Edit: não sei se este script que mandei está funcionando, pois estava testando e deixei a idéia de lado

    -- CLIENT-SIDE
    addEventHandler("onClientKey",getRootElement(),
    function(btn, press)
    	if btn == "capslock" then 
            if (press) and exports.Admin:isPlayerDuty(localPlayer) then 
                if getElementData(localPlayer,"inCall") == false then 
                    triggerServerEvent("Enable->radinho",localPlayer,localPlayer)
                    setElementData(localPlayer,"inCall",true)
                    outputChatBox("#cd4747[BCO- COPOM]:#ffffff COPOM ATIVADO!",255,255,255,true)
                else 
                    outputChatBox("#cd4747[BCO- COPOM]:#ffffff COPOM DESATIVADO",255,255,255,true)
                    setElementData(localPlayer,"inCall",false)
    			end
    		end  
    	end 
    end)
    
    --SERVER-SIDE
    
    addEvent("Enable->radinho", true)
    addEventHandler("Enable->radinho", root,
    function(thePlayer)
        if getElementData(thePlayer,"inCall") == true then 
            local empty = exports.bco_voice:getNextEmptyChannel() 
    	   		exports.bco_voice:setPlayerChannel(thePlayer, empty)  
                setPlayerVoiceBroadcastTo( thePlayer, root  )
        else 
            exports.bco_voice:setPlayerChannel ( thePlayer, 100 )
        end
    end)

     

  11. Este mod foi removido de um backup que não usa o dinheiro nativo do mta, como por exemplo o:

    givePlayerMoney(player, 1000)

    O que você deve fazer é adaptar esse script para o dinheiro nativo do mta.

    Tente usar isto:

    function buyItem(player, item, value, amount, count, db)
     	local money = getPlayerMoney(player)
    	if (money >= amount) then 
    		exports.inventario:giveItem(player, item, value, db, 0)
        		takePlayerMoney(player, amount)
    		exports["info"]:showBoxS(player,"Compra efetuada com sucesso","info")
    	else
    		exports["info"]:showBoxS(player,"Dinheiro insuficiente","error")
    	end
    end
    addEvent("addItem", true)
    addEventHandler("addItem", getRootElement(), buyItem)

    desculpa se não estiver funcionando, ainda tenho muito o que aprender <:)

  12. Estou com um erro horrível em meu servidor, toda vez que dou start em qualquer resource aparece o seguinte no debugscript:

    Resource_exemplo destroyed a resource
    Resource_exemplo destroyed a map

    porém quando retiro o resource informado no debugscript ele começa a apresentar o mesmo erro só que dessa vez acusa outro resource e por aí vai, espero que possa me ajudar desde já obrigado pela atenção ;) 

  13. Acabei enviando o erro errado esse aí era o erro do nome que aparece em cima do ped, uma vez que ele não foi criado pois o script não estava encontrando o ID da skin

    o erro correto seria:

    Bad argument @'createPed[Expected number at argument 1, got nil]

    este erro eu acredito que seja por que o comando createPed não está encontrando o id da skin, ou seja está nulo isto acontece quando eu insiro a  variável no lugar do id da skin do ped. 

  14. A um tempo atrás vi um script que foi postado no MTA brasil que tinha o client e o server compilado além deles havia também a parte de config, fiquei curioso e resolvi testar porém encontrei algumas "barreiras" que vão além do meu conhecimento em .Lua se puder me ajudar fico grato :) 

    O que está me atrapalhando é o seguinte: 

    Estou criando um script para corporações que utiliza um ped para abrir um painel dx, ao abrir o painel terá as funções de pegar e guardar os equipamentos, eu gostaria que este ped fosse configurado através de variáveis como no exemplo a seguir:

    --==--==client-side==--==
    
    policePed = createPed(280, 2033.4772949219, 1504.4064941406, 10.8203125)
    --(não está configurado a variável)
    --==--==Config-side==--==
    SKIN = 280

    Só que ao inserir a variável na criação do ped acontece o seguinte erro:

    attempt to compare boolean with number

    também tentei usar a criação de tabela:

    config = {
        pedSkin = 280;
    
    }

    E novamente deu erro, acredito que isso seja fácil de ser resolvido e o problema minha falta de conhecimento na linguagem :) 

  15. Estava querendo criar um painel dx que aparecesse quando algum player entrasse no marker até aí tudo bem,  porém quando fui colocar a função pra quando o player saísse do marker o painel fechasse começou a dar o seguinte erro no debugscript:

    ERROR:Server triggered clientside Event:Fechar_Painel, but event is not added clientside

    segue o script:

    --<><><><><CLIENT-SIDE><><><><>
    local screenW,screenH = guiGetScreenSize()
    local resW, resH = 1280, 960
    local x, y =  (screenW/resW), (screenH/resH)
    local painel = false 
     
    function dx_Painel ()
       if painel == true then
          dxDrawText("TESTE", screenW * 0.3265, screenH * 0.3581, screenW * 0.6837, screenH * 0.6211, tocolor(255, 255, 255, 255), 3.00, "default", "center", "center", false, false, false, false, false)
    end
    end
    
    function abrir_painel ()
       if painel == false then
          addEventHandler("onClientRender", getRootElement(), dx_Painel)
          painel = true
       end
    end
    addEvent("Event:Abrir_Painel", true)
    addEventHandler("Event:Abrir_Painel", getRootElement(), abrir_painel)
    
    
    
    function fechar_painel ()
        if painel == true then
            painel = false
            removeEventHandler("onClientRender", getRootElement(), dx_Painel)
     
    addEvent("Event:Fechar_Painel", true)
    addEventHandler("Event:Fechar_Painel", getRootElement(), fechar_painel)
        end 
    end
    --<><><><><SERVER-SIDE><><><><>
    local marker = createMarker (2035.43018, 1499.35742, 10.82031 -1, "cylinder", 1.5 ,50,100,100)
    
    function abrir_painel (hitElement)   
       if getElementType(hitElement) == "player" then
          triggerClientEvent(hitElement, "Event:Abrir_Painel", hitElement)   
       end
    end
    addEventHandler("onMarkerHit", marker, abrir_painel)
    
    function fechar_painel (leaveElement)
        if getElementType(leaveElement) == "player" then
        triggerClientEvent(leaveElement, "Event:Fechar_Painel", leaveElement)
        outputChatBox("Teste", source, 0, 154, 255)
        end
    end
    addEventHandler("onMarkerLeave", marker, fechar_painel)

    Me perdoe se utilizei algum recurso de forma errada :/

     

  16. Olá, gostaria de saber se há alguma  forma de substituir o MySQL por outro recurso.

    Quase sempre vejo alguns ''scripters'' que pegam algum script com MySQL  removem e postam dizendo que foram eles quem fizeram, sempre fiquei me perguntando como eles faziam, por isso a pergunta, espero que possa me ajudar desculpe se fiz algo de errado ou utilizei algum recurso de maneira inadequada nesta publicação :)

  17. Estou tentando criar um painel para uma corporação e estou com uma problema, bom a ideia do painel seria pra quando o policial entrasse num determinado marker aparecesse um painel com as funções de pegar os equipamentos, guardar os equipamentos e pegar a viatura.

    Eu até consegui fazer o painel aparecer com a ajuda de alguns tópicos criados aqui mas ele aparece por um milésimo e desaparece se alguém poder me ajudar ficarei grato.

    Quote
    local screenW,screenH = guiGetScreenSize()
    local resW, resH = 1280960
    local x, y =  (screenW/resW), (screenH/resH)
        
        painel = true
     
        function Painel ()
        dxDrawRectangle(x*358, y*144, x*631, y*420tocolor(000197), false)
        dxDrawRectangle(x*358, y*144, x*631, y*47tocolor(000203), false)
        dxDrawText("Divinity Police",x*519, y*145, x*833, y*191tocolor(254254254203), 1.50"pricedown""center""center"falsefalsefalsefalsefalse)
        dxDrawRectangle(x*358, y*243, x*632, y*58tocolor(616161203), false)
        dxDrawRectangle(x*358, y*347, x*632, y*58tocolor(616161203), false)
        dxDrawRectangle(x*358, y*438, x*632, y*58tocolor(616161203), false)
        dxDrawText("Pegar equipamentos", x*518, y*253, x*832, y*299tocolor(254254254203), 1.50"pricedown""center""center"falsefalsefalsefalsefalse)
        dxDrawText("Guardar equipamentos", x*515, y*357, x*829, y*403tocolor(254254254203), 1.50"pricedown""center""center"falsefalsefalsefalsefalse)
        dxDrawText("Pegar viatura", x*515, y*448, x*829, y*494tocolor(254254254203), 1.50"pricedown""center""center"falsefalsefalsefalsefalse)
        dxDrawText("X", x*915, y*153, x*961, y*185tocolor(255255255255), 3.00"default""center""center"falsefalsefalsefalsefalse)
          
        addEventHandler("onClientRender"root, Dx)
        end
        addEvent("Abrir_Painel"true)
        addEventHandler("Abrir_Painel"root, Painel)
    Quote
    marker = createMarker (1539.21252-1647.535894.89063"cylinder"1.5 ,50,100,100)
     
    function Open_Painel (source)   
        triggerClientEvent(source, "Abrir_Painel", source)   
    end
    addEventHandler("onMarkerHit", marker, Open_Painel)

     

    o 1° seria o client.Lua e o 2° o server.Lua

    me desculpa se usei algum recurso errado é que sou novo aqui no fórum :/

×
×
  • Create New...