Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #define MySQL_Servidor "localhost"
- #define MySQL_Usuario "root"
- #define MySQL_BD "samp"
- #define MySQL_Clave "" //no le ponemos clave ya que no tendría sentido.
- #define LOGIN 1
- #define REGISTRO 2
- new Conecction;
- enum pInfo
- {
- pPassword[128],
- pAdmin,
- pScore,
- pMoney,
- Float:pVida,
- Float:pChaleco,
- Float:pPosx,
- Float:pPosy,
- Float:pPosz,
- Float:pPosa
- };
- new PlayerInfo[MAX_PLAYERS][pInfo];
- main()
- {}
- public OnGameModeInit()
- {
- SetGameModeText("X-RP *(R1)* Alpha");
- printf("Iniciando conexión MySQL: (Servidor: '%s', Usuario: '%s', Clave: '%s', Base de Datos: '%s')", MySQL_Servidor, MySQL_Usuario, MySQL_Clave, MySQL_BD);
- Conecction = mysql_connect(MySQL_Servidor, MySQL_Usuario, MySQL_BD,MySQL_Clave);
- /* if(mysql_ping() == 1) //Comprobamos si se conectó
- {
- printf("Conexión a la base de datos realizada correctamente.");
- }
- else //Caso contrario:
- {
- print("Conexión a la base de datos no realizada.");
- mysql_close(); //Cerramos la conexión
- SendRconCommand("exit"); //Cerramos la consola para evitar bug's
- }*/
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- CheckPlayer(playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveAccount(playerid);
- return 1;
- }
- public OnQueryError(errorid, error[], callback[], query[], connectionHandle )
- {
- printf("[ERROR] ID: %d - Error: %s - Callback - %s - Query: %s", errorid, error, callback, query); //Imprimimos el mensaje en la consola
- return 1;
- }
- forward CheckPlayer(playerid);
- public CheckPlayer(playerid)
- {
- new pName[24], Query[256];
- GetPlayerName(playerid, pName, 24);
- format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE Nombre='%s'", pName);
- mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii",2, playerid);
- return 1;
- }
- forward OnQueryFinish(resultid, extraid, ConnectionHandle);
- public OnQueryFinish(resultid, extraid, ConnectionHandle)
- {
- new Rows, Field, string[256];
- if(resultid != 0)
- {
- cache_get_data(Rows, Field);
- }
- switch(resultid)
- {
- case 1:
- {
- if(Rows == 1)
- {
- new content[20];
- cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
- cache_get_field_content(0, "Score", content); PlayerInfo[extraid][pScore] = strval(content);
- cache_get_field_content(0, "Dinero", content); PlayerInfo[extraid][pMoney] = strval(content);
- cache_get_field_content(0, "Vida", content); PlayerInfo[extraid][pVida] = floatstr(content);
- cache_get_field_content(0, "Chaleco", content); PlayerInfo[extraid][pChaleco] = floatstr(content);
- cache_get_field_content(0, "posX", content); PlayerInfo[extraid][pPosx] = floatstr(content);
- cache_get_field_content(0, "posY", content); PlayerInfo[extraid][pPosy] = floatstr(content);
- cache_get_field_content(0, "posZ", content); PlayerInfo[extraid][pPosz] = floatstr(content);
- SetSpawnInfo(extraid,0, GetPlayerSkin(extraid), PlayerInfo[extraid][pPosx],PlayerInfo[extraid][pPosy],PlayerInfo[extraid][pPosz],0,0,0,0,0,0,0);
- SetPlayerScore(extraid, PlayerInfo[extraid][pScore]);
- GivePlayerMoney(extraid, PlayerInfo[extraid][pMoney]);
- SetPlayerArmour(extraid, PlayerInfo[extraid][pChaleco]);
- SetPlayerHealth(extraid, PlayerInfo[extraid][pVida]);
- }
- else if(!Rows)
- {
- //
- }
- }
- case 2:
- {
- if(Rows == 1)
- {
- new pName[24]; GetPlayerName(extraid, pName, 24);
- cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
- format(string, sizeof(string), "El personaje %s está registrado en la base de datos. Pon los datos para iniciar sesión:", pName);
- ShowPlayerDialog(extraid, LOGIN, DIALOG_STYLE_PASSWORD,"Login",string,"Enviar","Salir");
- }
- else if(!Rows)
- {
- new pName[24]; GetPlayerName(extraid, pName, 24);
- format(string, sizeof(string), "El jugador %s no está registrado en el servidor, pon aquí la contraseña para registrarlo:", pName);
- ShowPlayerDialog(extraid, REGISTRO, DIALOG_STYLE_PASSWORD,"Registro:",string,"Enviar","Salir");
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new string[256];
- new pName[24], Query[256]; GetPlayerName(playerid, pName, 24);
- switch(dialogid)
- {
- case LOGIN:
- {
- if(!response)
- {
- Kick(playerid);
- }
- if(strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 128) == 0)
- {
- format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE `Nombre` = '%s'", pName);
- mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 1, playerid);
- SetSpawnInfo(playerid,0,0,PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz],0,0,0,0,0,0,0);
- SetPlayerHealth(playerid, PlayerInfo[playerid][pVida]);
- SetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
- SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
- GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
- SpawnPlayer(playerid);
- }
- else
- {
- SendClientMessage(playerid, -1, "CONTRASEÑA INCORRECTA");
- Kick(playerid);
- }
- }
- case REGISTRO:
- {
- if(!response)
- {
- SendClientMessage(playerid, -1, "Kicked");
- Kick(playerid);
- }
- if(response)
- {
- if(!strlen(inputtext))
- {
- Kick(playerid);
- }
- new string2[128];
- format(string2, sizeof(string2), "%s", inputtext); PlayerInfo[playerid][pPassword] = string2;
- format(Query, sizeof(Query), "INSERT INTO `usuarios` (Nombre, Contraseña) VALUES ('%s', '%s')",pName, PlayerInfo[playerid][pPassword]);
- mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);
- format(string, sizeof(string), "Has registrado el personaje %s en nuestro servidor.\n\nAhora inicia sesión", pName);
- ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"Iniciar sesión",string,"Enviar","Salir");
- }
- }
- }
- return 1;
- }
- forward SaveAccount(playerid);
- public SaveAccount(playerid)
- {
- new query[200];GetPlayerPos(playerid, PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz]);
- new pName[24]; GetPlayerName(playerid, pName, 24); GetPlayerHealth(playerid, PlayerInfo[playerid][pVida]), GetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
- format(query, 200, "UPDATE `usuarios` SET `Vida`='%f', `Chaleco`='%f', `Admin`='%d', `Score`='%d', `Dinero`='%d',`Posx`='%f', `Posy`='%f', `Posz`='%f' WHERE `Nombre`='%s'", PlayerInfo[playerid][pVida], PlayerInfo[playerid][pChaleco],
- PlayerInfo[playerid][pAdmin], GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz], pName);
- mysql_function_query(Conecction, query, true, "OnQueryFinish", "ii", 0, playerid);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment