Jump to content

sendmoney(ayuda)


#Dv^

Recommended Posts

Hola!

Perdonen

Tengo este script para enviar dinero entre los players pero tiene bugs

1° Podes mandar dinero en decimales, por ejemplo /enviar nick 0.1 y no quiero que haga eso

2° Podes mandar dinero en número pero también incluyendo letras /enviar nick 1e1 y no quiero que haga eso

3° Podes mandar dinero en negativo /enviar nick -9999 pero en vez de mandar le estás quitando todo el dinero al otro player

¿Qué se usa para que no haga ninguna de esas cosas?

Se los agradezco

function getPlayerFromName(name) 
    local matches = {} 
    for i,v in ipairs(getElementsByType("player")) do 
        if getPlayerName(v) == name then 
            return v 
        end 
        local playerName = getPlayerName(v):gsub("#%x%x%x%x%x%x", "") 
        playerName = playerName:lower() 
        if playerName:find(name:lower(), 0) then 
            table.insert(matches, v) 
        end 
    end 
    if #matches == 1 then 
        return matches[1] 
    end 
    return false 
end 
  
function sendmoney (source, commandname, target, ammount) 
local sourcemoney = getPlayerMoney (source) 
local sourcename = getPlayerName ( source ) 
local targetp = getPlayerFromName (target) 
if targetp then 
if sourcemoney >= tonumber (ammount) then 
takePlayerMoney (source, ammount) 
givePlayerMoney (targetp, ammount) 
outputChatBox ( "#FFFFFFHas transferido a " .. target .. " #FFFFFFun monto de #00FF00$" .. ammount .. "", source,255,255,255,true) 
outputChatBox ( " #FFFFFFEl jugador " .. sourcename .. " #FFFFFFte transferió un monto de #00FF00$" .. ammount .. "", targetp,255,255,255,true ) 
else 
outputChatBox ( " #FFFFFFNo tienes dinero para transferir", source ,255,255,255,true) 
end 
else outputChatBox ( " #FFFFFFInformación inválida", source,255,255,255,true ) 
end 
end 
addCommandHandler("enviar", sendmoney) 

Link to comment

1. El problema de los desimales lo puedes resolver con string.format, ejemplo

var = string.format("%d", 0.1) 
print(var) 

Nota: Lo que hace la funcion es quitarle los decimales al numero.

2. El problema de las letras con numeros lo resuelves facil aplicando un debug.

var = tonumber("1a1") 
if var then 
    print(var) 
else  
    print("La cantidad ingresada no es valida") 
end 

3. Al debug anterior le agregas otro debug

var = tonumber("-11") 
if var then 
    if var > 0 then 
        print(var) 
    else 
        print("El monto ingresado debe ser mayor que 0") 
    end 
else  
    print("La cantidad ingresada no es valida") 
end 

PD: Muchos scripters no hacen esto, pero sirve mucho para pulir scripts. Tambien sirve bastante al momento de buscar errores en codigos muy extensos.

Link to comment
  • Recently Browsing   0 members

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