Jump to content

[Ajuda]Script


Recommended Posts

Cara eu começei agoro na lua e tentei colocar time no comprar vida e colete aqui esta o codigo

commando = { } 
tempo = 20000 
  
function buyhealth (thePlayerSource) 
    local money = getPlayerSourceMoney ( thePlayerSource ) 
    if money >= 250 then 
    if (commando[thePlayerSource]) then 
        return outputChatBox ( "Aguarde 20 segundo para comprar Vida Novamente !!", source, 225, 0, 0 ) 
        end 
        outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) 
        local thePlayerhealth = getElementHealth ( thePlayerSource ) 
        setElementHealth ( thePlayerSource, 569 ) 
        takePlayerSourceMoney ( thePlayerSource, 2500 ) 
    else 
        outputChatBox("A Vida Custa 2500$!",thePlayerSource, 255, 0, 0) 
commando[thePlayerSource] = true 
setTimer( function(buyhealth) 
        commando[thePlayerSource] = false 
    end, tempo, 1) 
end 
addCommandHandler ( "vida", buyhealth ) 
  
commando = { } 
tempo = 20000 
  
function buyarmor (thePlayerSource) 
    local money = getPlayerMoney ( thePlayerSource ) 
    if money >= 500 then 
    if (commando[thePlayerSource]) then 
        return outputChatBox ( "Aguarde 20 segundo para comprar Colete Novamente !!", source, 225, 0, 0 ) 
        end 
        outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) 
        local thePlayerarmor = getPedArmor(thePlayerSource) 
        setPedArmor ( thePlayerSource, 100 ) 
        takePlayerSourceMoneyMoney ( thePlayerSource, 3500 ) 
    else 
        outputChatBox("O Colete Custa 3500$!",thePlayerSource, 255, 0, 0) 
    commando[thePlayerSource] = true 
setTimer( function(buyarmor) 
        commando[thePlayerSource] = false 
    end, tempo, 1) 
end 
addCommandHandler ( "colete", buyarmor ) 

Link to comment

Existem vários problemas no seu codigo, vou tentar listar todos.

  • Você Usou funções que não existem (getPlayerSourceMoney, takePlayerSourceMoney etc)
  • Você redefiniu a tabela comando na linha 23
  • Você não tem um sistema que 'mate' o timer quando o player sai do servidor (isso causa erros no /debugscript e problemas de desempenho)
  • Você definiu variaveis que não foram usadas (como thePlayerhealth, isso não causa problemas mas enfim)
  • Na linha 8 e na linha 30 você usou source (variavel que não foi definida) no segundo parâmetro de outputChatBox

Aqui um código mais limpo e sem bugs:

lastBuy = {} 
  
tempo = 20 -- tempo (em segundos) para poder comprar vida/colete novamente 
  
function buyhealth (thePlayer) 
    if getPlayerMoney ( thePlayer ) >= 250 then 
        if canBuy ( thePlayer, "vida" ) then 
            outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) 
            setElementHealth ( thePlayer, 569 ) 
            takePlayerMoney ( thePlayer, 2500 ) 
        else 
            local _, tempo = canBuy ( thePlayer, "vida" ) 
            outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Vida Novamente !!", thePlayer, 225, 0, 0 ) 
        end 
    else 
        outputChatBox("A Vida Custa 250$!",thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "vida", buyhealth ) 
  
function buyarmor (thePlayer) 
    if getPlayerMoney ( thePlayer ) >= 500 then 
        if canBuy ( thePlayer, "colete" ) then 
            outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) 
            setPedArmor ( thePlayer, 100 ) 
            takePlayerMoney ( thePlayer, 3500 ) 
        else 
            local _, tempo = canBuy ( thePlayer, "colete" ) 
            outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Colete Novamente !!", thePlayer, 225, 0, 0 ) 
        end 
    else 
        outputChatBox("O Colete Custa 3500$!",thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "colete", buyarmor ) 
  
function canBuy ( player, what ) 
    local toreturn 
    
    if lastBuy[player] and lastBuy[player][what] then 
        toreturn = ( lastBuy[player][what] - getTickCount() ) /1000 > 0 and math.floor ( ( lastBuy[player][what] - getTickCount() ) /1000 ) or true 
        toreturn = toreturn  
    else 
        toreturn = true 
        
        if not lastBuy[player] then lastBuy[player] = {} end 
        lastBuy[player][what] = getTickCount() + ( tempo *1000 ) 
    end 
    
    return toreturn == true and toreturn or false, toreturn 
end 
  
addEventHandler ( "onPlayerQuit", root, 
function ( ) 
    if lastBuy[source] then 
        lastBuy[source] = nil 
    end 
end ) 

Detalhe que eu criei uma função chamada canBuy, Ela serve para determinar se o player pode ou não comprar algo (e se não pode ela também retorna o tempo 'faltando' até ele poder comprar), Sem o uso de timers :P

Edited by Guest
Link to comment
Existem vários problemas no seu codigo, vou tentar listar todos.

  • Você Usou funções que não existem (getPlayerSourceMoney, takePlayerSourceMoney etc)
  • Você redefiniu a tabela comando na linha 23
  • Você não tem um sistema que 'mate' o timer quando o player sai do servidor (isso causa erros no /debugscript e problemas de desempenho)
  • Você definiu variaveis que não foram usadas (como thePlayerhealth, isso não causa problemas mas enfim)
  • Na linha 8 e na linha 30 você usou source (variavel que não foi definida) no segundo parâmetro de outputChatBox

Aqui um código mais limpo e sem bugs:

lastBuy = {} 
  
