Jump to content

DNL291

Moderators
  • Posts

    3,875
  • Joined

  • Days Won

    67

Posts posted by DNL291

  1. Você vai precisar obter os dados da sessão atual e somar com o atual na conta, senão ficará sempre o valor de uma sessão.
    Na sua tentativa existem vários erros:

    • Falta um end na função SalvarLoginPlay
    • Não adicionou nenhum evento às funções
    • source que precisa ser um elemento-player

    Segue o código:
     

    
    -- carregamento
    local function CarregarLoginPlay ( thePlayer )
        local acc = getPlayerAccount(thePlayer)
        if acc and not isGuestAccount(acc) then		
    		local driveDisdata = getAccountData( acc, "driveDistance" ) or 0
    		setElementData( thePlayer, "driveDistance", driveDisdata )
    	end	
    end
    addEventHandler( "onPlayerLogin", root, function() setTimer(CarregarLoginPlay, 200, 1, source) end )
    
    addEventHandler( "onResourceStart", resourceRoot, function()
        setTimer( function()
            for _,p in pairs(getElementsByType"player")
                CarregarLoginPlay(p)
            end
        end, 250, 1 )
    end )
    
    -- salvamento
    local function SalvarLoginPlay ( thePlayer, acc )
        local acc = (acc and acc or getPlayerAccount(thePlayer))
        if acc and not isGuestAccount(acc) then
            local acc_data = tonumber(getAccountData( acc, "driveDistance" )) or 0
            local element_data = tonumber(getElementData ( thePlayer, "driveDistance" )) or "N/C"
            if element_data ~= "N/C" then
                setAccountData( acc, "driveDistance", acc_data + element_data )
            else
                outputDebugString("@SalvarLoginPlay: 'element_data' retornou um valor inválido (jogador: "..getPlayerName(thePlayer)..")")
            end
        end
    end
    addEventHandler( "onPlayerQuit", root, function() SalvarLoginPlay(source) end )
    addEventHandler( "onPlayerLogout", root, function(acc) SalvarLoginPlay(source, acc) end )
    
    addEventHandler( "onResourceStop", resourceRoot, function()
        setTimer( function()
            for _,p in pairs(getElementsByType"player")
                SalvarLoginPlay(p)
            end
        end, 250, 1 )
    end )

    Não testei; recomendo que ative o debugscript 3 ao testar

  2. O bug provavelmente ocorre por não verificar se a tecla está segurada ou foi solta.
    De qualquer forma, o cooldown funcionaria assim:

    local lastTick = getTickCount()
    bindKey("tab", "both", function()
        if (getTickCount() - lastTick) < 3000 then
            return
        end
        lastTick = getTickCount()
        if isEventHandlerAdded("onClientRender", root, scoreboardMenu) then
            removeEventHandler("onClientRender", root, scoreboardMenu)
            destroyPed()
        else
            addEventHandler("onClientRender", root, scoreboardMenu)
            createModelPed()
        end
    end)


     

  3. Olá e bem-vindo ao fórum. Para manter o local organizado temos os respectivos sub-fóruns, por isso, sempre que criar um tópico por favor crie-o dentro do sub-fórum Portuguese / Português 

    Você pode encontrá-lo pela página inicial do fórum da forma mostrada abaixo:  

    MJDsq2U.png

    Isso evitará o trabalho que os moderadores têm diariamente de mover posts para os locais certos.  

    Sempre que criar um novo tópico, certifique-se que esteja na devida categoria. No sub-fórum Português ficam todas postagens na linguagem portuguesa, enquanto que fora da categoria Other languages só é permitido posts em inglês, por isso, sempre que responder um tópico, preste atenção a isso. 

     

    Movido para: Portuguese / Português > Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
    @SrAlexz

  4. Você tem placa de vídeo? Imaginei que tivesse, por causa desta a print:

    On 29/06/2020 at 19:23, miguelanjos373 said:

    Bom, isso pode ser pela limitação da sua placa integrada, alguns servidores abusam de funções que utilizam memória gráfica fazendo com que muitos jogadores tenham esse tipo de problema.
    De qualquer forma, baixe e execute esta ferramenta:
    https://mirror.multitheftauto.com/mtasa/utils/MTADiag.exe
    quando terminar a verificação você cola aqui o link pastebin gerado.

  5. Como o Gw8 disse, deve ter outro código com esse texto DX. Nesse trecho de código não tem como mostrar ambos os textos.
    @ber 'stats' não irá retornar um valor válido (string), o valor precisa estar entre aspas.

    • Thanks 1
  6. localplayer é a variável predefinida para getLocalPlayer() - Para obter o elemento-cliente, isto é, o jogador local.
    Se ainda não entendeu bem você precisa aprender melhor sobre a diferença entre server-side e client-side
    Enquanto que thePlayer/player não é nada além de parâmetro ou variável que é definido pelo programador, e não tem nenhuma definição nem em Lua nem no MTA.

     

    2 hours ago, Boechat said:

    Aproveitando o post, queria perguntar se alguém sabe como cancelar o efeito de morte do player, achei que essa função funcionaria

     addEventHandler ( "onPlayerWasted", getRootElement(), cancelEvent(true) )

    Esse evento não é cancelável, você vai precisar do evento onClientPlayerDamage para funcionar o cancelEvent.

    • Like 1
×
×
  • Create New...