Advertisement
soto8

gmmysql

Sep 28th, 2018
617
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.30 KB | None | 0 0
  1. /*
  2.                                          Creador: soto8
  3. */
  4. //Includes
  5. #include <a_samp>
  6. #include <a_mysql>
  7. #include <streamer>
  8. #include <sscanf2>
  9. #include <YSI\y_ini>
  10. #include <YSI/y_iterate>
  11.  
  12. //Datos MySQL
  13. #define MySQL_SERVER "localhost"
  14. #define MySQL_USER "root"
  15. #define SQL_CONTRA ""
  16. #define MySQL_PASS "gm2"
  17. //Dialogos registro
  18. #define DREGISTRO   0
  19. #define DGENERO     1
  20. #define DEDAD       2
  21. #define DINGRESO    3
  22.  
  23. AntiDeAMX()
  24. {
  25.    new a[][] =
  26.    {
  27.       "Unarmed (Fist)",
  28.       "Brass K"
  29.    };
  30.    #pragma unused a
  31. }
  32. //news
  33. new MySQL;
  34. //Enum
  35. enum jInfo
  36. {
  37.     Contra[128],
  38.     Admin,
  39.     Genero,
  40.     Edad,
  41.     Ropa,
  42.     Float:X,
  43.     Float:Y,
  44.     Float:Z,
  45.     Float:Vida,
  46.     Float:Chaleco,
  47.     Faccion,
  48.     Rango,
  49.     Trabajo,
  50.     Dinero,
  51.     Int,
  52.     VW,
  53.     Nivel
  54. }
  55. new PlayersData[MAX_PLAYERS][jInfo];
  56. //Stocks y funciones
  57. stock SendClientMessageEx(playerid, color, const text[], {Float, _}:...)
  58. {
  59.     static
  60.         args,
  61.         str[144];
  62.     if (( args = numargs()) == 3)
  63.     {
  64.         SendClientMessage(playerid, color, text);
  65.     }
  66.     else
  67.     {
  68.         while (--args >= 3)
  69.         {
  70.             #emit LCTRL 5
  71.             #emit LOAD.alt args
  72.             #emit SHL.C.alt 2
  73.             #emit ADD.C 12
  74.             #emit ADD
  75.             #emit LOAD.I
  76.             #emit PUSH.pri
  77.         }
  78.         #emit PUSH.S text
  79.         #emit PUSH.C 144
  80.         #emit PUSH.C str
  81.         #emit PUSH.S 8
  82.         #emit SYSREQ.C format
  83.         #emit LCTRL 5
  84.         #emit LCTRL 4
  85.        
  86.         SendClientMessage(playerid, color, str);
  87.        
  88.         #emit RETN
  89.     }
  90.     return 1;
  91. }
  92. stock SendClientMessageToAllEx(color, const text[], {Float, _}:...)
  93. {
  94.     static
  95.         args,
  96.         str[144];
  97.  
  98.     if ((args = numargs()) == 2)
  99.     {
  100.         SendClientMessageToAll(color, text);
  101.     }
  102.     else
  103.     {
  104.         while (--args >= 2)
  105.         {
  106.             #emit LCTRL 5
  107.             #emit LOAD.alt args
  108.             #emit SHL.C.alt 2
  109.             #emit ADD.C 12
  110.             #emit ADD
  111.             #emit LOAD.I
  112.             #emit PUSH.pri
  113.         }
  114.         #emit PUSH.S text
  115.         #emit PUSH.C 144
  116.         #emit PUSH.C str
  117.         #emit LOAD.S.pri 8
  118.         #emit ADD.C 4
  119.         #emit PUSH.pri
  120.         #emit SYSREQ.C format
  121.         #emit LCTRL 5
  122.         #emit SCTRL 4
  123.  
  124.         SendClientMessageToAll(color, str);
  125.  
  126.         #emit RETN
  127.     }
  128.     return 1;
  129. }
  130. stock SendClientMessageX(color, const str[], {Float,_}:...)
  131. {
  132.     static
  133.         args,
  134.         start,
  135.         end,
  136.         string[144]
  137.     ;
  138.     #emit LOAD.S.pri 8
  139.     #emit STOR.pri args
  140.  
  141.     if (args > 8)
  142.     {
  143.         #emit ADDR.pri str
  144.         #emit STOR.pri start
  145.  
  146.         for (end = start + (args - 8); end > start; end -= 4)
  147.         {
  148.             #emit LREF.pri end
  149.             #emit PUSH.pri
  150.         }
  151.         #emit PUSH.S str
  152.         #emit PUSH.C 144
  153.         #emit PUSH.C string
  154.  
  155.         #emit LOAD.S.pri 8
  156.         #emit ADD.C 4
  157.         #emit PUSH.pri
  158.  
  159.         #emit SYSREQ.C format
  160.         #emit LCTRL 5
  161.         #emit SCTRL 4
  162.  
  163.         foreach (new i : Player)
  164.         {
  165.             if (PlayersData[i][Admin] >= 1) {
  166.                 SendClientMessage(i, color, string);
  167.             }
  168.         }
  169.         return 1;
  170.     }
  171.     foreach (new i : Player)
  172.     {
  173.         if (PlayersData[i][Admin] >= 1) {
  174.             SendClientMessage(i, color, str);
  175.         }
  176.     }
  177.     return 1;
  178. }
  179. stock InicioCamara(playerid)
  180. {
  181.     SetPlayerCameraPos(playerid, 1533.2587, -1763.7717, 73.6204);
  182.     SetPlayerCameraLookAt(playerid, 1532.9288, -1762.8286, 73.0504);
  183.     SetPlayerPos(playerid,1513.4531, -1782.2853, 68.0610);
  184.     TogglePlayerControllable(playerid,0);
  185.     return 1;
  186. }
  187. stock PlayerName(playerid)
  188. {
  189.     new nombre[MAX_PLAYER_NAME];
  190.     GetPlayerName(playerid, nombre, sizeof(nombre));
  191.     return nombre;
  192. }
  193. stock SendMessageFaction(fid, color, mensaje[]) //Enviar Mensaje a una facción
  194. {
  195.     for(new i = 0; i < MAX_PLAYERS; i++)
  196. {
  197.     if(PlayersData[i][Faccion] == fid)
  198. {
  199.     SendClientMessageEx(i,color,mensaje);
  200. }
  201. }
  202. return 1;
  203. }
  204.  
  205. strtok(const string[], &index)
  206. {
  207.     new length = strlen(string);
  208.     while ((index < length) && (string[index] <= ' '))
  209.     {
  210.         index++;
  211.     }
  212.  
  213.     new offset = index;
  214.     new result[20];
  215.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  216.     {
  217.         result[index - offset] = string[index];
  218.         index++;
  219.     }
  220.     result[index - offset] = EOS;
  221.     return result;
  222. }
  223. //Forward's
  224. forward UserVerificated(playerid); //Verificar usuario
  225. forward NewAccount(playerid); //Nueva cuenta al que un jugador ingresa por 1era vez
  226. forward EnterPlayer(playerid); //Ingreso por 1era vez.
  227. forward LoadAccount(playerid); //Cargar Cuenta
  228. forward SaveAccount(playerid); //Crear Cuenta
  229. forward RemoveMaps(playerid); //RemoverMapeos
  230. forward LoadMaps(); //CargarMapeos
  231. //
  232. main()
  233. {
  234.     return soto8 ();
  235. }
  236.  
  237. soto8()
  238. {
  239.     printf("Modo de juego creado por soto8");
  240.     return 1;
  241. }
  242.  
  243. public OnGameModeInit()
  244. {
  245.     AntiDeAMX();
  246.  
  247.     SetGameModeText("Roleplay");
  248.     MySQL = mysql_connect(MySQL_SERVER,MySQL_USER,MySQL_PASS,MySQL_PASS);
  249.     print("Estableciendo conexión...");
  250.     if(mysql_errno() != 0)
  251.     {
  252.         print("No se ha podido establecer la conexión a la base de datos.");
  253.     }
  254.     else
  255.     {
  256.         print("Conexión establecida correctamente.");
  257.     }
  258.    
  259.     LoadMaps();
  260.     return 1;
  261. }
  262.  
  263. public OnGameModeExit()
  264. {
  265.     return 1;
  266. }
  267.  
  268. public OnPlayerRequestClass(playerid, classid)
  269. {
  270.     return 1;
  271. }
  272.  
  273. public OnPlayerConnect(playerid)
  274. {
  275.    RemoveMaps(playerid);
  276.    new query[520],nombre[MAX_PLAYER_NAME];
  277.    GetPlayerName(playerid, nombre, sizeof(nombre));
  278.    mysql_format(MySQL, query, sizeof(query), "SELECT * FROM `cuentas` WHERE `Nombre`='%s'", nombre);
  279.    mysql_pquery(MySQL, query, "UserVerificated","d", playerid);
  280.    return 1;
  281. }
  282.  
  283. public OnPlayerDisconnect(playerid, reason)
  284. {
  285.     SaveAccount(playerid);
  286.     return 1;
  287. }
  288.  
  289. public OnPlayerCommandText(playerid, cmdtext[])
  290. {
  291.     new idx;
  292.     new cmd[256];
  293.  
  294.     cmd = strtok(cmdtext, idx);
  295.  
  296.     if(strcmp(cmd, "/ayuda", true) == 0)
  297.     {
  298.         return 1;
  299.     }
  300.  
  301.     return 0;
  302. }
  303.  
  304. public OnPlayerSpawn(playerid)
  305. {
  306.     if(GetPVarInt(playerid, "PuedeIngresar") == 0)
  307.     {
  308.     Kick(playerid);
  309.     }
  310.     return 1;
  311. }
  312.  
  313. public OnPlayerDeath(playerid, killerid, reason)
  314. {
  315.     return 1;
  316. }
  317.  
  318. public OnVehicleSpawn(vehicleid)
  319. {
  320.     return 1;
  321. }
  322.  
  323. public OnVehicleDeath(vehicleid, killerid)
  324. {
  325.     return 1;
  326. }
  327.  
  328. public OnPlayerText(playerid, text[])
  329. {
  330.     return 1;
  331. }
  332.  
  333. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  334. {
  335.     return 1;
  336. }
  337.  
  338. public OnPlayerExitVehicle(playerid, vehicleid)
  339. {
  340.     return 1;
  341. }
  342.  
  343. public OnPlayerStateChange(playerid, newstate, oldstate)
  344. {
  345.     return 1;
  346. }
  347.  
  348. public OnPlayerEnterCheckpoint(playerid)
  349. {
  350.     return 1;
  351. }
  352.  
  353. public OnPlayerLeaveCheckpoint(playerid)
  354. {
  355.     return 1;
  356. }
  357.  
  358. public OnPlayerEnterRaceCheckpoint(playerid)
  359. {
  360.     return 1;
  361. }
  362.  
  363. public OnPlayerLeaveRaceCheckpoint(playerid)
  364. {
  365.     return 1;
  366. }
  367.  
  368. public OnRconCommand(cmd[])
  369. {
  370.     return 1;
  371. }
  372.  
  373. public OnPlayerRequestSpawn(playerid)
  374. {
  375.     return 1;
  376. }
  377.  
  378. public OnObjectMoved(objectid)
  379. {
  380.     return 1;
  381. }
  382.  
  383. public OnPlayerObjectMoved(playerid, objectid)
  384. {
  385.     return 1;
  386. }
  387.  
  388. public OnPlayerPickUpPickup(playerid, pickupid)
  389. {
  390.     return 1;
  391. }
  392.  
  393. public OnVehicleMod(playerid, vehicleid, componentid)
  394. {
  395.     return 1;
  396. }
  397.  
  398. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  399. {
  400.     return 1;
  401. }
  402.  
  403. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  404. {
  405.     return 1;
  406. }
  407.  
  408. public OnPlayerSelectedMenuRow(playerid, row)
  409. {
  410.     return 1;
  411. }
  412.  
  413. public OnPlayerExitedMenu(playerid)
  414. {
  415.     return 1;
  416. }
  417.  
  418. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  419. {
  420.     return 1;
  421. }
  422.  
  423. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  424. {
  425.     return 1;
  426. }
  427.  
  428. public OnRconLoginAttempt(ip[], password[], success)
  429. {
  430.     return 1;
  431. }
  432.  
  433. public OnPlayerUpdate(playerid)
  434. {
  435.     return 1;
  436. }
  437.  
  438. public OnPlayerStreamIn(playerid, forplayerid)
  439. {
  440.     return 1;
  441. }
  442.  
  443. public OnPlayerStreamOut(playerid, forplayerid)
  444. {
  445.     return 1;
  446. }
  447.  
  448. public OnVehicleStreamIn(vehicleid, forplayerid)
  449. {
  450.     return 1;
  451. }
  452.  
  453. public OnVehicleStreamOut(vehicleid, forplayerid)
  454. {
  455.     return 1;
  456. }
  457.  
  458. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  459. {
  460.     switch(dialogid)
  461.     {
  462.     //
  463.     case DREGISTRO:
  464.     {
  465.         if(response)
  466.         {
  467.             new contra[128];
  468.             ShowPlayerDialog(playerid, DGENERO, DIALOG_STYLE_MSGBOX, "Genero", "{ffffff}¿Qué genero es usted?.", "Masculino", "Femenino");
  469.             format(contra,sizeof(contra),"%s",inputtext);
  470.             PlayersData[playerid][Contra] = contra;
  471.         }
  472.         else
  473.         {
  474.             Kick(playerid);
  475.         }
  476.     }
  477.     //
  478.     case DGENERO:
  479.     {
  480.         if(response)
  481.         {
  482.             PlayersData[playerid][Genero] = 0;
  483.             PlayersData[playerid][Ropa] = 46;
  484.             ShowPlayerDialog(playerid, DEDAD, DIALOG_STYLE_INPUT, "Edad", "{ffffff}Ingrese su edad\n\nMinimo 18 - Maximo 90.", "Continuar", "Cancelar");
  485.         }
  486.         else
  487.         {
  488.             PlayersData[playerid][Genero] = 1;
  489.             PlayersData[playerid][Ropa] = 12;
  490.             ShowPlayerDialog(playerid, DEDAD, DIALOG_STYLE_INPUT, "Edad", "{ffffff}Ingrese su edad\n\nMinimo 18 - Maximo 90.", "Continuar", "Cancelar");
  491.         }
  492.       }
  493.     //
  494.     case DEDAD:
  495.     {
  496.          if(response)
  497.          {
  498.              if(strval(inputtext) < 18 || strval(inputtext) > 100) return ShowPlayerDialog(playerid, DEDAD, DIALOG_STYLE_INPUT, "Edad", "{ffffff}Ingrese su edad\n\n{FF0000}Minimo 18 - Maximo 90.", "Continuar", "Cancelar");
  499.              PlayersData[playerid][Edad] = strval(inputtext);
  500.              SetSpawnInfo(playerid, 0, PlayersData[playerid][Ropa], 1484.1082, -1668.4976, 14.9159, 0.0000, 0,0,0,0,0,0);
  501.              SetPVarInt(playerid, "PuedeIngresar", 1);
  502.              SpawnPlayer(playerid);
  503.              NewAccount(playerid);
  504.          }
  505.          else
  506.          {
  507.              Kick(playerid);
  508.          }
  509.     }
  510.     //
  511.     case DINGRESO:
  512.     {
  513.         if(response)
  514.         {
  515.             new query[520];
  516.             mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `cuentas` WHERE `Nombre`='%s' AND `Contra`='%s'",PlayerName(playerid),inputtext);
  517.             mysql_pquery(MySQL, query, "EnterPlayer","d", playerid);
  518.         }
  519.         else
  520.         {
  521.             Kick(playerid);
  522.         }
  523.     }
  524.     //
  525.     }
  526.     return 1;
  527. }
  528.  
  529. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  530. {
  531.     return 1;
  532. }
  533. public UserVerificated(playerid)
  534. {
  535.     new Rows;
  536.     Rows = cache_get_row_count();
  537.     if(!Rows)
  538.     {
  539.         InicioCamara(playerid);
  540.         ShowPlayerDialog(playerid, DREGISTRO, DIALOG_STYLE_INPUT, "Registro", "{ffffff}Bienvenido\n\nIngrese una contraseña para registrarse en nuestra base de datos.", "Registrar", "Cancelar");
  541.     }
  542.     else
  543.     {
  544.         InicioCamara(playerid);
  545.         ShowPlayerDialog(playerid, DINGRESO, DIALOG_STYLE_INPUT, "Ingreso", "{ffffff}Bienvenido\n\nIngrese su contraseña para ingresar.", "Continuar", "Cancelar");
  546.     }
  547.     return 1;
  548. }
  549. public NewAccount(playerid)
  550. {
  551.     new query[520],aviso[125];
  552.     mysql_format(MySQL, query, sizeof(query), "INSERT INTO `cuentas`(`Nombre`, `Contra`, `Ropa`, `X`, `Y`, `Z`, `Genero`, `Admin`, `Vida`, `Dinero`) VALUES ('%s','%s','%i','1484.1082', '-1668.4976', '14.9159','%i','100','100000')",
  553.     PlayerName(playerid),
  554.     PlayersData[playerid][Contra],
  555.     PlayersData[playerid][Ropa],
  556.     PlayersData[playerid][Genero],
  557.     PlayersData[playerid][Admin]);
  558.     mysql_query(MySQL, query);
  559.     format(aviso,sizeof(aviso),"Cuenta creada: %s - Edad: %d - Genero: %d", PlayerName(playerid), PlayersData[playerid][Edad], PlayersData[playerid][Genero]);
  560.     print(aviso);
  561.     return 1;
  562. }
  563.  
  564. public EnterPlayer(playerid)
  565. {
  566.     if(cache_get_row_count() == 0)
  567. {
  568.     ShowPlayerDialog(playerid, DINGRESO, DIALOG_STYLE_INPUT, "Ingreso", "¡Error!\n\nLa contraseña no es correcta.", "Continuar", "Cancelar");
  569. }
  570.     else
  571. {
  572.     PlayersData[playerid]       [Ropa] = cache_get_row_int(0, 3);
  573.     PlayersData[playerid]       [X] = cache_get_row_float(0, 4);
  574.     PlayersData[playerid]       [Y] = cache_get_row_float(0, 5);
  575.     PlayersData[playerid]       [Z] = cache_get_row_float(0, 6);
  576.     PlayersData[playerid]       [Genero] = cache_get_row_int(0, 7);
  577.     PlayersData[playerid]       [Admin] = cache_get_row_int(0, 8);
  578.     PlayersData[playerid]       [Vida] = cache_get_row_float(0, 9);
  579.     PlayersData[playerid]       [Chaleco] = cache_get_row_float(0, 10);
  580.     PlayersData[playerid]       [Faccion] = cache_get_row_int(0, 11);
  581.     PlayersData[playerid]       [Rango] = cache_get_row_int(0, 12);
  582.     PlayersData[playerid]       [Trabajo] = cache_get_row_int(0, 13);
  583.     PlayersData[playerid]       [Dinero] = cache_get_row_int(0, 14);
  584.     PlayersData[playerid]       [Int] = cache_get_row_int(0, 15);
  585.     PlayersData[playerid]       [VW] = cache_get_row_int(0, 16);
  586.     PlayersData[playerid]       [Edad] = cache_get_row_int(0, 17);
  587.     SetPVarInt(playerid,        "PuedeIngresar", 1);
  588.     LoadAccount(playerid);
  589. }
  590.     return 1;
  591. }
  592. public LoadAccount(playerid)
  593. {
  594.     SetSpawnInfo(playerid, 0, PlayersData[playerid][Ropa], PlayersData[playerid][X],PlayersData[playerid][Y],PlayersData[playerid][Z], 0.0000, 0,0,0,0,0,0);
  595.     SpawnPlayer(playerid);
  596.     SetPlayerHealth(playerid,PlayersData[playerid][Vida]);
  597.     SetPlayerArmour(playerid,PlayersData[playerid][Chaleco]);
  598.     GivePlayerMoney(playerid,PlayersData[playerid][Dinero]);
  599.     SetPlayerVirtualWorld(playerid,PlayersData[playerid][VW]);
  600.     SetPlayerInterior(playerid,PlayersData[playerid][Int]);
  601.     SetPlayerSkin(playerid,PlayersData[playerid][Ropa]);
  602.     return 1;
  603. }
  604. public SaveAccount(playerid)
  605. {
  606.     new query[520],Float:jX,Float:jY,Float:jZ,Float:hp,Float:chale,pVW,pInt;
  607.     GetPlayerPos(playerid, jX, jY, jZ);
  608.     GetPlayerHealth(playerid,hp);
  609.     GetPlayerArmour(playerid,chale);
  610.     PlayersData[playerid][VW] = GetPlayerVirtualWorld(playerid);
  611.     PlayersData[playerid][Int] = GetPlayerInterior(playerid);
  612.     pVW = GetPlayerVirtualWorld(playerid);
  613.     pInt = GetPlayerInterior(playerid);
  614.     mysql_format(MySQL, query, sizeof(query), "UPDATE `cuentas` SET `Ropa`='%i',`X`='%f',`Y`='%f',`Z`='%f',`Genero`='%i', `Admin`='%i', `Vida`='%f',`Chaleco`='%f' WHERE `Nombre`='%s'",
  615.     PlayersData[playerid][Ropa],
  616.     jX,
  617.     jY,
  618.     jZ,
  619.     PlayersData[playerid][Genero],
  620.     hp,
  621.     chale,
  622.     PlayerName(playerid));
  623.     mysql_query(MySQL, query);
  624. //
  625.     mysql_format(MySQL, query, sizeof(query), "UPDATE `cuentas` SET `Edad`='%i', `Faccion`='%i', `Rango`='%i', `Trabajo`='%i', `Dinero`='%i' WHERE `Nombre`='%s'",
  626.     PlayersData[playerid][Edad],
  627.     PlayersData[playerid][Faccion],
  628.     PlayersData[playerid][Rango],
  629.     PlayersData[playerid][Trabajo],
  630.     PlayersData[playerid][Dinero],
  631.     PlayerName(playerid));
  632.     mysql_query(MySQL, query);
  633.  
  634.     mysql_format(MySQL, query, sizeof(query), "UPDATE `cuentas` SET `VW`='%i', `Interior`='%i' WHERE `Nombre`='%s'",
  635.     pVW,
  636.     pInt,
  637.     PlayerName(playerid));
  638.     mysql_query(MySQL, query);
  639.  
  640.     return 1;
  641. }
  642. public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
  643. {
  644.     switch(errorid)
  645.     {
  646.         case CR_SERVER_GONE_ERROR:
  647.         {
  648.             printf("Conexión perdida...");
  649.             mysql_reconnect(connectionHandle);
  650.         }
  651.         case ER_SYNTAX_ERROR:
  652.         {
  653.             printf("Error en el sintaxis de la consulta: %s",query);
  654.         }
  655.     }
  656.     return 1;
  657. }
  658.  
  659. public LoadMaps()
  660. {
  661.     return 1;
  662. }
  663.  
  664. public RemoveMaps(playerid)
  665. {
  666.     return 1;
  667. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement