Depurar errores como un pro · Lección 2/3 · 8 min
print: tu mejor amigo para depurar
Cuando no sabes por qué algo falla, haz que el código te cuente qué está pasando.
El 80% de la depuración es saber qué valor tiene una variable en cierto punto. Para eso está print: pones mensajes que te dicen por dónde pasa el código y con qué datos.
RegisterNetEvent('banco:retirar')
AddEventHandler('banco:retirar', function(cantidad)
local src = source
print('[banco] retirar pedido por', src, 'cantidad:', cantidad)
local xPlayer = ESX.GetPlayerFromId(src)
print('[banco] xPlayer existe?', xPlayer ~= nil)
if not xPlayer then return end
print('[banco] saldo actual:', xPlayer.getAccount('bank').money)
end)Prints estratégicos
Un interruptor de depuración
-- config.lua
Config.Debug = true
-- función helper
local function dbg(...)
if Config.Debug then print('[mi_recurso]', ...) end
end
dbg('esto solo se ve si Config.Debug = true')Debug condicional
Pon prints ANTES y DESPUÉS del punto sospechoso. Si el primero sale y el segundo no, el fallo está en medio. Cuando termines, baja Config.Debug a false (no dejes spam en producción).
Practica lo aprendido
0/3Completa el helper de depuración condicional para que solo imprima si está activado.
-- config.lua → Config.Debug = truelocal function dbg(...) if Config.Debug then ('[mi_recurso]', ...) endendPista
La función estrella para sacar valores por consola en Lua/FiveM.
Este evento da dinero pero 'no funciona' y no lanza error. Añade un print para ver qué llega.
Este código tiene un fallo:
AddEventHandler('banco:dar', function(cantidad) local src = source local xPlayer = ESX.GetPlayerFromId(src) xPlayer.addAccountMoney('bank', cantidad)end)Reescríbelo corregido:
Pista
Un print al entrar con 'cantidad' (y si xPlayer existe) te dice si el handler corre y con qué datos.
Ordena el código para que los prints 'rodeen' la operación sospechosa (antes y después).
Coloca las líneas en el orden correcto con las flechas.
print('[banco] nuevo saldo:', xPlayer.getAccount('bank').money)xPlayer.addAccountMoney('bank', cantidad)print('[banco] antes de dar, cantidad:', cantidad)Pista
Print ANTES del punto sospechoso, ejecutas la acción, y print DESPUÉS para ver el resultado.
Reto: prográmalo tú
Una función no da dinero y no sabes por qué. Añade prints para ver si entra, si el jugador existe y qué cantidad llega.
Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.
Ver pista
Un print al entrar, uno tras GetPlayerFromId (xPlayer~=nil) y uno con la cantidad.
Escribe aquí tu solución:
