Advertisement
Guest User

Untitled

a guest
Jun 17th, 2014
323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.73 KB | None | 0 0
  1. #include <a_mysql>
  2.  
  3. // ------------ Данные сервера в клиенте
  4. #define mysql_host "localhost"
  5. #define mysql_user "root"
  6. #define mysql_base "newr34"
  7. #define mysql_pass ""
  8.  
  9. // ----------- Прочее
  10. #define serverNmae "MySQL R8 R34" // название
  11. #define BASE_USERS "users" // название базы данных
  12. #define isValidPass 30 // валидность пароля
  13. #define getpl(%0) plname[%0]
  14. #define send(%0,%1) SendClientMessage(%0, -1, %1)
  15.  
  16. // ----------- PVars
  17. #define SPVI SetPVarInt
  18. #define SPVS SetPVarString
  19. #define SPVF SetPVarFloat
  20. #define GPVI GetPVarInt
  21. #define GPVS GetPVarString
  22. #define GPVF GetPVarFloat
  23.  
  24. // ----------- Стили диалогов
  25. #define ds_msg 0
  26. #define ds_input 1
  27. #define ds_list 2
  28. #define ds_pass 3
  29.  
  30.  
  31. new plname[MAX_PLAYERS][MAX_PLAYER_NAME]; // записываем ник игрока при коннекте
  32.  
  33. enum plInfo
  34. {
  35.     ORM:ORMID,
  36.     plID, // ид аккаунта
  37.     name[MAX_PLAYER_NAME], // ник игрока
  38.     pass[isValidPass], // пароль игрока
  39.     level, // скин игрока
  40. }
  41. new Pi[MAX_PLAYERS][plInfo];
  42.  
  43. public OnGameModeInit()
  44. {
  45.     /* MySQL R8 */
  46.     mysql_connect(mysql_host, mysql_user, mysql_base, mysql_pass);
  47.     mysql_log(LOG_DEBUG);
  48.     /* MySQL R8 */
  49.     SetGameModeText("MySQL R8 R34");
  50.     AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
  51.     return 1;
  52. }
  53.  
  54. public OnPlayerRequestClass(playerid, classid)
  55. {
  56.     SetPlayerVirtualWorld(playerid, playerid), SetPlayerInterior(playerid, 0);
  57.     SetPlayerCameraPos(playerid, 1925.9149,-841.7464,150.9362);
  58.     SetPlayerCameraLookAt(playerid, 1595.1147,-1173.6073,167.9245);
  59.     SetPlayerPos(playerid, 1684.9298,-1216.7500,167.5547);
  60.     SetPlayerFacingAngle(playerid, 266.1046);
  61.     for(new i = 0; i < 21; i++) send(playerid, "");
  62.     return 1;
  63. }
  64.  
  65. public OnPlayerConnect(playerid)
  66. {
  67.     GetPlayerName(playerid, plname[playerid], MAX_PLAYER_NAME);
  68.     for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0;  // обнуляем числа при коннекте
  69.  
  70.     GetPlayerName(playerid, Pi[playerid][name], MAX_PLAYER_NAME);
  71.     new ORM:ormid = Pi[playerid][ORMID] = orm_create(BASE_USERS);
  72.     orm_addvar_int(ormid, Pi[playerid][plID], "id");
  73.     orm_addvar_string(ormid, Pi[playerid][name], MAX_PLAYER_NAME+1, "name");
  74.     orm_addvar_string(ormid, Pi[playerid][pass], isValidPass, "pass");
  75.     orm_addvar_int(ormid, Pi[playerid][level], "level");
  76.      
  77.     orm_setkey(ormid, "name"), orm_select(ormid, "onPlayerLoadUsers", "d", playerid); // загружаем все параметры с бд
  78.     return 1;
  79. }
  80.  
  81. public OnPlayerDisconnect(playerid, reason)
  82. {
  83.     if(GPVI(playerid, "isPlAutothed")) // если игрок авторизирован
  84.     {
  85.         orm_update(Pi[playerid][ORMID]); // сохраняет все параметры игрока при дисконнекте
  86.         for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0; // обнуляем числа при дисконекте
  87.         orm_destroy(Pi[playerid][ORMID]);
  88.     }
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerSpawn(playerid)
  93. {
  94.     new str[50];
  95.     if(!GPVI(playerid, "isPlAutothed")) return 1;
  96.     SetPlayerScore(playerid, Pi[playerid][level]);
  97.     SetPlayerSkin(playerid, 3), SetPlayerColor(playerid, -1);
  98.     SetPlayerPos(playerid, 1639.0121,-2239.9082,13.4998), SetPlayerFacingAngle(playerid, 129.8660);
  99.     SetPlayerInterior(playerid, 0), SetPlayerVirtualWorld(playerid, 0);
  100.     format(str, 50, "{3fda07}~ Добро пожаловать в наш штат, %s.", getpl(playerid)), send(playerid, str);
  101.     return 1;
  102. }
  103.  
  104. public OnPlayerText(playerid, text[])
  105. {
  106.     if(!GPVI(playerid, "isPlAutothed")) { send(playerid, "{ff6347}** Вы не авторизированы на сервере."); return 0; }
  107.     return 1;
  108. }
  109.  
  110. public OnPlayerUpdate(playerid)
  111. {
  112.     if(!GPVI(playerid, "isPlAutothed")) return 1;
  113.     return 1;
  114. }
  115.  
  116. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  117. {
  118.     switch(dialogid)
  119.     {
  120.         case 1:
  121.         {
  122.             if(!response) return Kick(playerid);
  123.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  124.             if(!strcmp(inputtext, Pi[playerid][pass], false, isValidPass)) // спавним игрока при корректном вводе пароля
  125.             {
  126.                 for(new i = 0; i < 40; i++) send(playerid, "");
  127.                 SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
  128.               }
  129.             else return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  130.             return 1;
  131.         }
  132.         case 2:
  133.         {
  134.             if(!response) return Kick(playerid);
  135.             if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n   нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
  136.             onPlayerRegister(playerid, inputtext);
  137.             return 1;
  138.         }
  139.     }
  140.     return 1;
  141. }
  142.  
  143.  
  144. stock onPlayerRegister(playerid, password[])
  145. {
  146.     format(Pi[playerid][name], MAX_PLAYER_NAME, "%s", getpl(playerid)); // записываем ник при реестре
  147.     format(Pi[playerid][pass], isValidPass, "%s", password);  // записываем пароль при реестре
  148.  
  149.     Pi[playerid][level] = 1;
  150.     orm_insert(Pi[playerid][ORMID], "onPlayerRegisterCallback", "d", playerid);
  151.     return 1;
  152. }
  153.  
  154. forward onPlayerLoadUsers(playerid);
  155. public onPlayerLoadUsers(playerid)
  156. {
  157.     switch(orm_errno(Pi[playerid][ORMID]))
  158.     {
  159.         case ERROR_OK: ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  160.         case ERROR_NO_DATA: ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n   нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
  161.     }
  162.     orm_setkey(Pi[playerid][ORMID], "id");
  163.     return 1;
  164. }
  165.  
  166. forward onPlayerRegisterCallback(playerid);
  167. public onPlayerRegisterCallback(playerid) return SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement