Advertisement
Chainksain

tutorial12.pwn

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