Guest User

Untitled

a guest
Nov 9th, 2014
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.68 KB | None | 0 0
  1.  
  2. #include <a_samp>
  3. #include <a_mysql>
  4. #include <zcmd>
  5.  
  6. #define MySQL_Servidor "localhost"
  7. #define MySQL_Usuario "root"
  8. #define MySQL_BD "samp"
  9. #define MySQL_Clave "" //no le ponemos clave ya que no tendría sentido.
  10.  
  11. #define LOGIN 1
  12. #define REGISTRO 2
  13.  
  14. new Conecction;
  15.  
  16. enum pInfo
  17. {
  18.     pPassword[128],
  19.     pAdmin,
  20.     pScore,
  21.     pMoney,
  22.     Float:pVida,
  23.     Float:pChaleco,
  24.     Float:pPosx,
  25.     Float:pPosy,
  26.     Float:pPosz,
  27.     Float:pPosa
  28. };
  29. new PlayerInfo[MAX_PLAYERS][pInfo];
  30. main()
  31. {}
  32. public OnGameModeInit()
  33. {
  34.     SetGameModeText("X-RP *(R1)* Alpha");
  35.     printf("Iniciando conexión MySQL: (Servidor: '%s', Usuario: '%s', Clave: '%s', Base de Datos: '%s')", MySQL_Servidor, MySQL_Usuario, MySQL_Clave, MySQL_BD);
  36.     Conecction = mysql_connect(MySQL_Servidor, MySQL_Usuario, MySQL_BD,MySQL_Clave);
  37.    /* if(mysql_ping() == 1) //Comprobamos si se conectó
  38.     {
  39.         printf("Conexión a la base de datos realizada correctamente.");
  40.     }
  41.     else //Caso contrario:
  42.     {
  43.         print("Conexión a la base de datos no realizada.");
  44.         mysql_close(); //Cerramos la conexión
  45.         SendRconCommand("exit"); //Cerramos la consola para evitar bug's
  46.     }*/
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerConnect(playerid)
  51. {
  52.    CheckPlayer(playerid);
  53.    return 1;
  54. }
  55.  
  56. public OnPlayerDisconnect(playerid, reason)
  57. {
  58.     SaveAccount(playerid);
  59.     return 1;
  60. }
  61.  
  62. public OnQueryError(errorid, error[], callback[], query[], connectionHandle )
  63. {
  64.   printf("[ERROR] ID: %d - Error: %s - Callback - %s - Query: %s", errorid, error, callback, query); //Imprimimos el mensaje en la consola
  65.   return 1;
  66. }
  67.  
  68. forward CheckPlayer(playerid);
  69. public CheckPlayer(playerid)
  70. {
  71.     new pName[24], Query[256];
  72.     GetPlayerName(playerid, pName, 24);
  73.     format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE Nombre='%s'", pName);
  74.     mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii",2, playerid);
  75.     return 1;
  76. }
  77.  
  78. forward OnQueryFinish(resultid, extraid, ConnectionHandle);
  79. public OnQueryFinish(resultid, extraid, ConnectionHandle)
  80. {
  81.     new Rows, Field, string[256];
  82.     if(resultid != 0)
  83.     {
  84.         cache_get_data(Rows, Field);
  85.     }
  86.     switch(resultid)
  87.     {
  88.         case 1:
  89.         {
  90.             if(Rows == 1)
  91.             {
  92.                 new content[20];
  93.                 cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
  94.                 cache_get_field_content(0, "Score", content); PlayerInfo[extraid][pScore] = strval(content);
  95.                 cache_get_field_content(0, "Dinero", content); PlayerInfo[extraid][pMoney] = strval(content);
  96.                 cache_get_field_content(0, "Vida", content); PlayerInfo[extraid][pVida] = floatstr(content);
  97.                 cache_get_field_content(0, "Chaleco", content); PlayerInfo[extraid][pChaleco] = floatstr(content);
  98.                 cache_get_field_content(0, "posX", content); PlayerInfo[extraid][pPosx] = floatstr(content);
  99.                 cache_get_field_content(0, "posY", content); PlayerInfo[extraid][pPosy] = floatstr(content);
  100.                 cache_get_field_content(0, "posZ", content); PlayerInfo[extraid][pPosz] = floatstr(content);
  101.                 SetSpawnInfo(extraid,0, GetPlayerSkin(extraid), PlayerInfo[extraid][pPosx],PlayerInfo[extraid][pPosy],PlayerInfo[extraid][pPosz],0,0,0,0,0,0,0);
  102.                 SetPlayerScore(extraid,  PlayerInfo[extraid][pScore]);
  103.                 GivePlayerMoney(extraid, PlayerInfo[extraid][pMoney]);
  104.                 SetPlayerArmour(extraid, PlayerInfo[extraid][pChaleco]);
  105.                 SetPlayerHealth(extraid, PlayerInfo[extraid][pVida]);
  106.                
  107.             }
  108.             else if(!Rows)
  109.             {
  110.                //
  111.             }
  112.         }
  113.         case 2:
  114.         {
  115.             if(Rows == 1)
  116.             {
  117.                 new pName[24]; GetPlayerName(extraid, pName, 24);
  118.                 cache_get_field_content(0, "Password", PlayerInfo[extraid][pPassword]);
  119.                 format(string, sizeof(string), "El personaje %s está registrado en la base de datos. Pon los datos para iniciar sesión:", pName);
  120.                 ShowPlayerDialog(extraid, LOGIN, DIALOG_STYLE_PASSWORD,"Login",string,"Enviar","Salir");
  121.             }
  122.             else if(!Rows)
  123.             {
  124.                 new pName[24]; GetPlayerName(extraid, pName, 24);
  125.                 format(string, sizeof(string), "El jugador %s no está registrado en el servidor, pon aquí la contraseña para registrarlo:", pName);
  126.                 ShowPlayerDialog(extraid, REGISTRO, DIALOG_STYLE_PASSWORD,"Registro:",string,"Enviar","Salir");
  127.             }
  128.         }
  129.     }
  130.     return 1;
  131. }
  132. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  133. {
  134.     new string[256];
  135.     new pName[24], Query[256]; GetPlayerName(playerid, pName, 24);
  136.     switch(dialogid)
  137.     {
  138.         case LOGIN:
  139.         {
  140.             if(!response)
  141.             {
  142.                 Kick(playerid);
  143.             }
  144.             if(strcmp(PlayerInfo[playerid][pPassword], inputtext, true, 128) == 0)
  145.             {
  146.                 format(Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE `Nombre` = '%s'", pName);
  147.                 mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 1, playerid);
  148.                 SetSpawnInfo(playerid,0,0,PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz],0,0,0,0,0,0,0);
  149.                 SetPlayerHealth(playerid, PlayerInfo[playerid][pVida]);
  150.                 SetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
  151.                 SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
  152.                 GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
  153.                 SpawnPlayer(playerid);
  154.             }
  155.             else
  156.             {
  157.                 SendClientMessage(playerid, -1, "CONTRASEÑA INCORRECTA");
  158.                 Kick(playerid);
  159.             }
  160.         }
  161.         case REGISTRO:
  162.         {
  163.             if(!response)
  164.             {
  165.                 SendClientMessage(playerid, -1, "Kicked");
  166.                 Kick(playerid);
  167.             }
  168.             if(response)
  169.             {
  170.                 if(!strlen(inputtext))
  171.                 {
  172.                     Kick(playerid);
  173.                 }
  174.                 new string2[128];
  175.                 format(string2, sizeof(string2), "%s", inputtext); PlayerInfo[playerid][pPassword] = string2;
  176.                 format(Query, sizeof(Query), "INSERT INTO `usuarios` (Nombre, Contraseña) VALUES ('%s', '%s')",pName, PlayerInfo[playerid][pPassword]);
  177.                 mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);
  178.                 format(string, sizeof(string), "Has registrado el personaje %s en nuestro servidor.\n\nAhora inicia sesión", pName);
  179.                 ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"Iniciar sesión",string,"Enviar","Salir");
  180.             }
  181.         }
  182.     }
  183.     return 1;
  184. }
  185.  
  186. forward SaveAccount(playerid);
  187. public SaveAccount(playerid)
  188. {
  189.     new query[200];GetPlayerPos(playerid, PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz]);
  190.     new pName[24]; GetPlayerName(playerid, pName, 24); GetPlayerHealth(playerid, PlayerInfo[playerid][pVida]), GetPlayerArmour(playerid, PlayerInfo[playerid][pChaleco]);
  191.     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],
  192.     PlayerInfo[playerid][pAdmin], GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerInfo[playerid][pPosx], PlayerInfo[playerid][pPosy], PlayerInfo[playerid][pPosz], pName);
  193.     mysql_function_query(Conecction, query, true, "OnQueryFinish", "ii", 0, playerid);
  194.     return 1;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment