Un saludos a todos en la comunidad
He salido de SAMP para pasarme a MTA por todas las mejoras y diferencias que tiene.
No he podido entender bien el uso que se tiene para el client y para el server, por ejemplo he estado utilizando un script que baje de la comunidad
para el registro, login y save, funciona pero aqui viene mi otra duda.
¿Si quiero cargar el dinero de la base de datos como se lo agrego al jugador?
¿Que método es mas seguro de hacerlo?
En samp GetPlayerMoney retorna el dinero del cliente, ¿en MTA tambien es igual? o es una funcion server-side?
Aqui les dejo el script que edite un poco porque daba algunos errores, funciona y todo pero tengo la duda de agregar el dinero al jugador de forma "incorrecta" y que puedan aprovecharse de eso.
Apreciare sus respuestas de antemano, aqui el script por si pueden darme una mano para poder añadir una forma segura el dinero cargado de la DB.
--[[
* Author: Om (RipeMangoes69)
* Project: None (FFA)
* Date: 8 December 2016
* File: server.lua
]]--
root = getRootElement()
function PlayerJoin()
triggerClientEvent (source, "openLoginGUI", source, true)
toggleControl(source, "chatbox", false)
end
addEventHandler ( "onPlayerJoin", root, PlayerJoin )
-- MySQL Handlers.
db = dbConnect( "mysql", "dbname=db_mta;host=127.0.0.1", "root", "pass", "share=1")
if db then
outputDebugString( "Connection with database was successfully established." )
else
outputDebugString( "Connection with database couldn't be established." )
end
function loginPlayer(username, password)
qh = dbQuery(db, "SELECT * FROM accounts WHERE BINARY username=? and password=?", username, md5(password))
result , numrows, errmsg = dbPoll (qh, -1)
local row = result[1]
if row then
triggerClientEvent(client, "login.success", client)
-- Connect to MTA Login System for Admin Access.
local account = getAccount(username, password)
if (account ~= false) then
logIn(client, getAccount(username), password)
outputChatBox("Te has conectado exitosamente como [Administrador].", client)
else
outputChatBox("Te has conectado exitosamente.", client)
end
setElementData(client, "isPlayedLoggedIn", true)
setElementData(client, "getPlayerUsername", username)
spawnPlayer(client, row["pos_x"], row["pos_y"], row["pos_z"], row["pos_r"], row["skin"], 0, 0, getPlayerTeam(client)) -- spawns player with random skin
fadeCamera (client, true)
setCameraTarget (client, client)
toggleControl(client, "chatbox", true)
outputServerLog("Login: User: " .. getPlayerName(client) .. " successfully logged in as " .. username .. "! (IP: " .. getPlayerIP(client) .. " | Serial: " .. getPlayerSerial(client) ..")")
else
outputChatBox("Oops! Something went wrong, have a check on your username and password.", client)
end
end
addEvent("loginPlayer", true)
addEventHandler("loginPlayer", resourceRoot, loginPlayer)
-- Register Player
function registerPlayer(username, password, email)
qh = dbQuery(db, "SELECT * FROM accounts WHERE BINARY username=?", username)
result , numrows, errmsg = dbPoll (qh, -1)
local row = result[1]
if row then
outputChatBox("Sorry! Username already in use.", client)
else
cr = dbQuery(db, "INSERT INTO accounts (username, password, email) VALUES (?,?,?)", username, md5(password), email)
triggerClientEvent(client, "register.success", client)
outputChatBox("Te has registrado correctamente, ahora coloca tus datos para conectarte.", client)
end
end
addEvent("registerPlayer", true)
addEventHandler("registerPlayer", resourceRoot, registerPlayer)
-- Bug Fixed.
function rejoinMe(thePlayer)
redirectPlayer(thePlayer,"",0)
end
addEvent("redirectPlr", true)
addEventHandler("redirectPlr", root, rejoinMe)
function saveData()
x,y,z = getElementPosition(source)
money = getPlayerMoney(source)
skin = getPedSkin(source)
local query = "UPDATE accounts SET skin='" .. skin .. "', pos_x='" .. x .. "', pos_y='" .. y .."', pos_z='" .. z .."' WHERE username='" .. getPlayerUsername(source) .."'"
dbQuery(db, query)
outputServerLog("Guardando jugador "..getPlayerUsername(source).."")
end
addEvent("saveData", true)
addEventHandler("onPlayerQuit", root, saveData)
-- Exports
function getPlayerUsername(thePlayer)
un = getElementData(thePlayer, "getPlayerUsername")
return un
end