Advertisement
Guest User

Sistema de

a guest
Aug 25th, 2011
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.45 KB | None | 0 0
  1. #include <a_samp>
  2. #include <fcmd>
  3. #include <fini>
  4. #include <sscanf>
  5. #include <a_mysql>
  6.  
  7. //=======================//
  8. // Sistemas de ficheiros //
  9. //     By: WH_FusioN     //
  10. //=======================//
  11. // 1 = FINI              //
  12. // 2 = MYSQL             //
  13. //=======================//
  14. new files = 1;           //
  15. //=======================//
  16. //OBS: Para usar o sistema de ficheiros MySQL, você tem de ter o MySQL instalado como é obvio e criar a database sa-mp.
  17. //Não se esqueça de rever as definições de conexao a DB do MySQL, abaixo.
  18. //Se usar o sistema de ficheiros FINI, você tem de criar a pasta 'Contas' nos scriptfiles.
  19.  
  20. new Logado[MAX_PLAYERS];
  21. new nome[MAX_PLAYER_NAME];
  22. new fnome[MAX_PLAYER_NAME];
  23. static fPlayer;
  24.  
  25. #define mysql_host "127.0.0.1"
  26. #define mysql_user "root"
  27. #define mysql_password ""
  28. #define mysql_database "sa-mp"
  29.  
  30. #define DIALOG_REGISTRO 1
  31. #define DIALOG_LOGIN 2
  32.  
  33. main()
  34. {
  35.     print("\n----------------------------------");
  36.     print(" GM");
  37.     print("----------------------------------\n");
  38. }
  39.  
  40. public OnGameModeInit()
  41. {
  42.     if(files == 2)
  43.     {
  44.         mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
  45.         mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(40),money INT(20), IP VARCHAR(15) )");
  46.     }
  47.     SetGameModeText("GM");
  48.     return 1;
  49. }
  50.  
  51. public OnGameModeExit()
  52. {
  53.     return 1;
  54. }
  55.  
  56. public OnPlayerRequestClass(playerid, classid)
  57. {
  58.     return 1;
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63.     Logado[playerid] = 0;
  64.     if(files == 1)
  65.     {
  66.         new string[200];
  67.         GetPlayerName(playerid, nome, 24);
  68.         format(string, sizeof(string), "/Contas/%s.ini",nome);
  69.         if(Fini_Exists(string))
  70.         {
  71.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}Login","{FFFFFF}O seu nick {FF0000}está{FFFFFF} registrado! Por-favor {0000FF}logue-se{FFFFFF} digitando sua password abaixo!","Logar","Sair");
  72.             return 1;
  73.         }
  74.         if(!Fini_Exists(string))
  75.         {
  76.             ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro","{FFFFFF}O seu nick {FF0000}não{FFFFFF} está registrado! Por-favor {0000FF}registre-se{FFFFFF} digitando uma password abaixo!","Registrar","Sair");
  77.             return 1;
  78.         }
  79.     }
  80.     if(files == 2)
  81.     {
  82.         new query[200];
  83.         GetPlayerName(playerid, nome, 24);
  84.         format(query, sizeof(query), "SELECT IP FROM `playerdata` WHERE user = '%s' LIMIT 1", nome);
  85.         mysql_query(query);
  86.         mysql_store_result();
  87.         new rows = mysql_num_rows();
  88.         if(!rows)
  89.         {
  90.             ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro","{FFFFFF}O seu nick {FF0000}não{FFFFFF} está registrado! Por-favor {0000FF}registre-se{FFFFFF} digitando uma password abaixo!","Registrar","Sair");
  91.         }
  92.         if(rows == 1)
  93.         {
  94.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}Login","{FFFFFF}O seu nick {FF0000}está{FFFFFF} registrado! Por-favor {0000FF}logue-se{FFFFFF} digitando sua password abaixo!","Logar","Sair");
  95.         }
  96.         mysql_free_result();
  97.         return 1;
  98.     }
  99.     return 1;
  100. }
  101.  
  102. public OnPlayerDisconnect(playerid, reason)
  103. {
  104.     if(files == 1)
  105.     {
  106.         new string[200];
  107.         GetPlayerName(playerid, nome, 24);
  108.         format(string, sizeof(string), "/Contas/%s.ini",nome);
  109.         if(Fini_Exists(string))
  110.         {
  111.             Fini_OpenFile(string);
  112.             new money = GetPlayerMoney(playerid);
  113.             Fini_SetVal("Dinheiro", money);
  114.             Fini_SaveFile(string);
  115.             Fini_CloseFile();
  116.             printf("[login] %s has logged out.",nome);
  117.         }
  118.         return 1;
  119.     }
  120.     if(files == 2)
  121.     {
  122.         new money = GetPlayerMoney(playerid);
  123.         new query[200];
  124.         GetPlayerName(playerid, nome, 24);
  125.         format(query, sizeof(query), "UPDATE playerdata SET money=%d WHERE user='%s'", money, nome);
  126.         mysql_query(query);
  127.         printf("[login] %s has logged out.",nome);
  128.         return 1;
  129.     }
  130.     return 1;
  131. }
  132.  
  133. public OnPlayerSpawn(playerid)
  134. {
  135.     SetPlayerScore(playerid, GetPlayerMoney(playerid));
  136.     return 1;
  137. }
  138.  
  139. public OnPlayerDeath(playerid, killerid, reason)
  140. {
  141.     return 1;
  142. }
  143.  
  144. public OnVehicleSpawn(vehicleid)
  145. {
  146.     return 1;
  147. }
  148.  
  149. public OnVehicleDeath(vehicleid, killerid)
  150. {
  151.     return 1;
  152. }
  153.  
  154. public OnPlayerText(playerid, text[])
  155. {
  156.     return 1;
  157. }
  158.  
  159. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  160. {
  161.     return 1;
  162. }
  163.  
  164. public OnPlayerExitVehicle(playerid, vehicleid)
  165. {
  166.     return 1;
  167. }
  168.  
  169. public OnPlayerStateChange(playerid, newstate, oldstate)
  170. {
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerEnterCheckpoint(playerid)
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnPlayerLeaveCheckpoint(playerid)
  180. {
  181.     return 1;
  182. }
  183.  
  184. public OnPlayerEnterRaceCheckpoint(playerid)
  185. {
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerLeaveRaceCheckpoint(playerid)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnRconCommand(cmd[])
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerRequestSpawn(playerid)
  200. {
  201.     if(!Logado[playerid])
  202.     {
  203.         SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não pode jogar antes do login/registro! Você foi kickado!");
  204.         Kick(playerid);
  205.         return 0;
  206.     }
  207.     return 1;
  208. }
  209.  
  210. public OnObjectMoved(objectid)
  211. {
  212.     return 1;
  213. }
  214.  
  215. public OnPlayerObjectMoved(playerid, objectid)
  216. {
  217.     return 1;
  218. }
  219.  
  220. public OnPlayerPickUpPickup(playerid, pickupid)
  221. {
  222.     return 1;
  223. }
  224.  
  225. public OnVehicleMod(playerid, vehicleid, componentid)
  226. {
  227.     return 1;
  228. }
  229.  
  230. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  231. {
  232.     return 1;
  233. }
  234.  
  235. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  236. {
  237.     return 1;
  238. }
  239.  
  240. public OnPlayerSelectedMenuRow(playerid, row)
  241. {
  242.     return 1;
  243. }
  244.  
  245. public OnPlayerExitedMenu(playerid)
  246. {
  247.     return 1;
  248. }
  249.  
  250. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  251. {
  252.     return 1;
  253. }
  254.  
  255. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  256. {
  257.     return 1;
  258. }
  259.  
  260. public OnRconLoginAttempt(ip[], password[], success)
  261. {
  262.     return 1;
  263. }
  264.  
  265. public OnPlayerUpdate(playerid)
  266. {
  267.     return 1;
  268. }
  269.  
  270. public OnPlayerStreamIn(playerid, forplayerid)
  271. {
  272.     return 1;
  273. }
  274.  
  275. public OnPlayerStreamOut(playerid, forplayerid)
  276. {
  277.     return 1;
  278. }
  279.  
  280. public OnVehicleStreamIn(vehicleid, forplayerid)
  281. {
  282.     return 1;
  283. }
  284.  
  285. public OnVehicleStreamOut(vehicleid, forplayerid)
  286. {
  287.     return 1;
  288. }
  289.  
  290. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  291. {
  292.     if(dialogid == DIALOG_REGISTRO)
  293.     {
  294.         if(response)
  295.         {
  296.             if(files == 1)
  297.             {
  298.                 if(!strlen(inputtext) || strlen(inputtext) > 24)
  299.                 {
  300.                     SendClientMessage(playerid, -1, "[ERRO] Você tem de digitar uma senha com 1-24 carateres!");
  301.                     ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro","{FFFFFF}O seu nick {FF0000}não{FFFFFF} está registrado! Por-favor {0000FF}registre-se{FFFFFF} digitando uma password abaixo!","Registrar","Sair");
  302.                 }
  303.                 else if(strlen(inputtext) > 0 && strlen(inputtext) < 24)
  304.                 {
  305.                     OnPlayerRegister(playerid, inputtext);
  306.                 }
  307.                 return 1;
  308.             }
  309.             if(files == 2)
  310.             {
  311.                 if(!strlen(inputtext) || strlen(inputtext) > 24)
  312.                 {
  313.                     SendClientMessage(playerid, -1, "[ERRO] Você tem de digitar uma senha com 1-24 carateres!");
  314.                     ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "{FFFFFF}Registro","{FFFFFF}O seu nick {FF0000}não{FFFFFF} está registrado! Por-favor {0000FF}registre-se{FFFFFF} digitando uma password abaixo!","Registrar","Sair");
  315.                 }
  316.                 else if(strlen(inputtext) > 0 && strlen(inputtext) < 24)
  317.                 {
  318.                     new escpass[100];
  319.                     mysql_real_escape_string(inputtext, escpass);
  320.                     OnPlayerRegister(playerid, escpass);
  321.                 }
  322.                 return 1;
  323.             }
  324.         }
  325.         if(!response)
  326.         {
  327.             SendClientMessage(playerid, -1, "* Você saiu do servidor antes de se registrar!");
  328.             Kick(playerid);
  329.         }
  330.     }
  331.     if(dialogid == DIALOG_LOGIN)
  332.     {
  333.         if(response)
  334.         {
  335.             if(files == 1)
  336.             {
  337.                 new string[200];
  338.                 new tentativas[MAX_PLAYERS];
  339.                 GetPlayerName(playerid, nome, 24);
  340.                 format(string, sizeof(string), "/Contas/%s.ini",nome);
  341.                 printf("[login(debug)] %s carregou 'ok' no dialog LOGIN", nome);
  342.                 printf("[login(debug)] %s: verificando se o ficheiro existe", nome);
  343.                 //A função PARA aqui, as funçoes abaixo não são executadas porque??
  344.                 if(Fini_Exists(string))
  345.                 {
  346.                     Fini_OpenFile(string);
  347.                     printf("[login(debug)] %s: ficheiro aberto", nome);
  348.                     printf("[login(debug)] %s: verificando password", nome);
  349.                     if(strcmp(inputtext, Fini_GetStr("Password")))
  350.                     {
  351.                         OnPlayerLogin(playerid);
  352.                         printf("[login(debug)] %s escreveu a password certa e foi logado", nome);
  353.                     }
  354.                     else
  355.                     {
  356.                         tentativas[playerid] += 1;
  357.                         SendClientMessage(playerid, -1, "[ERRO] Password errada!");
  358.                         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}Login","{FFFFFF}O seu nick {FF0000}está{FFFFFF} registrado! Por-favor {0000FF}logue-se{FFFFFF} digitando sua password abaixo!","Logar","Sair");
  359.                         printf("[login(debug)] %s escreveu a password errada", nome);
  360.                         if(tentativas[playerid] == 3)
  361.                         {
  362.                             SendClientMessage(playerid, -1, "[ERRO] Você errou a password 3 vezes e foi banido pelo IP! :D");
  363.                             Ban(playerid);
  364.                         }
  365.                     }
  366.                     Fini_SaveFile(string);
  367.                     Fini_CloseFile();
  368.                     return 1;
  369.                 }
  370.                 else
  371.                 {
  372.                     printf("[login(debug)] %s: erro na verificação do ficheiro", nome);
  373.                 }
  374.                 return 1;
  375.             }
  376.             if(files == 2)
  377.             {
  378.                 new query[200], escapepass[100];
  379.                 GetPlayerName(playerid, nome, 24);
  380.                 mysql_real_escape_string(inputtext, escapepass);
  381.                 format(query, sizeof(query), "SELECT `user` FROM playerdata WHERE user = '%s' AND password = SHA1('%s')", nome, escapepass);
  382.                 mysql_query(query);
  383.                 mysql_store_result();
  384.                 new numrows = mysql_num_rows();
  385.                 if(!numrows)
  386.                 {
  387.                     SendClientMessage(playerid, -1, "[ERRO] Password errada!");
  388.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}Login","{FFFFFF}O seu nick {FF0000}está{FFFFFF} registrado! Por-favor {0000FF}logue-se{FFFFFF} digitando sua password abaixo!","Logar","Sair");
  389.                 }
  390.                 if(numrows == 1)
  391.                 {
  392.                     OnPlayerLogin(playerid);
  393.                 }
  394.                 mysql_free_result();
  395.                 return 1;
  396.             }
  397.         }
  398.         if(!response)
  399.         {
  400.             SendClientMessage(playerid, -1, "* Você saiu do servidor antes de se logar!");
  401.             Kick(playerid);
  402.         }
  403.     }
  404.     return 1;
  405. }
  406.  
  407. stock OnPlayerRegister(playerid, password[])
  408. {
  409.     if(files == 1)
  410.     {
  411.         new string[200];
  412.         GetPlayerName(playerid, nome, 24);
  413.         format(string, sizeof(string), "/Contas/%s.ini",nome);
  414.         if(!Fini_Exists(string))
  415.         {
  416.             Fini_Create(string);
  417.             Fini_OpenFile(string);
  418.             Fini_SetStr("Password", password);
  419.             Fini_SaveFile(string);
  420.             Fini_CloseFile();
  421.             SendClientMessage(playerid, -1, "* O seu nick foi registrado e logado com sucesso!");
  422.             format(string, sizeof(string), "* A sua password é: %s",password);
  423.             SendClientMessage(playerid, -1, string);
  424.             GivePlayerMoney(playerid, 100000);
  425.             SetPlayerScore(playerid, GetPlayerMoney(playerid));
  426.             printf("[register] %s has registered.",nome);
  427.             Logado[playerid] = 1;
  428.         }
  429.         return 1;
  430.     }
  431.     if(files == 2)
  432.     {
  433.         new string[200];
  434.         new query[200], IP[15];
  435.         GetPlayerName(playerid, nome, 24);
  436.         GetPlayerIp(playerid, IP, 15);
  437.         format(query, sizeof(query), "INSERT INTO playerdata (user, password, money, IP) VALUES('%s', '%s', 0, '%s')", nome, password, IP);
  438.         mysql_query(query);
  439.         SendClientMessage(playerid, -1, "* O seu nick foi registrado e logado com sucesso!");
  440.         format(string, sizeof(string), "* A sua password é: %s",password);
  441.         GivePlayerMoney(playerid, 100000);
  442.         SetPlayerScore(playerid, GetPlayerMoney(playerid));
  443.         printf("[register] %s has registered.",nome);
  444.         Logado[playerid] = 1;
  445.         return 1;
  446.     }
  447.     return 1;
  448. }
  449.  
  450. stock OnPlayerLogin(playerid)
  451. {
  452.     if(files == 1)
  453.     {
  454.         new string[200];
  455.         GetPlayerName(playerid, nome, 24);
  456.         format(string, sizeof(string), "/Contas/%s.ini",nome);
  457.         if(Fini_Exists(string))
  458.         {
  459.             Fini_OpenFile(string);
  460.             GivePlayerMoney(playerid, Fini_GetValue("Dinheiro"));
  461.             Fini_SaveFile(string);
  462.             Fini_CloseFile();
  463.             SetPlayerScore(playerid, GetPlayerMoney(playerid));
  464.             SendClientMessage(playerid, -1, "O seu nick foi logado neste servidor!");
  465.             printf("[login] %s has logged in.",nome);
  466.             Logado[playerid] = 1;
  467.         }
  468.         return 1;
  469.     }
  470.     if(files == 2)
  471.     {
  472.         new query[300], savingstring[20];
  473.         GetPlayerName(playerid, nome, 24);
  474.         format(query, sizeof(query), "SELECT money,  FROM playerdata WHERE user = '%s'", nome);
  475.         mysql_query(query);
  476.         mysql_store_result();
  477.         while(mysql_fetch_row_format(query,"|"))
  478.         {
  479.             mysql_fetch_field_row(savingstring, "money"); GivePlayerMoney(playerid, strval(savingstring));
  480.         }
  481.         mysql_free_result();
  482.         SetPlayerScore(playerid, GetPlayerMoney(playerid));
  483.         SendClientMessage(playerid, -1, "O seu nick foi logado neste servidor!");
  484.         printf("[login] %s has logged in.",nome);
  485.         Logado[playerid] = 1;
  486.         return 1;
  487.     }
  488.     return 1;
  489. }
  490.  
  491. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  492. {
  493.     return 1;
  494. }
  495.  
  496. fcmd(kick,playerid)
  497. {
  498.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não está conetado!");
  499.     new string[64];
  500.     fPlayer = strval(iParams[1]);
  501.     GetPlayerName(playerid,nome,sizeof(nome));
  502.     GetPlayerName(strval(iParams[1]),fnome,sizeof(fnome));
  503.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não é Admin RCON!");
  504.     if(!IsPlayerConnected(fPlayer)) return SendClientMessage(playerid,0xFFFFFFAA,"[ERRO] Player não conetado!");
  505.     format(string,64,"[ADM] O player %s foi kickado pelo admin %s",fnome,nome);
  506.     SendClientMessageToAll(0xFFFFFFAA,string);
  507.     Kick(strval(iParams[1]));
  508.     return true;
  509. }
  510.  
  511. fcmd(ban,playerid)
  512. {
  513.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não está conetado!");
  514.     new string[64];
  515.     fPlayer = strval(iParams[1]);
  516.     GetPlayerName(playerid,nome,sizeof(nome));
  517.     GetPlayerName(strval(iParams[1]),fnome,sizeof(fnome));
  518.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não é Admin RCON!");
  519.     if(!IsPlayerConnected(fPlayer)) return SendClientMessage(playerid,0xFFFFFFAA,"[ERRO] Player não conetado!");
  520.     format(string,64,"[ADM] O player %s foi banido pelo admin %s",fnome,nome);
  521.     SendClientMessageToAll(0xFFFFFFAA,string);
  522.     Ban(strval(iParams[1]));
  523.     return true;
  524. }
  525.  
  526. fcmd(ajudaadmin,playerid)
  527. {
  528.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não está conetado!");
  529.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não é Admin RCON!");
  530.     SendClientMessage(playerid, 0xFFFFFFAA, "|__________| Ajuda Admin |__________|");
  531.     SendClientMessage(playerid, 0xFFFFFFAA, "| /kick (ID)                        |");
  532.     SendClientMessage(playerid, 0xFFFFFFAA, "| /ban (ID)                         |");
  533.     return true;
  534. }
  535.  
  536. fcmd(stats,playerid)
  537. {
  538.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não está conetado!");
  539.     new string[64];
  540.     new money = GetPlayerMoney(playerid);
  541.     new score = GetPlayerScore(playerid);
  542.     SendClientMessage(playerid, 0xFFFFFFAA, "|__________| Stats |__________|");
  543.     format(string,64,"Score: %d", score);
  544.     SendClientMessage(playerid, 0xFFFFFFAA, string);
  545.     format(string,64,"Grana: %d", money);
  546.     SendClientMessage(playerid, 0xFFFFFFAA, string);
  547.     return true;
  548. }
  549.  
  550. fcmd(admins,playerid)
  551. {
  552.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ERRO] Você não está conetado!");
  553.     new string[64];
  554.     SendClientMessage(playerid, 0xFFFFFFAA, "|__________| Admins Online |__________|");
  555.     for(new i = 0; i < MAX_PLAYERS; i++)
  556.     {
  557.         if(IsPlayerConnected(i) && Logado[i] && IsPlayerAdmin(i))
  558.         {
  559.             GetPlayerName(i, nome, sizeof(nome));
  560.             format(string, 256, "Admin: %s", nome);
  561.             SendClientMessage(playerid, 0xFFFFFFAA, string);
  562.         }
  563.     }
  564.     return 1;
  565. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement