Advertisement
Guest User

Untitled

a guest
Nov 1st, 2016
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //------ [ Инклуды ]
  2. #include <a_samp>
  3. #include <mxINI>
  4. //------ [ Макросы ]
  5. #define pNick(%1)                   pInfo[%1][pName]
  6. #define IsPlayerAuthorized(%0)      player_authorized{%0}
  7. #define SetPlayerAuthorized(%0,%1)      player_authorized{%0} = %1
  8.  
  9. //------ [ Enum's ]
  10. enum e_PLAYER_INFO
  11. {
  12.     pName[MAX_PLAYER_NAME],
  13.     pMoney
  14. };
  15. new pInfo[MAX_PLAYERS][e_PLAYER_INFO];
  16. new const NULL_pInfo[e_PLAYER_INFO];
  17.  
  18. enum e_DIALOG_ID
  19. {
  20.     dRegister,
  21.     dLogin
  22. };
  23.  
  24. //------ [ Переменные ]
  25. new player_authorized[MAX_PLAYERS char];
  26.  
  27. new const account_direction[] = "users/%s.ini";
  28.  
  29. //------ [ Forward's ]
  30. //...
  31.  
  32. //------ [ Прочее ]
  33. main()
  34. {
  35.     print("\n----------------------------------");
  36.     print("           Мод запущен            ");
  37.     print("----------------------------------\n");
  38. }
  39. //==============================================================================
  40. //============================== [ Паблики ] ===================================
  41. //==============================================================================
  42. public OnGameModeInit()
  43. {
  44.     SetGameModeText("ModeName");
  45.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  46.     AddPlayerClass(1, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  47.     AddPlayerClass(2, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  48.     return 1;
  49. }
  50.  
  51. public OnGameModeExit()
  52. {
  53.     return 1;
  54. }
  55.  
  56. public OnPlayerRequestClass(playerid, classid)
  57. {
  58.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  59.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  60.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerConnect(playerid)
  65. {
  66.     GetPlayerName(playerid, pNick(playerid), MAX_PLAYER_NAME);
  67.     new account_string[37];
  68.     format(account_string, sizeof(account_string), account_direction, pNick(playerid));
  69.     if(!fexist(account_string))
  70.     {
  71.         ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация", "Данный аккаунт не зарегистрирован на нашем сервере. Для регистрации введите пароль:", "Далее", "Выход");
  72.     }
  73.     else
  74.     {
  75.         ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "Данный аккаунт зарегистрирован на нашем сервере. Для авторизации введите пароль:", "Далее", "Выход");
  76.     }
  77.     return 1;
  78. }
  79.  
  80. public OnPlayerDisconnect(playerid)
  81. {
  82.     SavePlayer(playerid);
  83.     //Тут остальной код
  84.     return 1;
  85. }
  86.  
  87. public OnPlayerSpawn(playerid)
  88. {
  89.     if(!IsPlayerAuthorized(playerid))
  90.     {
  91.         new account[10+MAX_PLAYER_NAME-4+1];
  92.         format(account, sizeof(account), account_direction, pNick(playerid));
  93.         if(!fexist(account))
  94.         {
  95.             ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация", "Данный аккаунт не зарегистрирован на нашем сервере. Для регистрации введите пароль:", "Далее", "Выход");
  96.         }
  97.         else
  98.         {
  99.             ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "Данный аккаунт зарегистрирован на нашем сервере. Для авторизации введите пароль:", "Далее", "Выход");
  100.         }
  101.     }
  102.     //Тут остальной код
  103.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  104.     return 1;
  105. }
  106.  
  107. public OnPlayerDeath(playerid, killerid, reason)
  108. {
  109.     return 1;
  110. }
  111.  
  112. public OnVehicleSpawn(vehicleid)
  113. {
  114.     return 1;
  115. }
  116.  
  117. public OnVehicleDeath(vehicleid, killerid)
  118. {
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerText(playerid, text[])
  123. {
  124.     if(!IsPlayerAuthorized(playerid))
  125.     {
  126.         SendClientMessage(playerid, 0xFF0000FF, "Вы не авторизированы!");
  127.         return 0;
  128.     }
  129.     //Тут остальной код
  130.     return 1;
  131. }
  132.  
  133. public OnPlayerCommandText(playerid, cmdtext[])
  134. {
  135.     if(!IsPlayerAuthorized(playerid)) return SendClientMessage(playerid,0xFF0000FF,"Вы не авторизированы!");
  136.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  137.     {
  138.         // Do something here
  139.         return 1;
  140.     }
  141.     return 0;
  142. }
  143.  
  144. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  145. {
  146.     return 1;
  147. }
  148.  
  149. public OnPlayerExitVehicle(playerid, vehicleid)
  150. {
  151.     return 1;
  152. }
  153.  
  154. public OnPlayerStateChange(playerid, newstate, oldstate)
  155. {
  156.     return 1;
  157. }
  158.  
  159. public OnPlayerEnterCheckpoint(playerid)
  160. {
  161.     return 1;
  162. }
  163.  
  164. public OnPlayerLeaveCheckpoint(playerid)
  165. {
  166.     return 1;
  167. }
  168.  
  169. public OnPlayerEnterRaceCheckpoint(playerid)
  170. {
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerLeaveRaceCheckpoint(playerid)
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnRconCommand(cmd[])
  180. {
  181.     return 1;
  182. }
  183.  
  184. public OnPlayerRequestSpawn(playerid)
  185. {
  186.     return 1;
  187. }
  188.  
  189. public OnObjectMoved(objectid)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnPlayerObjectMoved(playerid, objectid)
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerPickUpPickup(playerid, pickupid)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnVehicleMod(playerid, vehicleid, componentid)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnPlayerSelectedMenuRow(playerid, row)
  220. {
  221.     return 1;
  222. }
  223.  
  224. public OnPlayerExitedMenu(playerid)
  225. {
  226.     return 1;
  227. }
  228.  
  229. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  230. {
  231.     return 1;
  232. }
  233.  
  234. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  235. {
  236.     return 1;
  237. }
  238.  
  239. public OnRconLoginAttempt(ip[], password[], success)
  240. {
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerUpdate(playerid)
  245. {
  246.     return 1;
  247. }
  248.  
  249. public OnPlayerStreamIn(playerid, forplayerid)
  250. {
  251.     return 1;
  252. }
  253.  
  254. public OnPlayerStreamOut(playerid, forplayerid)
  255. {
  256.     return 1;
  257. }
  258.  
  259. public OnVehicleStreamIn(vehicleid, forplayerid)
  260. {
  261.     return 1;
  262. }
  263.  
  264. public OnVehicleStreamOut(vehicleid, forplayerid)
  265. {
  266.     return 1;
  267. }
  268.  
  269. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  270. {
  271.     switch(dialogid)
  272.     {
  273.         case dRegister:
  274.         {
  275.             if(!response)
  276.                 return Kick(playerid);
  277.             if(!strlen(inputtext))
  278.                 return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "{FF0000}Ошибка", "Вы не ввели пароль. Без пароля регистрация невозможна!\nВведите ваш пароль:", "Далее", "Выход");
  279.  
  280.             new account[10+MAX_PLAYER_NAME-4+1];
  281.             format(account, sizeof(account), account_direction, pNick(playerid));
  282.             if(fexist(account))
  283.                 ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "Данный аккаунт зарегистрирован на нашем сервере. Для авторизации введите пароль:", "Далее", "Выход");
  284.             else
  285.                 CreateAccount(playerid, inputtext);
  286.             return 1;
  287.         }
  288.         case dLogin:
  289.         {
  290.             if(!response)
  291.                 return Kick(playerid);
  292.  
  293.             if(!strlen(inputtext))
  294.                 return ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "{FF0000}Ошибка", "Для игры на сервере Вы должны авторизироваться!\nВведите ваш пароль:", "Далее", "Выход");
  295.  
  296.             new account[10+MAX_PLAYER_NAME-4+1];
  297.             format(account, sizeof(account), account_direction, pNick(playerid));
  298.             if(!fexist(account))
  299.                 return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация", "Данный аккаунт не зарегистрирован на нашем сервере. Для регистрации введите пароль:", "Далее", "Выход");
  300.  
  301.             new password[64];
  302.             new iniFile = ini_openFile(account);
  303.             ini_getString(iniFile, "Пароль",password);
  304.             ini_closeFile(iniFile);
  305.             if(!strcmp(inputtext, password, false))
  306.                 OnPlayerLogin(playerid);
  307.             else
  308.                 ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "{FF0000}Ошибка", "Вы ввели неверный пароль! Повторите попытку\nВведите ваш пароль:", "Далее", "Выход");
  309.             return 1;
  310.         }
  311.     }
  312.     return 1;
  313. }
  314.  
  315. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  316. {
  317.     return 1;
  318. }
  319. //==============================================================================
  320. //============================== [ Stock's ] ===================================
  321. //==============================================================================
  322. stock CreateAccount(playerid, password[])
  323. {
  324.     new account[10+MAX_PLAYER_NAME-4+1];
  325.     format(account, sizeof(account), account_direction, pNick(playerid));
  326.  
  327.     if(fexist(account))
  328.         return ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "Данный аккаунт зарегистрирован. Введите пароль:", "Далее", "Выход");
  329.  
  330.     new iniFile = ini_createFile(account);
  331.     if(iniFile < 0) ini_openFile (account);
  332.     {
  333.         ini_setString(iniFile,"Пароль",password);//О "ini_setString" и "ini_setInteger" написано в теме, которая описывает инклуд mxINI (выше ссылка)
  334.         ini_setInteger(iniFile, "Деньги", 10000);
  335.         ini_closeFile(iniFile);
  336.         OnPlayerLogin(playerid);
  337.     }
  338.     return 1;
  339. }
  340.  
  341. stock OnPlayerLogin(playerid)
  342. {
  343.     new account[10+MAX_PLAYER_NAME-4+1];
  344.     format(account, sizeof(account), account_direction, pNick(playerid));
  345.  
  346.     new iniFile = ini_openFile(account);
  347.     ini_getInteger(iniFile,"Деньги", pInfo[playerid][pMoney]);
  348.     ini_closeFile(iniFile);
  349.  
  350.     ResetPlayerMoney(playerid);
  351.     GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
  352.  
  353.     SetPlayerAuthorized(playerid, true);
  354.     return 1;
  355. }
  356.  
  357. stock SavePlayer(playerid)
  358. {
  359.     new account[10+MAX_PLAYER_NAME-4+1];
  360.     format(account, sizeof(account), account_direction, pNick(playerid));
  361.  
  362.     new iniFile = ini_openFile(account);
  363.     ini_setInteger(iniFile, "Деньги", GetPlayerMoney(playerid));
  364.     ini_closeFile(iniFile);
  365.  
  366.     pInfo[playerid] = NULL_pInfo;
  367.     return 1;
  368. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement