Guest User

GM Atualizada

a guest
Apr 15th, 2018
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.78 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <a_mysql>
  4.  
  5.  
  6. // -------------------------------
  7. #define HOST "127.0.0.1"
  8. #define USER "root"
  9. #define SENHA ""
  10. #define DATABASE "samp"
  11.  
  12. new MySQL: MYSQLConnected;
  13. // -------------------------------
  14. #define DIALOG_LOGIN 1
  15. #define DIALOG_REGISTRO 2
  16. // -------------------------------
  17. #define TEMPO_LOGIN 30
  18.  
  19. #define DEFAULTPOSX 1139.4064
  20. #define DEFAULTPOSY -1761.9249
  21. #define DEFAULTPOSZ 13.5955
  22. #define DEFAULTPOSA 4.5833
  23. // -------------------------------
  24. enum E_PLAYERS{
  25. ID, // MYSQL ID, int
  26. Nome[MAX_PLAYER_NAME], // string
  27. Senha, // string
  28. Money, // int
  29. Skin, // int
  30. Score, // int
  31. Float: PosX, // float
  32. Float: PosY, // float
  33. Float: PosZ, // float
  34. Float: PosA, // float
  35. Interior, // int
  36. VirtualWorld, // int
  37.  
  38. bool: pLogado, // se o player estiver logado
  39. }
  40. new Player[MAX_PLAYERS][E_PLAYERS];
  41. // --------------------------------
  42.  
  43. main() {}
  44.  
  45. public OnGameModeInit()
  46. {
  47. MySQLConnect(); // Verifica se o banco de dados está ligado
  48. CriarTabela(); // Crias as tabelas
  49. return 1;
  50. }
  51.  
  52. public OnGameModeExit()
  53. {
  54. FecharServidor(); // Quando o servidor fechar todos os jogadores onlines vão sair como se fosse por contra propria
  55. return 1;
  56. }
  57.  
  58. public OnPlayerRequestClass(playerid, classid)
  59. {
  60. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  61. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  62. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  63. return 1;
  64. }
  65.  
  66. public OnPlayerConnect(playerid)
  67. {
  68. MYSQLConnected = mysql_connect(HOST, USER, SENHA, DATABASE);
  69. GetPlayerName(playerid, Player[playerid][Nome], 20);
  70.  
  71. new Query[90];
  72. mysql_format(MYSQLConnected, Query, sizeof(Query), "SELECT `ID`, `SENHA` FROM `Jogadores` WHERE `Player`='%s' ",Player[playerid][Nome]);
  73. mysql_tquery(MYSQLConnected, Query, "VerificarContas", "i", playerid);
  74.  
  75. return 1;
  76. }
  77.  
  78. public OnPlayerDisconnect(playerid, reason)
  79. {
  80. SalvarDados(playerid);
  81. return 1;
  82. }
  83.  
  84. public OnPlayerSpawn(playerid)
  85. {
  86. return 1;
  87. }
  88.  
  89. public OnPlayerDeath(playerid, killerid, reason)
  90. {
  91. return 1;
  92. }
  93.  
  94. public OnVehicleSpawn(vehicleid)
  95. {
  96. return 1;
  97. }
  98.  
  99. public OnVehicleDeath(vehicleid, killerid)
  100. {
  101. return 1;
  102. }
  103.  
  104. public OnPlayerText(playerid, text[])
  105. {
  106. return 1;
  107. }
  108.  
  109. public OnPlayerCommandText(playerid, cmdtext[])
  110. {
  111. if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  112. {
  113. // Do something here
  114. return 1;
  115. }
  116. return 0;
  117. }
  118.  
  119. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  120. {
  121. return 1;
  122. }
  123.  
  124. public OnPlayerExitVehicle(playerid, vehicleid)
  125. {
  126. return 1;
  127. }
  128.  
  129. public OnPlayerStateChange(playerid, newstate, oldstate)
  130. {
  131. return 1;
  132. }
  133.  
  134. public OnPlayerEnterCheckpoint(playerid)
  135. {
  136. return 1;
  137. }
  138.  
  139. public OnPlayerLeaveCheckpoint(playerid)
  140. {
  141. return 1;
  142. }
  143.  
  144. public OnPlayerEnterRaceCheckpoint(playerid)
  145. {
  146. return 1;
  147. }
  148.  
  149. public OnPlayerLeaveRaceCheckpoint(playerid)
  150. {
  151. return 1;
  152. }
  153.  
  154. public OnRconCommand(cmd[])
  155. {
  156. return 1;
  157. }
  158.  
  159. public OnPlayerRequestSpawn(playerid)
  160. {
  161. return 1;
  162. }
  163.  
  164. public OnObjectMoved(objectid)
  165. {
  166. return 1;
  167. }
  168.  
  169. public OnPlayerObjectMoved(playerid, objectid)
  170. {
  171. return 1;
  172. }
  173.  
  174. public OnPlayerPickUpPickup(playerid, pickupid)
  175. {
  176. return 1;
  177. }
  178.  
  179. public OnVehicleMod(playerid, vehicleid, componentid)
  180. {
  181. return 1;
  182. }
  183.  
  184. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  185. {
  186. return 1;
  187. }
  188.  
  189. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  190. {
  191. return 1;
  192. }
  193.  
  194. public OnPlayerSelectedMenuRow(playerid, row)
  195. {
  196. return 1;
  197. }
  198.  
  199. public OnPlayerExitedMenu(playerid)
  200. {
  201. return 1;
  202. }
  203.  
  204. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  205. {
  206. return 1;
  207. }
  208.  
  209. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  210. {
  211. return 1;
  212. }
  213.  
  214. public OnRconLoginAttempt(ip[], password[], success)
  215. {
  216. return 1;
  217. }
  218.  
  219. public OnPlayerUpdate(playerid)
  220. {
  221. return 1;
  222. }
  223.  
  224. public OnPlayerStreamIn(playerid, forplayerid)
  225. {
  226. return 1;
  227. }
  228.  
  229. public OnPlayerStreamOut(playerid, forplayerid)
  230. {
  231. return 1;
  232. }
  233.  
  234. public OnVehicleStreamIn(vehicleid, forplayerid)
  235. {
  236. return 1;
  237. }
  238.  
  239. public OnVehicleStreamOut(vehicleid, forplayerid)
  240. {
  241. return 1;
  242. }
  243.  
  244. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  245. {
  246. GetPlayerName(playerid, Player[playerid][Nome], 20);
  247. new Dialog[240];
  248.  
  249. if(dialogid == DIALOG_REGISTRO){
  250. if(!response) return Kick(playerid);
  251.  
  252. if(strlen(inputtext) < 4 || strlen(inputtext) > 20){
  253. SendClientMessage(playerid, -1,"{0xFF0000AA}[ERRO]Apenas entre 4 a 20 Caracteres");
  254.  
  255. format(Dialog, sizeof(Dialog), "{0xFFFFFFAA}%s\n{0x80FF00AA}STATUS: NÃO REGISTRADA", Player[playerid][Nome]);
  256. ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "REGISTRO", Dialog, "Confirmar", "Sair");
  257. }else{
  258.  
  259. new Query[256];
  260. mysql_format(MYSQLConnected, Query, sizeof(Query), "INSERT INTO `Jogadores`(`Player`,`Senha`) VALUES('%s','%s')", Player[playerid][Nome], inputtext);
  261. mysql_tquery(MYSQLConnected, Query, "DadosRegistrados", "i", playerid);
  262.  
  263. RegistrarDados(playerid);
  264. SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ], Player[playerid][PosA], 0, 0, 0, 0, 0, 0);
  265. }
  266. }
  267.  
  268. if(dialogid == DIALOG_LOGIN){
  269.  
  270. if(!response) return Kick(playerid);
  271.  
  272. if(!strcmp(Player[playerid][Senha], inputtext, true, 20)){
  273. new Query[70];
  274. mysql_format(MYSQLConnected, Query, sizeof(Query), "SELECT * FROM `Jogadores` Player='%s'", Player[playerid][Nome]);
  275. mysql_tquery(MYSQLConnected, Query, "CarregarContas", "d", playerid);
  276. SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ], Player[playerid][PosA], 0, 0, 0, 0, 0, 0);
  277. }else{
  278. SendClientMessage(playerid, -1,"{0xFF0000AA}[ERRO]Senha incorreta");
  279. format(Dialog, sizeof(Dialog), "{0xFFFFFFAA}%s\n{0xFF0000AA}STATUS: Registrado", Player[playerid][Nome]);
  280. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", Dialog, "Confirmar", "Sair");
  281. }
  282. }
  283.  
  284. // == //
  285. return 1;
  286. }
  287.  
  288. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  289. {
  290. return 1;
  291. }
  292.  
  293. //=========================
  294. forward MySQLConnect();
  295. public MySQLConnect(){
  296.  
  297.  
  298. MYSQLConnected = mysql_connect(HOST, USER, SENHA, DATABASE);
  299. if (MYSQLConnected == MYSQL_INVALID_HANDLE || mysql_errno(MYSQLConnected) != 0){
  300. printf("[MySQL]Conexão com o banco de dados falhou");
  301. SendRconCommand("exit");
  302. }else{
  303. printf("[MySQL]Conectado ao banco de dados com sucesso");
  304. }
  305. return 1;
  306. }
  307.  
  308. // --------------------------
  309. forward FecharServidor();
  310. public FecharServidor(){
  311.  
  312. for (new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  313. if (IsPlayerConnected(i)){
  314. OnPlayerDisconnect(i, 1);
  315. }
  316. }
  317. mysql_close(MYSQLConnected);
  318. return 1;
  319. }
  320. // -------------------------
  321. forward CriarTabela();
  322. public CriarTabela(){
  323. MYSQLConnected = mysql_connect(HOST, USER, SENHA, DATABASE);
  324. mysql_query(MYSQLConnected ,"CREATE TABLE IF NOT EXISTS Jogadores(ID INT AUTO_INCREMENT PRIMARY KEY,Player VARCHAR(24),Senha VARCHAR(24), Dinheiro INT(20), Skin INT(20), Score INT(20), PosX FLOAT(20), PosY FLOAT(20), PosZ FLOAT(20), PosA FLOAT(20), Interior INT(10), VirtualWorld INT(10))");
  325. return 1;
  326. }
  327. // -------------------------
  328. forward VerificarContas(playerid);
  329. public VerificarContas(playerid){
  330. new Dialog[240];
  331.  
  332. if(cache_num_rows() > 0){
  333. cache_get_value(0, "Senha", Player[playerid][Senha]);
  334. format(Dialog, sizeof(Dialog), "{0xFFFFFFAA}%s\n{0xFF0000AA}STATUS: Registrado", Player[playerid][Nome]);
  335. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", Dialog, "Confirmar", "Sair");
  336. }else{
  337. format(Dialog, sizeof(Dialog), "{0xFFFFFFAA}%s\n{0x80FF00AA}STATUS: NÃO REGISTRADA", Player[playerid][Nome]);
  338. ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", Dialog, "Confirmar", "Sair");
  339. }
  340. return 1;
  341. }
  342. // --------------------------
  343. forward DadosRegistrados(playerid);
  344. public DadosRegistrados(playerid){
  345. Player[playerid][ID] = cache_insert_id();
  346. printf("CONTA ID %d REGISTRADA", Player[playerid][ID]);
  347. return 1;
  348. }
  349. // --------------------------
  350. forward CarregarContas(playerid);
  351. public CarregarContas(playerid){
  352. cache_get_value_int(0, "ID", Player[playerid][ID]);
  353. cache_get_value_int(0, "Skin", Player[playerid][Skin]);
  354. cache_get_value_int(0, "Score", Player[playerid][Score]);
  355. cache_get_value_int(0, "Dinheiro", Player[playerid][Money]);
  356. cache_get_value_int(0, "Interior", Player[playerid][Interior]);
  357. cache_get_value_int(0, "VirtualWorld", Player[playerid][VirtualWorld]);
  358.  
  359. cache_get_value_float(0, "PosX", Player[playerid][PosX]);
  360. cache_get_value_float(0, "PosY", Player[playerid][PosY]);
  361. cache_get_value_float(0, "PosZ", Player[playerid][PosZ]);
  362. cache_get_value_float(0, "PosA", Player[playerid][PosA]);
  363.  
  364. CarregarDados(playerid);
  365. return 1;
  366. }
  367. // ----------------------------
  368. stock RegistrarDados(playerid){
  369. Player[playerid][Skin] = 23;
  370. Player[playerid][Score] = 0;
  371. Player[playerid][Money] = 1500;
  372. Player[playerid][Interior] = 0;
  373. Player[playerid][VirtualWorld] = 0;
  374.  
  375. Player[playerid][PosX] = DEFAULTPOSX;
  376. Player[playerid][PosY] = DEFAULTPOSY;
  377. Player[playerid][PosZ] = DEFAULTPOSZ;
  378. Player[playerid][PosA] = DEFAULTPOSA;
  379. CarregarDados(playerid);
  380. return 1;
  381. }
  382. // -----------------------------
  383. stock CarregarDados(playerid){
  384. Player[playerid][pLogado] = true;
  385. SetPlayerScore(playerid, Player[playerid][Score]);
  386. GivePlayerMoney(playerid, Player[playerid][Money]);
  387. SetPlayerInterior(playerid, Player[playerid][Interior]);
  388. SetPlayerVirtualWorld(playerid, Player[playerid][VirtualWorld]);
  389.  
  390. SetSpawnInfo(playerid, 0, Player[playerid][Skin], Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ], Player[playerid][PosA], 0, 0, 0, 0, 0, 0);
  391. return 1;
  392. }
  393. // ------------------------------
  394. stock SalvarDados(playerid){
  395. Player[playerid][Score] = GetPlayerScore(playerid);
  396. Player[playerid][Skin] = GetPlayerSkin(playerid);
  397. Player[playerid][Money] = GetPlayerMoney(playerid);
  398. Player[playerid][Interior] = GetPlayerInterior(playerid);
  399. Player[playerid][VirtualWorld] = GetPlayerVirtualWorld(playerid);
  400.  
  401. GetPlayerPos(playerid ,Player[playerid][PosX], Player[playerid][PosY], Player[playerid][PosZ]);
  402. GetPlayerFacingAngle(playerid, Player[playerid][PosA]);
  403. GetPlayerName(playerid, Player[playerid][Nome], 20);
  404.  
  405. new Query[350];
  406. mysql_format(MYSQLConnected, Query, sizeof(Query), "UPDATE `Jogadores` SET `Player`='%s', `Dinheiro`=%d, `Skin`=%d, `Score`=%d, `PosY`='%f',`PosZ`='%f',`PosX`='%f',`PosA`='%f', `Interior`=%d, `VirtualWorld`=%d WHERE `ID`=%d",
  407. Player[playerid][Nome],
  408. Player[playerid][Money],
  409. Player[playerid][Skin],
  410. Player[playerid][Score],
  411. Player[playerid][PosX],
  412. Player[playerid][PosY],
  413. Player[playerid][PosZ],
  414. Player[playerid][PosA],
  415. Player[playerid][Interior],
  416. Player[playerid][VirtualWorld],
  417. Player[playerid][ID]);
  418.  
  419. mysql_tquery(MYSQLConnected, Query, "DadosSalvos", "d", playerid);
  420.  
  421. Player[playerid][Money] = 0;
  422. Player[playerid][Score] = 0;
  423. Player[playerid][Skin] = 0;
  424. Player[playerid][PosX] = 0;
  425. Player[playerid][PosY] = 0;
  426. Player[playerid][PosZ] = 0;
  427. Player[playerid][PosA] = 0;
  428. Player[playerid][Interior] = 0;
  429. Player[playerid][VirtualWorld] = 0;
  430. Player[playerid][pLogado] = false;
  431. DadosSalvos(playerid);
  432. return 1;
  433.  
  434. }
  435. // --------------------------------------------------
  436. forward DadosSalvos(playerid);
  437. public DadosSalvos(playerid) return printf("-> Conta salva ID: %d", Player[playerid][ID]);
Advertisement
Add Comment
Please, Sign In to add comment