#Dv^ Posted August 1, 2016 Share Posted August 1, 2016 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
Bc# Posted August 1, 2016 Share Posted August 1, 2016 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
#Dv^ Posted August 1, 2016 Author Share Posted August 1, 2016 Gracias por tu ayuda, intentaré formular mi respuesta con tu ejemplo, muchas gracias, Saludos! Link to comment
Recommended Posts