tempo = 20 -- tempo (em segundos) para poder comprar vida/colete novamente 
  
function buyhealth (thePlayer) 
    if getPlayerMoney ( thePlayer ) >= 250 then 
        if canBuy ( thePlayer, "vida" ) then 
            outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) 
            setElementHealth ( thePlayer, 569 ) 
            takePlayerMoney ( thePlayer, 2500 ) 
        else 
            local _, tempo = canBuy ( thePlayer, "vida" ) 
            outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Vida Novamente !!", thePlayer, 225, 0, 0 ) 
        end 
    else 
        outputChatBox("A Vida Custa 250$!",thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "vida", buyhealth ) 
  
function buyarmor (thePlayer) 
    if getPlayerMoney ( thePlayer ) >= 500 then 
        if canBuy ( thePlayer, "colete" ) then 
            outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayer) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) 
            setPedArmor ( thePlayer, 100 ) 
            takePlayerMoney ( thePlayer, 3500 ) 
        else 
            local _, tempo = canBuy ( thePlayer, "colete" ) 
            outputChatBox ( "Aguarde "..( tempo or "?" ).." segundo(s) para comprar Colete Novamente !!", thePlayer, 225, 0, 0 ) 
        end 
    else 
        outputChatBox("O Colete Custa 3500$!",thePlayer, 255, 0, 0) 
    end 
end 
addCommandHandler ( "colete", buyarmor ) 
  
function canBuy ( player, what ) 
    local toreturn 
     
    if lastBuy[player] and lastBuy[player][what] then 
        toreturn = ( lastBuy[player][what] - getTickCount() ) /1000 < getTickCount() and math.floor ( ( lastBuy[player][what] - getTickCount() ) /1000 ) or true 
    else 
        toreturn = true 
         
        if not lastBuy[player] then lastBuy[player] = {} end 
        lastBuy[player][what] = getTickCount() + ( tempo *1000 ) 
    end 
     
    return toreturn == true and toreturn or false, toreturn 
end 
  
addEventHandler ( "onPlayerQuit", root, 
function ( ) 
    if lastBuy[source] then 
        lastBuy[source] = nil 
    end 
end ) 

Detalhe que eu criei uma função chamada canBuy, Ela serve para determinar se o player pode ou não comprar algo (e se não pode ela também retorna o tempo 'faltando' até ele poder comprar), Sem o uso de timers :P

Esta com bug sim quando acaba os segundos para comprar a vida e colete aparece -1 -2 e n da pra comprar mas

Link to comment
Esta com bug sim quando acaba os segundos para comprar a vida e colete aparece -1 -2 e n da pra comprar mas

Copie o código novamente.

Mas 1 bug quando acaba os segundos compra a vida normal mas dae compra vida devolta e n tem time pode comprar um monte de vida sem ter q esperar os 20 segundos

Link to comment

Seu código está certo só faltou

- end

- um comando = {} pra cada comando

- alterar source pra thePlayerSource no outputChatBox

- alterar getPlayerSourceMoney para getPlayerMoney

-

        commandoColete[thePlayerSource] = true 
        setTimer( function(buyarmor) 
            commandoColete[thePlayerSource] = false 
        end, tempo, 1) 

Tem que ficar dentro do if não dentro do else

  
commandoVida = { } 
tempo = 20000 
  
function buyhealth (thePlayerSource) 
    local money = getPlayerMoney ( thePlayerSource ) 
    if money >= 250 then 
  
        if (commandoVida[thePlayerSource]) then 
            return outputChatBox ( "Aguarde 20 segundo para comprar Vida Novamente !!", thePlayerSource, 225, 0, 0 ) 
        end 
  
        outputChatBox ('#ffffff[#00FF00 Vida #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Uma [#00FF00 /vida #ffffff] Por #00FF00R$: 2500', root, 255, 255, 255, true) 
        local thePlayerhealth = getElementHealth ( thePlayerSource ) 
        setElementHealth ( thePlayerSource, 569 ) 
        takePlayerMoney ( thePlayerSource, 2500 ) 
        commandoVida[thePlayerSource] = true 
        setTimer( function(buyhealth) 
                commandoVida[thePlayerSource] = false 
            end, tempo, 1)  
    else 
        outputChatBox("A Vida Custa 2500$!",thePlayerSource, 255, 0, 0) 
    end 
end 
addCommandHandler ( "vida", buyhealth ) 
  
commandoColete = { } 
tempo = 20000 
  
function buyarmor (thePlayerSource) 
    local money = getPlayerMoney ( thePlayerSource ) 
    if money >= 500 then 
        if (commandoColete[thePlayerSource]) then 
            return outputChatBox ( "Aguarde 20 segundo para comprar Colete Novamente !!", thePlayerSource, 225, 0, 0 ) 
        end 
  
        outputChatBox ('#ffffff[#00FF00 Colete #ffffff] ' .. getPlayerName(thePlayerSource) .. '#ffffff Comprou Um [#00FF00 /colete #ffffff] Por #00FF00R$: 3500', root, 255, 255, 255, true) 
        local thePlayerarmor = getPedArmor(thePlayerSource) 
        setPedArmor ( thePlayerSource, 100 ) 
        takePlayerMoney ( thePlayerSource, 3500 ) 
        commandoColete[thePlayerSource] = true 
        setTimer( function(buyarmor) 
            commandoColete[thePlayerSource] = false 
        end, tempo, 1) 
    else 
        outputChatBox("O Colete Custa 3500$!",thePlayerSource, 255, 0, 0) 
  
    end 
end 
addCommandHandler ( "colete", buyarmor ) 
  

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...