Advertisement
Chainksain

tutorial13.pwn

Apr 27th, 2020
2,033
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 19.59 KB | None | 0 0
  1. #include <a_samp>
  2. #include <fixes>
  3. #include <timerfix>
  4. #include <a_mysql>
  5. #include <sscanf2>
  6. #include <zcmd>
  7. #include <DOF2>
  8.  
  9. #define function%0(%1) forward %0(%1); public %0(%1)
  10.  
  11. #define MAX_PASS_LEN 65
  12. #define SALT_LEN 13
  13.  
  14. #define MAX_WEAPONS 13
  15.  
  16. enum //Weapon Slots
  17. {
  18.     WEAPONSLOT_FIST,
  19.     WEAPONSLOT_WHITEGUN,
  20.     WEAPONSLOT_PISTOL,
  21.     WEAPONSLOT_SHOTGUN,
  22.     WEAPONSLOT_MACHINEGUN,
  23.     WEAPONSLOT_FUZIL,
  24.     WEAPONSLOT_RIFLE
  25. };
  26.  
  27. enum //Dialogs
  28. {
  29.     DIALOG_LOGIN,
  30.     DIALOG_REGISTRO
  31. };
  32.  
  33. new MySQL:DBConn, host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  34.  
  35. enum PLAYER_DATA
  36. {
  37.     accid,
  38.     nome[MAX_PLAYER_NAME],
  39.     senha[MAX_PASS_LEN],
  40.     admin,
  41.     Float:posX,
  42.     Float:posY,
  43.     Float:posZ,
  44.     Float:angulo,
  45.     Float:health,
  46.     Float:armor,
  47.     money,
  48.     interior,
  49.     vw,
  50.     skin,
  51.     score,
  52.     ORM:ormid,
  53.     bool:logado,
  54.     pSalt[SALT_LEN]
  55. };
  56. new PlayerData[MAX_PLAYERS][PLAYER_DATA];
  57.  
  58. enum WEAPON_DATA
  59. {
  60.     weaponid,
  61.     ammo
  62. };
  63. new WeaponData[MAX_PLAYERS][MAX_WEAPONS][WEAPON_DATA];
  64.  
  65. // PROCEDIMENTOS
  66.  
  67. function Float:GetPlayerHealthEx(playerid)
  68. {
  69.     new Float:playerhealth;
  70.     GetPlayerHealth(playerid, playerhealth);
  71.     return playerhealth;
  72. }
  73.  
  74. function Float:GetPlayerArmourEx(playerid)
  75. {
  76.     new Float:playerarmor;
  77.     GetPlayerArmour(playerid, playerarmor);
  78.     return playerarmor;
  79. }
  80.  
  81. stock SavePlayerData(playerid)
  82. {
  83.     PlayerData[playerid][armor] = GetPlayerArmourEx(playerid);
  84.     PlayerData[playerid][health] = GetPlayerHealthEx(playerid);
  85.     PlayerData[playerid][money] = GetPlayerMoney(playerid);
  86.     PlayerData[playerid][skin] = GetPlayerSkin(playerid);
  87.     PlayerData[playerid][interior] = GetPlayerInterior(playerid);
  88.     PlayerData[playerid][vw] = GetPlayerVirtualWorld(playerid);
  89.     PlayerData[playerid][score] = GetPlayerScore(playerid);
  90.     GetPlayerFacingAngle(playerid, PlayerData[playerid][angulo]);
  91.     GetPlayerPos(playerid,
  92.     PlayerData[playerid][posX],
  93.     PlayerData[playerid][posY],
  94.     PlayerData[playerid][posZ]);
  95.  
  96.     for(new i=0; i < MAX_WEAPONS; i++)
  97.         GetPlayerWeaponData(playerid, i, WeaponData[playerid][i][weaponid], WeaponData[playerid][i][ammo]);
  98.  
  99.     orm_update(PlayerData[playerid][ormid]);
  100. }
  101.  
  102. stock SetPlayerWeaponData(playerid)
  103. {
  104.     GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_SHOTGUN][weaponid], WeaponData[playerid][WEAPONSLOT_SHOTGUN][ammo]);
  105.     GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_MACHINEGUN][weaponid], WeaponData[playerid][WEAPONSLOT_MACHINEGUN][ammo]);
  106.     GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_FUZIL][weaponid], WeaponData[playerid][WEAPONSLOT_FUZIL][ammo]);
  107.     GivePlayerWeapon(playerid, WeaponData[playerid][WEAPONSLOT_RIFLE][weaponid], WeaponData[playerid][WEAPONSLOT_RIFLE][ammo]);
  108.     SetPlayerArmedWeapon(playerid,0);
  109. }
  110.  
  111. stock SetPlayerData(playerid)
  112. {
  113.     SetPlayerScore(playerid, PlayerData[playerid][score]);
  114.     SetPlayerHealth(playerid, PlayerData[playerid][health]);
  115.     SetPlayerArmour(playerid, PlayerData[playerid][armor]);
  116.     GivePlayerMoney(playerid, PlayerData[playerid][money]);
  117.     SetPlayerInterior(playerid, PlayerData[playerid][interior]);
  118.     SetPlayerVirtualWorld(playerid, PlayerData[playerid][vw]);
  119. }
  120.  
  121. stock LoadPlayerWeaponData(playerid)
  122. {
  123.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_FIST][weaponid], "fist");
  124.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_WHITEGUN][weaponid], "white_gun");
  125.  
  126.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_PISTOL][weaponid], "pistol");
  127.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_PISTOL][ammo], "pistol_ammo");
  128.  
  129.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_SHOTGUN][weaponid], "shotgun");
  130.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_SHOTGUN][ammo], "shotgun_ammo");
  131.  
  132.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_MACHINEGUN][weaponid], "machinegun");
  133.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_MACHINEGUN][ammo], "machine_ammo");
  134.  
  135.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_FUZIL][weaponid], "fuzil");
  136.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_FUZIL][ammo], "fuzil_ammo");
  137.  
  138.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_RIFLE][weaponid], "rifle");
  139.     orm_addvar_int(PlayerData[playerid][ormid], WeaponData[playerid][WEAPONSLOT_RIFLE][ammo], "rifle_ammo");
  140. }
  141.  
  142. stock LoadPlayerData(playerid)
  143. {
  144.     PlayerData[playerid][logado] = false;
  145.     format(PlayerData[playerid][nome], MAX_PLAYER_NAME, "%s", GetPlayerNameEx(playerid));
  146.  
  147.     PlayerData[playerid][ormid] = orm_create("Player", DBConn);
  148.  
  149.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][accid], "id");
  150.     orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][nome], MAX_PLAYER_NAME, "nome");
  151.     orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][senha], MAX_PASS_LEN, "senha");
  152.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][admin], "admin");
  153.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posX], "posX");
  154.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posY], "posY");
  155.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posZ], "posZ");
  156.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][angulo], "angulo");
  157.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][health], "health");
  158.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][armor], "armor");
  159.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][money], "dinheiro");
  160.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][score], "score");
  161.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][skin], "skin");
  162.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][interior], "interior");
  163.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][vw], "vw");
  164.     orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][pSalt], SALT_LEN, "salt");
  165.    
  166.     //LoadPlayerWeaponData(playerid);
  167.     orm_setkey(PlayerData[playerid][ormid], "nome");
  168.     orm_select(PlayerData[playerid][ormid], "OnPlayerLogin", "d", playerid);
  169. }
  170.  
  171. stock LoadDBSettings(const filename[])
  172. {
  173.     //new host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  174.     if(DOF2_FileExists(filename))
  175.     {
  176.         format(host, sizeof(host), "%s", DOF2_GetString(filename,"address"));
  177.         format(username, sizeof(username), "%s", DOF2_GetString(filename,"username"));
  178.         format(database, sizeof(database), "%s", DOF2_GetString(filename,"database"));
  179.         format(pass, sizeof(pass), "%s", DOF2_GetString(filename,"password"));
  180.     }
  181.     else
  182.     {
  183.         DOF2_CreateFile(filename);
  184.         DOF2_SetString(filename,"address","127.0.0.1");
  185.         DOF2_SetString(filename,"username","root");
  186.         DOF2_SetString(filename,"database", " ");
  187.         DOF2_SetString(filename,"password", " ");
  188.         DOF2_SaveFile();
  189.     }
  190. }
  191.  
  192. stock Salt()
  193. {
  194.     new salt[SALT_LEN];
  195.     for(new i; i < SALT_LEN-1; i++)
  196.         salt[i] = random(79) + 47;
  197.     salt[SALT_LEN-1] = 0;
  198.     return salt;
  199. }
  200.  
  201. stock GetPlayerNameEx(playerid)
  202. {
  203.     new PlayerName[MAX_PLAYER_NAME];
  204.     GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  205.     return PlayerName;
  206. }
  207.  
  208. // -----------------------------------------------------------------
  209.  
  210. main()
  211. {
  212.     print("\n----------------------------------");
  213.     print(" Blank Gamemode by your name here");
  214.     print("----------------------------------\n");
  215. }
  216.  
  217. // -----------------------------------------------------------------
  218.  
  219. public OnGameModeInit()
  220. {
  221.     SetGameModeText("Blank Script");
  222.     LoadMap("maps/favela_objects.txt");
  223.     DataBaseInit();
  224.     return 1;
  225. }
  226.  
  227. public OnGameModeExit()
  228. {
  229.     DOF2_Exit();
  230.     mysql_close(DBConn);
  231.     return 1;
  232. }
  233.  
  234. public OnPlayerRequestClass(playerid, classid)
  235. {
  236.     return 1;
  237. }
  238.  
  239. public OnPlayerConnect(playerid)
  240. {
  241.     RemoveBuildingFromFile(playerid, "maps/favela_buildings.txt");
  242.     LoadPlayerData(playerid);
  243.     return 1;
  244. }
  245.  
  246. public OnPlayerDisconnect(playerid, reason)
  247. {
  248.     if(PlayerData[playerid][logado] == true)
  249.     {
  250.         SavePlayerData(playerid);
  251.  
  252.         new rsnstr[3][] =
  253.         {
  254.             "Timeout/Crash",
  255.             "Saiu",
  256.             "Kickado/Banido"
  257.         };
  258.         new string[64];
  259.         format(string, sizeof(string), "%s foi desconectado (%s)", GetPlayerNameEx(playerid), rsnstr[reason]);
  260.         SendClientMessageToAll(-1, string);
  261.     }
  262.  
  263.     orm_destroy(PlayerData[playerid][ormid]);
  264.     for(new PLAYER_DATA:i; i < PLAYER_DATA; i++)
  265.         PlayerData[playerid][i] = 0;
  266.  
  267.     return 1;
  268. }
  269.  
  270. public OnPlayerSpawn(playerid)
  271. {
  272.     if(PlayerData[playerid][logado] == false)
  273.     {
  274.         SetPlayerData(playerid);
  275.         SetPlayerWeaponData(playerid);
  276.         PlayerData[playerid][logado] = true;
  277.     }
  278.     return 1;
  279. }
  280.  
  281. public OnPlayerDeath(playerid, killerid, reason)
  282. {
  283.     return 1;
  284. }
  285.  
  286. public OnVehicleSpawn(vehicleid)
  287. {
  288.     return 1;
  289. }
  290.  
  291. public OnVehicleDeath(vehicleid, killerid)
  292. {
  293.     return 1;
  294. }
  295.  
  296. public OnPlayerText(playerid, text[])
  297. {
  298.     return 1;
  299. }
  300.  
  301. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  302. {
  303.     return 1;
  304. }
  305.  
  306. public OnPlayerExitVehicle(playerid, vehicleid)
  307. {
  308.     return 1;
  309. }
  310.  
  311. public OnPlayerStateChange(playerid, newstate, oldstate)
  312. {
  313.     return 1;
  314. }
  315.  
  316. public OnPlayerEnterCheckpoint(playerid)
  317. {
  318.     return 1;
  319. }
  320.  
  321. public OnPlayerLeaveCheckpoint(playerid)
  322. {
  323.     return 1;
  324. }
  325.  
  326. public OnPlayerEnterRaceCheckpoint(playerid)
  327. {
  328.     return 1;
  329. }
  330.  
  331. public OnPlayerLeaveRaceCheckpoint(playerid)
  332. {
  333.     return 1;
  334. }
  335.  
  336. public OnRconCommand(cmd[])
  337. {
  338.     return 1;
  339. }
  340.  
  341. public OnPlayerRequestSpawn(playerid)
  342. {
  343.     return 1;
  344. }
  345.  
  346. public OnObjectMoved(objectid)
  347. {
  348.     return 1;
  349. }
  350.  
  351. public OnPlayerObjectMoved(playerid, objectid)
  352. {
  353.     return 1;
  354. }
  355.  
  356. public OnPlayerPickUpPickup(playerid, pickupid)
  357. {
  358.     return 1;
  359. }
  360.  
  361. public OnVehicleMod(playerid, vehicleid, componentid)
  362. {
  363.     return 1;
  364. }
  365.  
  366. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  367. {
  368.     return 1;
  369. }
  370.  
  371. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  372. {
  373.     return 1;
  374. }
  375.  
  376. public OnPlayerSelectedMenuRow(playerid, row)
  377. {
  378.     return 1;
  379. }
  380.  
  381. public OnPlayerExitedMenu(playerid)
  382. {
  383.     return 1;
  384. }
  385.  
  386. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  387. {
  388.     return 1;
  389. }
  390.  
  391. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  392. {
  393.     return 1;
  394. }
  395.  
  396. public OnRconLoginAttempt(ip[], password[], success)
  397. {
  398.     return 1;
  399. }
  400.  
  401. public OnPlayerUpdate(playerid)
  402. {
  403.     return 1;
  404. }
  405.  
  406. public OnPlayerStreamIn(playerid, forplayerid)
  407. {
  408.     return 1;
  409. }
  410.  
  411. public OnPlayerStreamOut(playerid, forplayerid)
  412. {
  413.     return 1;
  414. }
  415.  
  416. public OnVehicleStreamIn(vehicleid, forplayerid)
  417. {
  418.     return 1;
  419. }
  420.  
  421. public OnVehicleStreamOut(vehicleid, forplayerid)
  422. {
  423.     return 1;
  424. }
  425.  
  426. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  427. {
  428.     switch(dialogid)
  429.     {
  430.         case DIALOG_LOGIN:
  431.         {
  432.             if(!response)
  433.                 Kick(playerid);
  434.             else
  435.             {
  436.                 new hash[MAX_PASS_LEN];
  437.                 SHA256_PassHash(inputtext, PlayerData[playerid][pSalt], hash, MAX_PASS_LEN);
  438.                 if(strlen(inputtext) < 1 || strcmp(PlayerData[playerid][senha], hash))
  439.                 {
  440.                     SendClientMessage(playerid, -1, "ERRO: Senha incorreta!");
  441.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha para logar:", "Logar", "Sair");
  442.                 }
  443.                 else
  444.                 {
  445.                     SendClientMessage(playerid, -1, "Logado com sucesso!");
  446.                     SetSpawnInfo(playerid, NO_TEAM, PlayerData[playerid][skin],
  447.                     PlayerData[playerid][posX], PlayerData[playerid][posY],PlayerData[playerid][posZ],
  448.                     PlayerData[playerid][angulo],
  449.                     WeaponData[playerid][WEAPONSLOT_FIST][weaponid], WeaponData[playerid][WEAPONSLOT_FIST][ammo],
  450.                     WeaponData[playerid][WEAPONSLOT_WHITEGUN][weaponid], WeaponData[playerid][WEAPONSLOT_WHITEGUN][ammo],
  451.                     WeaponData[playerid][WEAPONSLOT_PISTOL][weaponid], WeaponData[playerid][WEAPONSLOT_PISTOL][ammo]);
  452.                     SpawnPlayer(playerid);
  453.                 }
  454.             }
  455.         }
  456.         case DIALOG_REGISTRO:
  457.         {
  458.             if(!response)
  459.                 Kick(playerid);
  460.             else
  461.             {
  462.                 if(strlen(inputtext) < 1 || strlen(inputtext) > 16)
  463.                 {
  464.                     SendClientMessage(playerid, -1, "ERRO: Sua senha deve conter entre 1 e 16 caracteres!");
  465.                     ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "Entre com uma senha para se registrar:", "Registrar", "Sair");
  466.                 }
  467.                 else
  468.                 {
  469.                     PlayerData[playerid][pSalt] = Salt();
  470.                     SendClientMessage(playerid, -1, "Registrado com sucesso!");
  471.                     SHA256_PassHash(inputtext, PlayerData[playerid][pSalt], PlayerData[playerid][senha], MAX_PASS_LEN);
  472.                     orm_insert(PlayerData[playerid][ormid]);
  473.                     PlayerData[playerid][logado] = true;
  474.                     SetSpawnInfo(playerid, NO_TEAM, 0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  475.                     SpawnPlayer(playerid);
  476.                 }
  477.             }
  478.         }
  479.     }
  480.  
  481.     return 1;
  482. }
  483.  
  484. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  485. {
  486.     return 1;
  487. }
  488.  
  489. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  490. {
  491.     return 1;
  492. }
  493.  
  494. function OnPlayerLogin(playerid)
  495. {
  496.     orm_setkey(PlayerData[playerid][ormid], "id");
  497.  
  498.     if(orm_errno(PlayerData[playerid][ormid]) == ERROR_OK) // jogador ja existe na database
  499.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha para logar:", "Logar", "Sair");
  500.     else // jogador não encontrado na database
  501.         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "Entre com uma senha para se registrar:", "Registrar", "Sair");
  502.     return 1;
  503. }
  504.  
  505. function DataBaseInit()
  506. {
  507.     //new MYSQL:DBConn, host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  508.     LoadDBSettings("dbconfig.ini");
  509.     DBConn = mysql_connect(host, username, pass, database);
  510.     if(mysql_errno() == 0)
  511.     {
  512.         printf("[MySQL] Database '%s' conectada com sucesso!", database);
  513.         print("[MySQL] Verificando tabelas...");
  514.  
  515.         mysql_query(DBConn, "CREATE TABLE IF NOT EXISTS Player (\
  516.         id int NOT NULL AUTO_INCREMENT,\
  517.         nome varchar(25) NOT NULL,\
  518.         senha varchar(255) NOT NULL,\
  519.         admin int DEFAULT 0,\
  520.         PRIMARY KEY(id));", false);
  521.  
  522.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS health float DEFAULT 100;", false);
  523.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS armor float DEFAULT 100;", false);
  524.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS dinheiro int DEFAULT 100;", false);
  525.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posX double DEFAULT 0;", false);
  526.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posY double DEFAULT 0;", false);
  527.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posZ double DEFAULT 0;", false);
  528.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS angulo double DEFAULT 0;", false);
  529.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS interior int DEFAULT 0;", false);
  530.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS vw int DEFAULT 0;", false);
  531.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS score int DEFAULT 0;", false);
  532.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS skin int DEFAULT 0;", false);
  533.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS salt varchar(65) DEFAULT 0;", false);
  534.  
  535.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS fist int DEFAULT 0;", false);
  536.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS white_gun int DEFAULT 0;", false);
  537.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS pistol int DEFAULT 0;", false);
  538.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS pistol_ammo int DEFAULT 0;", false);
  539.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS shotgun int DEFAULT 0;", false);
  540.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS shotgun_ammo int DEFAULT 0;", false);
  541.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS machinegun int DEFAULT 0;", false);
  542.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS machinegun_ammo int DEFAULT 0;", false);
  543.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS fuzil int DEFAULT 0;", false);
  544.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS fuzil_ammo int DEFAULT 0;", false);
  545.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS rifle int DEFAULT 0;", false);
  546.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS rifle_ammo int DEFAULT 0;", false);
  547.  
  548.         print("[MySQL] Tabela 'Players' verificada com sucesso!");
  549.     }
  550.     else
  551.     {
  552.         printf("[MySQL] ERRO: Não foi possível se conectar a database '%s'!", database);
  553.         SendRconCommand("exit");
  554.     }
  555.  
  556.     return 1;
  557. }
  558.  
  559. function RemoveBuildingFromFile(playerid, const file[])
  560. {
  561.     new File:map = fopen(file, io_read);
  562.     if(map)
  563.     {
  564.         new string[256];
  565.         while(fread(map, string))
  566.         {
  567.             new modelid, Float:pos[3], Float:rad;
  568.             if(!sscanf(string, "dffff", modelid, pos[0], pos[1], pos[2], rad))
  569.                 RemoveBuildingForPlayer(playerid, modelid, pos[0], pos[1], pos[2], rad);
  570.             else
  571.                 return printf("Carregamento do mapa '%s' falhou para o jogador %s(%d).", file, GetPlayerNameEx(playerid), playerid);
  572.         }
  573.     }
  574.     return printf("Jogador %s(%d) carregou o mapa '%s' com êxito.", GetPlayerNameEx(playerid), playerid, file);
  575. }
  576.  
  577. function LoadMap(const file[])
  578. {
  579.     printf("Carregando Mapa '%s'...", file);
  580.     new File:map = fopen(file, io_read);
  581.     if(map)
  582.     {
  583.         new string[256];
  584.         while(fread(map, string))
  585.         {
  586.             new modelid, Float:pos[3], Float:rot[3];
  587.             if(sscanf(string, "dffffff", modelid, pos[0], pos[1], pos[2], rot[0], rot[1], rot[2]))
  588.                 return printf("Erro ao carregar o mapa '%s'!",file);
  589.             else
  590.                 CreateObject(modelid, pos[0], pos[1], pos[2], rot[0], rot[1], rot[2]);
  591.                
  592.         }
  593.         return printf("Mapa '%s' carregado com sucesso!",file);
  594.     }
  595.     else return printf("Erro ao carregar o mapa '%s'!",file);
  596. }
  597.  
  598. // COMANDOS
  599.  
  600. CMD:pos(playerid, const params[])
  601. {
  602.     new Float:pos[3], giveplayerid;
  603.     if(sscanf(params, "ufff", giveplayerid, pos[0], pos[1], pos[2]))
  604.         return SendClientMessage(playerid, -1, "USO: /pos [id] [x] [y] [z]");
  605.  
  606.     if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
  607.         return SendClientMessage(playerid, -1, "ERRO: ID Inválido!");
  608.  
  609.     SetPlayerPos(giveplayerid, pos[0], pos[1], pos[2]);
  610.     return 1;
  611. }
  612.  
  613. CMD:info(playerid, const params[])
  614. {
  615.     new giveplayerid, string[64];
  616.    
  617.     if(sscanf(params, "u", giveplayerid))
  618.         return SendClientMessage(playerid, -1, "USO: /info [id]");
  619.    
  620.     if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
  621.         return SendClientMessage(playerid, -1, "ERRO: ID Inválido!");
  622.  
  623.     format(string, sizeof(string), "Jogador: %s", GetPlayerNameEx(giveplayerid));
  624.     SendClientMessage(playerid, -1, string);
  625.  
  626.     format(string, sizeof(string), "ID: %d", giveplayerid);
  627.     SendClientMessage(playerid, -1, string);
  628.  
  629.     format(string, sizeof(string), "Score: %d", GetPlayerScore(giveplayerid));
  630.     SendClientMessage(playerid, -1, string);
  631.  
  632.     format(string, sizeof(string), "Dinheiro: %d", GetPlayerMoney(giveplayerid));
  633.     SendClientMessage(playerid, -1, string);
  634.        
  635.     format(string, sizeof(string), "Life: %f", GetPlayerHealthEx(giveplayerid));
  636.     SendClientMessage(playerid, -1, string);
  637.  
  638.     format(string, sizeof(string), "Armor: %f", GetPlayerArmourEx(giveplayerid));
  639.     SendClientMessage(playerid, -1, string);
  640.  
  641.     new Float:pos[3];
  642.     GetPlayerPos(giveplayerid, pos[0], pos[1], pos[2]);
  643.     format(string, sizeof(string), "PosX: %f PosY: %f PosZ: %f", pos[0], pos[1], pos[2]);
  644.     SendClientMessage(playerid, -1, string);
  645.  
  646.     format(string, sizeof(string),"Int: %d", GetPlayerInterior(giveplayerid));
  647.     SendClientMessage(playerid, -1, string);
  648.  
  649.     format(string, sizeof(string),"Virtual World: %d", GetPlayerVirtualWorld(giveplayerid));
  650.     SendClientMessage(playerid, -1, string);
  651.  
  652.     return 1;
  653. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement