Advertisement
Guest User

Registration by Печеня

a guest
May 24th, 2013
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.20 KB | None | 0 0
  1. /*
  2. Автор - Печенега
  3. Просьба не крысить
  4. Специально для павно.ру
  5. */
  6.  
  7. #include <a_samp>  // Оффициальный инклуд сампа!
  8. #include <a_mysql> // Инклуд MySQL R8
  9.  
  10. // Тут меняете на своё
  11. #define TABLE_ACCOUNTS                                      "acc"               // Таблица MySQL
  12. #define MySQL_Host                                          "localhost"         // Адрес MySQL
  13. #define MySQL_User                                          "root"              // Имя пользователя MySQL
  14. #define MySQL_DataBase                                      "database"          // Имя таблицы MySQL
  15. #define MySQL_Password                                      ""                  // Пароль от пользователя
  16. // Диалоги
  17. #define D_NULL                                              0
  18. #define D_LOGIN                                             1
  19. #define D_REG                                               2
  20. // Форварды
  21. forward LoadAccountData(playerid);
  22. forward CheckRegistration(playerid);
  23. // Энум (pInfo)
  24. enum PlayerData
  25. {
  26.     pName[MAX_PLAYER_NAME],
  27.     pPass[64],
  28.     pModel,
  29.     pCash,
  30.     pBank
  31. };
  32. // New's
  33. new PlayerInfo[MAX_PLAYERS][PlayerData];
  34. new Query[300];
  35. new string[300];
  36. new Handle;
  37.  
  38. main()
  39. {
  40.     print("\n Регистрация от Печени");
  41.     print("\n Сделано специально для www.Pawno.Ru");
  42.     print("\n Скайп: Kirill_Vindo\n");
  43. }
  44.  
  45. public OnGameModeInit()
  46. {
  47.     mysql_debug(1);
  48.     SetGameModeText("Registration by Печеня");
  49.     Handle = mysql_connect(MySQL_Host, MySQL_User, MySQL_DataBase, MySQL_Password);\
  50.     mysql_set_charset("cp1251_general_ci");
  51.     return 1;
  52. }
  53.  
  54. public OnGameModeExit()
  55. {
  56.     for(new i; i < GetMaxPlayers(); i++) SavePlayer(i);
  57.     return 1;
  58. }
  59.  
  60. public OnPlayerRequestClass(playerid, classid)
  61. {
  62.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  63.     GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
  64.     SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pModel],1285.0634,-1329.5110,13.5472, 108.1,0,0,0,0,0,0);
  65.     format(Query, sizeof(Query), "SELECT * FROM `"TABLE_ACCOUNTS"` WHERE `Name` = '%e'", PlayerInfo[playerid][pName]);
  66.     mysql_function_query(Handle, Query, true, "CheckRegistration", "u", playerid);
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerConnect(playerid) return true;
  71.  
  72. public OnPlayerDisconnect(playerid, reason)
  73. {
  74.     SavePlayer(playerid);
  75.     return true;
  76. }
  77.  
  78. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  79. {
  80.     switch(dialogid)
  81.     {
  82.         case D_LOGIN:
  83.         {
  84.             if(!response) return Kick(playerid);
  85.             if(!strlen(inputtext))
  86.             {
  87.                 format(string, 150, "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
  88.                 ShowPlayerDialog(playerid, D_LOGIN, 3, "{ffffff}Авторизация", string, "Принять","Отмена");
  89.             }
  90.             cache_get_field_content(0, "Password", PlayerInfo[playerid][pPass], Handle, 124);
  91.             if(!strcmp(inputtext, PlayerInfo[playerid][pPass], true)) LoadAccount(playerid);
  92.             else return Kick(playerid);
  93.         }
  94.         case D_REG:
  95.         {
  96.             if(!response) return Kick(playerid);
  97.             if(!strlen(inputtext))
  98.             {
  99.                 format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль", PlayerInfo[playerid][pName]);
  100.                 ShowPlayerDialog(playerid, D_LOGIN, 3, "{ffffff}Регистация", string, "Принять","Отмена");
  101.             }
  102.             strmid(PlayerInfo[playerid][pPass], inputtext, 0, strlen(inputtext), 32);
  103.             CreateAccount(playerid, PlayerInfo[playerid][pPass]);
  104.             SendClientMessage(playerid, -1, "Вы удачно зарегистрировались!");
  105.         }
  106.     }
  107.     return 1;
  108. }
  109.  
  110. public LoadAccountData(playerid)
  111. {
  112.     new rows, fields;
  113.     cache_get_data(rows, fields);
  114.     if(rows)
  115.     {
  116.         PlayerInfo[playerid][pModel] = cache_get_field_int(0, "Skin", Handle);
  117.         PlayerInfo[playerid][pCash] = cache_get_field_int(0, "Cash", Handle);
  118.         PlayerInfo[playerid][pBank] = cache_get_field_int(0, "Bank", Handle);
  119.         GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
  120.     }
  121.     return true;
  122. }
  123.  
  124. stock SavePlayer(playerid)
  125. {
  126.     format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNTS" SET `Skin` = '%d' `Cash` = '%d' `Bank` = '%d' WHERE `Name` = '%e'",
  127.     PlayerInfo[playerid][pModel], PlayerInfo[playerid][pCash], PlayerInfo[playerid][pBank], PlayerInfo[playerid][pName]);
  128.     mysql_function_query(Handle, Query, false, "", "");
  129.     return true;
  130. }
  131.  
  132. public CheckRegistration(playerid)
  133. {
  134.     new rows, fields;
  135.     cache_get_data(rows, fields);
  136.     if(rows)
  137.     {
  138.         format(string, sizeof(string), "Мы нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш пароль",PlayerInfo[playerid][pName]);
  139.         ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
  140.         SendClientMessage(playerid, 0xffffff00, "Введите ваш пароль который вы вводили в регистрации!");
  141.     }
  142.     else
  143.     {
  144.         format(string, sizeof(string), "Мы не нашли вас в нашей базе данных,\n * Ваш логин: %s\nВведите ваш новый пароль",PlayerInfo[playerid][pName]);
  145.         ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Авторизация", string, "Выбрать", "Отмена");
  146.         SendClientMessage(playerid, 0xffffff00, "Введите пароль который вы хотите дать своему персонажу!");
  147.     }
  148.     return true;
  149. }
  150.  
  151. stock LoadAccount(playerid)
  152. {
  153.     format(Query,sizeof(Query), "SELECT * FROM "TABLE_ACCOUNTS" WHERE `name` = '%e' LIMIT 1",PlayerInfo[playerid][pName]);
  154.     return mysql_function_query(Handle, Query, true, "LoadAccountData", "i", playerid);
  155. }
  156.  
  157. stock CreateAccount(playerid, pass[])
  158. {
  159.     format(Query, sizeof(Query), "INSERT INTO "TABLE_ACCOUNTS" (`Name`, `Password`, `Skin`, `Cash`, `Bank`) VALUES \
  160.     ('%s', '%s', '%d', '%d', '%d')", PlayerInfo[playerid][pName], pass, 23, 0, 0);
  161.     mysql_function_query(Handle, Query, false, "", "");
  162.     SpawnPlayer(playerid);
  163.     return true;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement