Advertisement
Chainksain

tutorial9.pwn

Apr 20th, 2020
1,767
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 12.23 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 16
  10.  
  11. enum //Dialogs
  12. {
  13.     DIALOG_LOGIN,
  14.     DIALOG_REGISTRO
  15. };
  16.  
  17. new MySQL:DBConn, host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  18.  
  19. enum PLAYER_DATA
  20. {
  21.     accid,
  22.     nome[MAX_PLAYER_NAME],
  23.     senha[MAX_PASS_LEN],
  24.     admin,
  25.     Float:posX,
  26.     Float:posY,
  27.     Float:posZ,
  28.     Float:angulo,
  29.     Float:health,
  30.     Float:armor,
  31.     money,
  32.     interior,
  33.     vw,
  34.     skin,
  35.     score,
  36.     ORM:ormid
  37. };
  38. new PlayerData[MAX_PLAYERS][PLAYER_DATA];
  39.  
  40. main()
  41. {
  42.     print("\n----------------------------------");
  43.     print(" Blank Gamemode by your name here");
  44.     print("----------------------------------\n");
  45. }
  46.  
  47. public OnGameModeInit()
  48. {
  49.     SetGameModeText("Blank Script");
  50.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  51.     LoadMap("maps/favela_objects.txt");
  52.     DataBaseInit();
  53.     return 1;
  54. }
  55.  
  56. public OnGameModeExit()
  57. {
  58.     DOF2_Exit();
  59.     mysql_close(DBConn);
  60.     return 1;
  61. }
  62.  
  63. public OnPlayerRequestClass(playerid, classid)
  64. {
  65.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  66.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  67.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  68.     return 1;
  69. }
  70.  
  71. public OnPlayerConnect(playerid)
  72. {
  73.     RemoveBuildingFromFile(playerid, "maps/favela_buildings.txt");
  74.     LoadPlayerData(playerid);
  75.     return 1;
  76. }
  77.  
  78. public OnPlayerDisconnect(playerid, reason)
  79. {
  80.     new rsnstr[3][] =
  81.     {
  82.         "Timeout/Crash",
  83.         "Saiu",
  84.         "Kickado/Banido"
  85.     };
  86.     new string[64];
  87.     format(string, sizeof(string), "%s foi desconectado (%s)", GetPlayerNameEx(playerid), rsnstr[reason]);
  88.     SendClientMessageToAll(-1, string);
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerSpawn(playerid)
  93. {
  94.     return 1;
  95. }
  96.  
  97. public OnPlayerDeath(playerid, killerid, reason)
  98. {
  99.     return 1;
  100. }
  101.  
  102. public OnVehicleSpawn(vehicleid)
  103. {
  104.     return 1;
  105. }
  106.  
  107. public OnVehicleDeath(vehicleid, killerid)
  108. {
  109.     return 1;
  110. }
  111.  
  112. public OnPlayerText(playerid, text[])
  113. {
  114.     return 1;
  115. }
  116.  
  117. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  118. {
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerExitVehicle(playerid, vehicleid)
  123. {
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerStateChange(playerid, newstate, oldstate)
  128. {
  129.     return 1;
  130. }
  131.  
  132. public OnPlayerEnterCheckpoint(playerid)
  133. {
  134.     return 1;
  135. }
  136.  
  137. public OnPlayerLeaveCheckpoint(playerid)
  138. {
  139.     return 1;
  140. }
  141.  
  142. public OnPlayerEnterRaceCheckpoint(playerid)
  143. {
  144.     return 1;
  145. }
  146.  
  147. public OnPlayerLeaveRaceCheckpoint(playerid)
  148. {
  149.     return 1;
  150. }
  151.  
  152. public OnRconCommand(cmd[])
  153. {
  154.     return 1;
  155. }
  156.  
  157. public OnPlayerRequestSpawn(playerid)
  158. {
  159.     return 1;
  160. }
  161.  
  162. public OnObjectMoved(objectid)
  163. {
  164.     return 1;
  165. }
  166.  
  167. public OnPlayerObjectMoved(playerid, objectid)
  168. {
  169.     return 1;
  170. }
  171.  
  172. public OnPlayerPickUpPickup(playerid, pickupid)
  173. {
  174.     return 1;
  175. }
  176.  
  177. public OnVehicleMod(playerid, vehicleid, componentid)
  178. {
  179.     return 1;
  180. }
  181.  
  182. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  183. {
  184.     return 1;
  185. }
  186.  
  187. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  188. {
  189.     return 1;
  190. }
  191.  
  192. public OnPlayerSelectedMenuRow(playerid, row)
  193. {
  194.     return 1;
  195. }
  196.  
  197. public OnPlayerExitedMenu(playerid)
  198. {
  199.     return 1;
  200. }
  201.  
  202. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  203. {
  204.     return 1;
  205. }
  206.  
  207. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  208. {
  209.     return 1;
  210. }
  211.  
  212. public OnRconLoginAttempt(ip[], password[], success)
  213. {
  214.     return 1;
  215. }
  216.  
  217. public OnPlayerUpdate(playerid)
  218. {
  219.     return 1;
  220. }
  221.  
  222. public OnPlayerStreamIn(playerid, forplayerid)
  223. {
  224.     return 1;
  225. }
  226.  
  227. public OnPlayerStreamOut(playerid, forplayerid)
  228. {
  229.     return 1;
  230. }
  231.  
  232. public OnVehicleStreamIn(vehicleid, forplayerid)
  233. {
  234.     return 1;
  235. }
  236.  
  237. public OnVehicleStreamOut(vehicleid, forplayerid)
  238. {
  239.     return 1;
  240. }
  241.  
  242. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  243. {
  244.     switch(dialogid)
  245.     {
  246.         case DIALOG_LOGIN:
  247.         {
  248.             if(!response)
  249.                 Kick(playerid);
  250.         }
  251.         case DIALOG_REGISTRO:
  252.         {
  253.             if(!response)
  254.                 Kick(playerid);
  255.         }
  256.     }
  257.  
  258.     return 1;
  259. }
  260.  
  261. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  262. {
  263.     return 1;
  264. }
  265.  
  266. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
  267. {
  268.     return 1;
  269. }
  270.  
  271. // FUNCOES
  272.  
  273. function OnPlayerLogin(playerid)
  274. {
  275.     orm_setkey(PlayerData[playerid][ormid], "id");
  276.  
  277.     if(orm_errno(PlayerData[playerid][ormid]) == ERROR_OK) // jogador ja existe na database
  278.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha para logar:", "Logar", "Sair");
  279.     else // jogador não encontrado na database
  280.         ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "Entre com uma senha para se registrar:", "Registrar", "Sair");
  281.     return 1;
  282. }
  283.  
  284. function DataBaseInit()
  285. {
  286.     //new MYSQL:DBConn, host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  287.     LoadDBSettings("dbconfig.ini");
  288.     DBConn = mysql_connect(host, username, pass, database);
  289.     if(mysql_errno() == 0)
  290.     {
  291.         printf("[MySQL] Database '%s' conectada com sucesso!", database);
  292.         print("[MySQL] Verificando tabelas...");
  293.  
  294.         mysql_query(DBConn, "CREATE TABLE IF NOT EXISTS Player (\
  295.         id int NOT NULL AUTO_INCREMENT,\
  296.         nome varchar(25) NOT NULL,\
  297.         senha varchar(255) NOT NULL,\
  298.         admin int DEFAULT 0,\
  299.         PRIMARY KEY(id));", false);
  300.  
  301.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS health float DEFAULT 100;", false);
  302.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS armor float DEFAULT 100;", false);
  303.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS dinheiro int DEFAULT 100;", false);
  304.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posX double DEFAULT 0;", false);
  305.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posY double DEFAULT 0;", false);
  306.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS posZ double DEFAULT 0;", false);
  307.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS angulo double DEFAULT 0;", false);
  308.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS interior int DEFAULT 0;", false);
  309.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS vw int DEFAULT 0;", false);
  310.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS score int DEFAULT 0;", false);
  311.         mysql_query(DBConn, "ALTER TABLE Player ADD IF NOT EXISTS skin int DEFAULT 0;", false);
  312.  
  313.         print("[MySQL] Tabela 'Players' verificada com sucesso!");
  314.     }
  315.     else
  316.     {
  317.         printf("[MySQL] ERRO: Não foi possível se conectar a database '%s'!", database);
  318.         SendRconCommand("exit");
  319.     }
  320.  
  321.     return 1;
  322. }
  323.  
  324. function RemoveBuildingFromFile(playerid, const file[])
  325. {
  326.     new File:map = fopen(file, io_read);
  327.     if(map)
  328.     {
  329.         new string[256];
  330.         while(fread(map, string))
  331.         {
  332.             new modelid, Float:pos[3], Float:rad;
  333.             if(!sscanf(string, "dffff", modelid, pos[0], pos[1], pos[2], rad))
  334.                 RemoveBuildingForPlayer(playerid, modelid, pos[0], pos[1], pos[2], rad);
  335.             else
  336.                 return printf("Carregamento do mapa '%s' falhou para o jogador %s(%d).", file, GetPlayerNameEx(playerid), playerid);
  337.         }
  338.     }
  339.     return printf("Jogador %s(%d) carregou o mapa '%s' com êxito.", GetPlayerNameEx(playerid), playerid, file);
  340. }
  341.  
  342. function LoadMap(const file[])
  343. {
  344.     printf("Carregando Mapa '%s'...", file);
  345.     new File:map = fopen(file, io_read);
  346.     if(map)
  347.     {
  348.         new string[256];
  349.         while(fread(map, string))
  350.         {
  351.             new modelid, Float:pos[3], Float:rot[3];
  352.             if(sscanf(string, "dffffff", modelid, pos[0], pos[1], pos[2], rot[0], rot[1], rot[2]))
  353.                 return printf("Erro ao carregar o mapa '%s'!",file);
  354.             else
  355.                 CreateObject(modelid, pos[0], pos[1], pos[2], rot[0], rot[1], rot[2]);
  356.                
  357.         }
  358.         return printf("Mapa '%s' carregado com sucesso!",file);
  359.     }
  360.     else return printf("Erro ao carregar o mapa '%s'!",file);
  361. }
  362.  
  363. // COMANDOS
  364.  
  365. CMD:pos(playerid, const params[])
  366. {
  367.     new Float:pos[3], giveplayerid;
  368.     if(sscanf(params, "ufff", giveplayerid, pos[0], pos[1], pos[2]))
  369.         return SendClientMessage(playerid, -1, "USO: /pos [id] [x] [y] [z]");
  370.  
  371.     if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
  372.         return SendClientMessage(playerid, -1, "ERRO: ID Inválido!");
  373.  
  374.     SetPlayerPos(giveplayerid, pos[0], pos[1], pos[2]);
  375.     return 1;
  376. }
  377.  
  378. CMD:info(playerid, const params[])
  379. {
  380.     new giveplayerid, string[64];
  381.    
  382.     if(sscanf(params, "u", giveplayerid))
  383.         return SendClientMessage(playerid, -1, "USO: /info [id]");
  384.    
  385.     if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
  386.         return SendClientMessage(playerid, -1, "ERRO: ID Inválido!");
  387.  
  388.     format(string, sizeof(string), "Jogador: %s", GetPlayerNameEx(giveplayerid));
  389.     SendClientMessage(playerid, -1, string);
  390.  
  391.     format(string, sizeof(string), "ID: %d", giveplayerid);
  392.     SendClientMessage(playerid, -1, string);
  393.  
  394.     format(string, sizeof(string), "Score: %d", GetPlayerScore(giveplayerid));
  395.     SendClientMessage(playerid, -1, string);
  396.  
  397.     format(string, sizeof(string), "Dinheiro: %d", GetPlayerMoney(giveplayerid));
  398.     SendClientMessage(playerid, -1, string);
  399.        
  400.     format(string, sizeof(string), "Life: %f", GetPlayerHealthEx(giveplayerid));
  401.     SendClientMessage(playerid, -1, string);
  402.  
  403.     format(string, sizeof(string), "Armor: %f", GetPlayerArmourEx(giveplayerid));
  404.     SendClientMessage(playerid, -1, string);
  405.  
  406.     new Float:pos[3];
  407.     GetPlayerPos(giveplayerid, pos[0], pos[1], pos[2]);
  408.     format(string, sizeof(string), "PosX: %f PosY: %f PosZ: %f", pos[0], pos[1], pos[2]);
  409.     SendClientMessage(playerid, -1, string);
  410.  
  411.     format(string, sizeof(string),"Int: %d", GetPlayerInterior(giveplayerid));
  412.     SendClientMessage(playerid, -1, string);
  413.  
  414.     format(string, sizeof(string),"Virtual World: %d", GetPlayerVirtualWorld(giveplayerid));
  415.     SendClientMessage(playerid, -1, string);
  416.  
  417.     return 1;
  418. }
  419.  
  420. // PROCEDIMENTOS
  421.  
  422. stock LoadPlayerData(playerid)
  423. {
  424.     PlayerData[playerid][ormid] = orm_create("Player", DBConn);
  425.  
  426.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][accid], "id");
  427.     orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][nome], MAX_PLAYER_NAME, "nome");
  428.     orm_addvar_string(PlayerData[playerid][ormid], PlayerData[playerid][senha], MAX_PASS_LEN, "senha");
  429.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][admin], "admin");
  430.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posX], "posX");
  431.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posY], "posY");
  432.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][posZ], "posZ");
  433.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][angulo], "angulo");
  434.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][health], "health");
  435.     orm_addvar_float(PlayerData[playerid][ormid], PlayerData[playerid][armor], "armor");
  436.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][money], "dinheiro");
  437.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][score], "score");
  438.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][skin], "skin");
  439.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][interior], "interior");
  440.     orm_addvar_int(PlayerData[playerid][ormid], PlayerData[playerid][vw], "vw");
  441.  
  442.     orm_setkey(PlayerData[playerid][ormid], "nome");
  443.     orm_select(PlayerData[playerid][ormid], "OnPlayerLogin", "d", playerid);
  444. }
  445.  
  446. stock LoadDBSettings(filename[])
  447. {
  448.     //new host[16], username[MAX_PLAYER_NAME], database[MAX_PLAYER_NAME], pass[16];
  449.     if(DOF2_FileExists(filename))
  450.     {
  451.         format(host, sizeof(host), "%s", DOF2_GetString(filename,"address"));
  452.         format(username, sizeof(username), "%s", DOF2_GetString(filename,"username"));
  453.         format(database, sizeof(database), "%s", DOF2_GetString(filename,"database"));
  454.         format(pass, sizeof(pass), "%s", DOF2_GetString(filename,"password"));
  455.     }
  456.     else
  457.     {
  458.         DOF2_CreateFile(filename);
  459.         DOF2_SetString(filename,"address","127.0.0.1");
  460.         DOF2_SetString(filename,"username","root");
  461.         DOF2_SetString(filename,"database", " ");
  462.         DOF2_SetString(filename,"password", " ");
  463.         DOF2_SaveFile();
  464.     }
  465. }
  466.  
  467. stock GetPlayerNameEx(playerid)
  468. {
  469.     new PlayerName[MAX_PLAYER_NAME];
  470.     GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  471.     return PlayerName;
  472. }
  473.  
  474. function Float:GetPlayerHealthEx(playerid)
  475. {
  476.     new Float:playerhealth;
  477.     GetPlayerHealth(playerid, playerhealth);
  478.     return playerhealth;
  479. }
  480.  
  481. function Float:GetPlayerArmourEx(playerid)
  482. {
  483.     new Float:playerarmor;
  484.     GetPlayerArmour(playerid, playerarmor);
  485.     return playerarmor;
  486. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement