ZiGGi

MySQL Register System v1.0

May 2nd, 2011
653
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.99 KB | None | 0 0
  1. //
  2. //*-- MySQL Register System
  3. //*-- Made by ZiGGi
  4. //
  5.  
  6. #include <a_samp>
  7. #include <a_sampmysql>
  8.  
  9. #define MAX_STRING      128
  10. #define MAX_QUERY       512
  11. #define MAX_RESULT      1024
  12. #define player_RegLog_DialogID 0
  13.  
  14. #define MySQL_HOST      "127.0.0.1"
  15. #define MySQL_USER      "root"
  16. #define MySQL_DATABASE      "samp-players"
  17. #define MySQL_PASS      ""
  18.  
  19. #define PlayerTable "players"
  20.  
  21. #define COLOR_WHITE 0xFFFFFFAA
  22.  
  23. new result[MAX_RESULT],query[MAX_QUERY];
  24.  
  25. enum pInfo
  26. {
  27.     pPass[MAX_STRING],
  28.     bool:pIsLogin,
  29.     pKills,
  30.     pDeaths,
  31.     pCash,
  32. };
  33. new PlayerInfo[MAX_PLAYERS][pInfo];
  34.  
  35. public OnFilterScriptInit()
  36. {
  37.     samp_mysql_connect(MySQL_HOST, MySQL_USER, MySQL_PASS);
  38.     samp_mysql_select_db(MySQL_DATABASE);
  39.     return 1;
  40. }
  41.  
  42. public OnPlayerConnect(playerid)
  43. {
  44.     PlayerInfo[playerid][pIsLogin] = false;
  45.     ShowRegLogDialog(playerid);
  46.     return 1;
  47. }
  48.  
  49. public OnPlayerDisconnect(playerid, reason)
  50. {
  51.     MySQL_Player_Update(playerid);
  52.     return 1;
  53. }
  54.  
  55. public OnPlayerDeath(playerid, killerid, reason)
  56. {
  57.     PlayerInfo[killerid][pKills]++;
  58.     PlayerInfo[playerid][pDeaths]++;
  59.     return 1;
  60. }
  61.  
  62. public OnPlayerCommandText(playerid, cmdtext[])
  63. {
  64.     new string[MAX_STRING];
  65.     if(!strcmp(cmdtext,"/stats",true))
  66.     {
  67.         format(string,sizeof(string),"Убийств: %d, Смертей: %d, Денег: %d",PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pCash]);
  68.         SendClientMessage(playerid,COLOR_WHITE,string);
  69.         return 1;
  70.     }
  71.     return 0;
  72. }
  73.  
  74. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  75. {
  76.     if(dialogid == player_RegLog_DialogID)
  77.     {
  78.         if(response)
  79.         {
  80.             if(!MySQL_Player_Exist(playerid) || !strlen(inputtext))
  81.             {
  82.                 SendClientMessage(playerid,COLOR_WHITE,"Этот аккаунт не зарегистрирован или вы не ввели пароль.");
  83.                 return ShowRegLogDialog(playerid);
  84.             }
  85.             format(query,sizeof(query), "SELECT * FROM `"PlayerTable"` WHERE `Name` = '%s' AND `Password` = '%s'", oGetPlayerName(playerid),inputtext);
  86.             samp_mysql_query(query);
  87.             samp_mysql_store_result();
  88.             if(samp_mysql_fetch_row(result))
  89.             {
  90.                 new tmp[MAX_STRING];
  91.                 format(query,sizeof(query),"SELECT * FROM `"PlayerTable"` WHERE `Name` = '%s'",oGetPlayerName(playerid));
  92.                 samp_mysql_query(query);
  93.                 samp_mysql_store_result();
  94.                 if(!samp_mysql_fetch_row(result)) return 0;
  95.                 samp_mysql_get_field("Money", tmp);
  96.                 PlayerInfo[playerid][pCash] = strval(tmp);
  97.                 oSetPlayerMoney(playerid,PlayerInfo[playerid][pCash]);
  98.                 samp_mysql_get_field("Kills", tmp);
  99.                 PlayerInfo[playerid][pKills] = strval(tmp);
  100.                 samp_mysql_get_field("Deaths", tmp);
  101.                 PlayerInfo[playerid][pDeaths] = strval(tmp);
  102.  
  103.                 PlayerInfo[playerid][pIsLogin] = true;
  104.                 SendClientMessage(playerid,COLOR_WHITE,"Вы успешно вошли.");
  105.                 return 1;
  106.             }
  107.             else
  108.             {
  109.                 SendClientMessage(playerid,COLOR_WHITE,"Неправильный пароль.");
  110.                 return ShowRegLogDialog(playerid);
  111.             }
  112.         }
  113.         else
  114.         {
  115.             if(MySQL_Player_Exist(playerid) || !strlen(inputtext))
  116.             {
  117.                 SendClientMessage(playerid,COLOR_WHITE,"Этот аккаунт уже зарегистрирован или вы не ввели пароль.");
  118.                 return ShowRegLogDialog(playerid);
  119.             }
  120.             format(query,sizeof(query), "INSERT INTO `"PlayerTable"` (Name, Password) VALUES ('%s', '%s')", oGetPlayerName(playerid), inputtext);
  121.             samp_mysql_query(query);
  122.             SendClientMessage(playerid,COLOR_WHITE,"Регистрация прошла успешно!");
  123.             return ShowRegLogDialog(playerid);
  124.         }
  125.     }
  126.     return 1;
  127. }
  128.  
  129. stock ShowRegLogDialog(playerid)
  130. {
  131.     return ShowPlayerDialog(playerid,player_RegLog_DialogID,DIALOG_STYLE_INPUT,"Вход в аккаунт","Введите пароль чтобы войти или зарегистрировать аккаунт.","Войти","Зарегать");
  132. }
  133.  
  134. stock MySQL_Player_Exist(playerid)
  135. {
  136.     format(query,sizeof(query), "SELECT * FROM `"PlayerTable"` WHERE `Name` = '%s'", oGetPlayerName(playerid));
  137.     samp_mysql_query(query);
  138.     samp_mysql_store_result();
  139.     if(!samp_mysql_fetch_row(result)) return 0;
  140.     return 1;
  141. }
  142.  
  143. stock MySQL_Player_Update(playerid)
  144. {
  145.     if(PlayerInfo[playerid][pIsLogin] == false) return 1;
  146.     new src[MAX_STRING];
  147.     format(query,sizeof(query),"UPDATE `"PlayerTable"` SET ");
  148.     format(src,sizeof(src),"`Money`=%d,",PlayerInfo[playerid][pCash]);
  149.     strcat(query,src,sizeof(query));
  150.     format(src,sizeof(src),"`Kills`=%d,",PlayerInfo[playerid][pKills]);
  151.     strcat(query,src,sizeof(query));
  152.     format(src,sizeof(src),"`Deaths`=%d",PlayerInfo[playerid][pDeaths]);
  153.     strcat(query,src,sizeof(query));
  154.     format(src,sizeof(src)," WHERE `Name`='%s'",oGetPlayerName(playerid));
  155.     strcat(query,src,sizeof(query));
  156.     samp_mysql_query(query);
  157.     return 1;
  158. }
  159.  
  160. stock oGetPlayerName(playerid)
  161. {
  162.     new name[MAX_PLAYER_NAME];
  163.     GetPlayerName(playerid,name,sizeof(name));
  164.     return name;
  165. }
  166.  
  167. stock oSetPlayerMoney(playerid, money)
  168. {
  169.     PlayerInfo[playerid][pCash] = money;
  170.     ResetPlayerMoney(playerid);
  171.     return GivePlayerMoney(playerid,money);
  172. }
Advertisement
Add Comment
Please, Sign In to add comment