Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.68 KB | None | 0 0
  1. //=================================Инклуды================================//
  2. #include <a_samp>
  3. #include <streamer>
  4. #include <dc_cmd>
  5. #include <a_mysql>
  6. #include <sscanf2>
  7. #include <mxdate>
  8. //========================================================================//
  9. //=================================Дефайны================================//
  10. #define SERVER_NAME "Exclusive RolePlay 1 | First Server"
  11. //------------------------------Дефайны функций---------------------------//
  12. #define SCM SendClientMessage
  13. #define SPD ShowPlayerDialog
  14. #define DSL DIALOG_STYLE_LIST
  15. #define DSI DIALOG_STYLE_INPUT
  16. #define DSM DIALOG_STYLE_MSGBOX
  17. #define DSP DIALOG_STYLE_PASSWORD
  18. //------------------------------------------------------------------------//
  19. //-------------------------------Дефайны цвета----------------------------//
  20. #define COLOR_RED 0xFF0000FF
  21. #define COLOR_ORANGE 0xFFBB3DFF
  22. //------------------------------------------------------------------------//
  23. //--------------------------------База данных-----------------------------//
  24. #define MYSQL_DEBUG 1
  25. #define MYSQL_HOST "localhost"
  26. #define MYSQL_USER "root"
  27. #define MYSQL_DATABASE "roleplay"
  28. #define MYSQL_PASSWORD ""
  29. //------------------------------------------------------------------------//
  30. //========================================================================//
  31. //================================Переменные==============================//
  32. new dbHandle;
  33. //-------------------------Переменные Входа/Выхода------------------------//
  34. new vhodmeriya;
  35. //------------------------------------------------------------------------//
  36. //--------------------------Переменные текстдравов------------------------//
  37. new Text:logotip;
  38. //------------------------------------------------------------------------//
  39. //-----------------------------Правила сервера----------------------------//
  40. new pravila[] =
  41. "{FFDA1F}1. Основное{FFFFFF}\n"\
  42. "-Запрещено использовать любые читы, трейнеры, моды или CLEO скрипты\n"\
  43. "-Запрещен DeathMatch (DM) - убийство и нанесение вреда игрокам без причины\n"\
  44. "-Запрещено убивать игроков на спавне(на месте, где они появляются)\n"\
  45. "-Запрещены убийства путем наезда на него или стрельба из авто\n"\
  46. "-Запрещено уходить на паузу в целяъ спасения от нападающих\n"\
  47. "-Запрещено использование возможностей сервера для создания неудобств другим игрокам\n",
  48. pravila_1[] =
  49. "{FFDA1F}2. Процесс общения{FFFFFF}\n"\
  50. "-Запрещен мат, оскорбление других игроков\n"\
  51. "-Запрещены угрозы другим игрокам(не относящиеся к игровому процессу)\n"\
  52. "-Запрещено писать транслитом(например ""ya zawel na server"")\n"\
  53. "-Запрещена любая реклама сторонних ресурсов\n"\
  54. "-Запрещено флудить(часто повторять одинаковые фразы, или фразы без смысловой нагрузки)\n",
  55. pravila_2[] =
  56. "{FFDA1F}3. Администрация{FFFFFF}\n"\
  57. "-Необходимо сообщать администрации сервера о любых случаях нарушения данных правил\n"\
  58. "-Администрация самостоятельно выбирает штрафные санкции для каждого конкретного случая\n"\
  59. "-Санкции могут применяться сразу после нарушения или через время(например, впоследствии поступления жалобы)\n"\
  60. "-Если штрафная санкция была применена к вам ошибочно, свяжитесь с администрацией";
  61. //------------------------------------------------------------------------//
  62. //========================================================================//
  63.  
  64. enum player
  65. {
  66. ID,
  67. EMAIL[32],
  68. SEX,
  69. ADMIN,
  70. }
  71. new player_info[MAX_PLAYERS][player];
  72.  
  73. main()
  74. {
  75.  
  76. }
  77.  
  78. public OnGameModeInit()
  79. {
  80. DisableInteriorEnterExits();
  81. EnableStuntBonusForAll(0);
  82. SetGameModeText("Exclusive RP Russian");
  83. SendRconCommand("hostname "SERVER_NAME"");
  84. mysql_connects();
  85. pravila[sizeof(pravila)-1] = '\n';
  86. pravila_1[sizeof(pravila_1)-1] = '\n';
  87. pravila_2[sizeof(pravila_2)-1] = '\0';
  88. //----------------------------------Пикапы--------------------------------//
  89. vhodmeriya = CreatePickup(1318, 23, 1481.0325,-1772.3140,18.7958,0);
  90. //------------------------------------------------------------------------//
  91. //--------------------------------Текстдравы------------------------------//
  92. logotip = TextDrawCreate(546.500000, 8.166695, "exclusive role-play");
  93. TextDrawLetterSize(logotip, 0.449999, 1.600000);
  94. TextDrawAlignment(logotip, 1);
  95. TextDrawColor(logotip, -1728052993);
  96. TextDrawUseBox(logotip, true);
  97. TextDrawBoxColor(logotip, 0);
  98. TextDrawSetShadow(logotip, 1);
  99. TextDrawSetOutline(logotip, 0);
  100. TextDrawBackgroundColor(logotip, 51);
  101. TextDrawFont(logotip, 3);
  102. TextDrawSetProportional(logotip, 1);
  103. //------------------------------------------------------------------------//
  104. //----------------------------------Машины--------------------------------//
  105. CreateVehicle(411,1803.5603,-1903.3192,13.1278,88.9795,6,6,600,0);
  106. CreateVehicle(411,1803.2970,-1908.2898,13.1253,89.3806,7,7,600,0);
  107. //------------------------------------------------------------------------//
  108. return 1;
  109. }
  110. public OnGameModeExit()
  111. {
  112. return 1;
  113. }
  114. public OnPlayerRequestClass(playerid, classid)
  115. {
  116. return 1;
  117. }
  118. public OnPlayerConnect(playerid)
  119. {
  120. SCM(playerid, 0x038EFFFF, "Добро пожаловать на Exclusive RolePlay!");
  121. TextDrawShowForPlayer(playerid, logotip);
  122. SetTimerEx("player_connect", 250, false, "i", playerid);
  123. return 1;
  124. }
  125. public OnPlayerDisconnect(playerid, reason)
  126. {
  127. save_account(playerid);
  128. return 1;
  129. }
  130. public OnPlayerSpawn(playerid)
  131. {
  132. SetPlayerPos(playerid, 1760.1957,-1898.3301,13.5626);
  133. return 1;
  134. }
  135. public OnPlayerDeath(playerid, killerid, reason)
  136. {
  137. return 1;
  138. }
  139. public OnVehicleSpawn(vehicleid)
  140. {
  141. return 1;
  142. }
  143. public OnVehicleDeath(vehicleid, killerid)
  144. {
  145. return 1;
  146. }
  147. public OnPlayerText(playerid, text[])
  148. {
  149. return 1;
  150. }
  151. public OnPlayerCommandText(playerid, cmdtext[])
  152. {
  153. return 0;
  154. }
  155. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  156. {
  157. return 1;
  158. }
  159. public OnPlayerExitVehicle(playerid, vehicleid)
  160. {
  161. return 1;
  162. }
  163. public OnPlayerStateChange(playerid, newstate, oldstate)
  164. {
  165. return 1;
  166. }
  167. public OnPlayerEnterCheckpoint(playerid)
  168. {
  169. return 1;
  170. }
  171. public OnPlayerLeaveCheckpoint(playerid)
  172. {
  173. return 1;
  174. }
  175. public OnPlayerEnterRaceCheckpoint(playerid)
  176. {
  177. return 1;
  178. }
  179. public OnPlayerLeaveRaceCheckpoint(playerid)
  180. {
  181. return 1;
  182. }
  183. public OnRconCommand(cmd[])
  184. {
  185. return 1;
  186. }
  187. public OnPlayerRequestSpawn(playerid)
  188. {
  189. return 1;
  190. }
  191. public OnObjectMoved(objectid)
  192. {
  193. return 1;
  194. }
  195. public OnPlayerObjectMoved(playerid, objectid)
  196. {
  197. return 1;
  198. }
  199. public OnPlayerPickUpPickup(playerid, pickupid)
  200. {
  201. if(pickupid == vhodmeriya)
  202. {
  203. SCM(playerid, COLOR_RED, "Вы вступили в организацию [Пидоры]!");
  204. }
  205. return 1;
  206. }
  207. public OnVehicleMod(playerid, vehicleid, componentid)
  208. {
  209. return 1;
  210. }
  211. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  212. {
  213. return 1;
  214. }
  215. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  216. {
  217. return 1;
  218. }
  219. public OnPlayerSelectedMenuRow(playerid, row)
  220. {
  221. return 1;
  222. }
  223. public OnPlayerExitedMenu(playerid)
  224. {
  225. return 1;
  226. }
  227. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  228. {
  229. return 1;
  230. }
  231. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  232. {
  233. return 1;
  234. }
  235. public OnRconLoginAttempt(ip[], password[], success)
  236. {
  237. return 1;
  238. }
  239. public OnPlayerUpdate(playerid)
  240. {
  241. return 1;
  242. }
  243. public OnPlayerStreamIn(playerid, forplayerid)
  244. {
  245. return 1;
  246. }
  247. public OnPlayerStreamOut(playerid, forplayerid)
  248. {
  249. return 1;
  250. }
  251. public OnVehicleStreamIn(vehicleid, forplayerid)
  252. {
  253. return 1;
  254. }
  255. public OnVehicleStreamOut(vehicleid, forplayerid)
  256. {
  257. return 1;
  258. }
  259. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  260. {
  261. switch(dialogid)
  262. {
  263. case 1:
  264. {
  265. if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 15)
  266. {
  267. show_register(playerid);
  268. }
  269. else
  270. {
  271. new query[128], temp[15];
  272. mysql_real_escape_string(inputtext, temp);
  273. new ip[20], data[16];
  274. format(data, sizeof(data), "%s", date("%dd.%mm.%yyyy", gettime()));
  275. GetPlayerIp(playerid, ip, sizeof(ip));
  276. format(query, sizeof(query), "INSERT INTO `accounts` (`login`, `password`, `regdata`, `regip`) VALUES ('%s', '%s', '%s', '%s')", sendername(playerid), temp, data, ip);
  277. mysql_function_query(dbHandle, query, false, "", "");
  278. format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1", sendername(playerid), temp);
  279. mysql_function_query(dbHandle, query, true, "player_login", "i", playerid);
  280. SPD(playerid, 2, DSI, "{1472FF}Email", "{FFFFFF}Введите адрес вашей электронной почты\nИспользуя его, вы сможете восстановить доступ к аккаунту\nв случае взлома или если забудете пароль\n\nНа email мы вышлем ссылку в течение 14 дней Вы можете\nперейти по ней для подтверждения почты\nУбедитесь в правильности ввода и нажмите Далее", "Далее", "");
  281. }
  282. }
  283. case 2:
  284. {
  285. if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 32)
  286. {
  287. SPD(playerid, 2, DSI, "{1472FF}Email", "{FFFFFF}Введите адрес вашей электронной почты\nИспользуя его, вы сможете восстановить доступ к аккаунту\nв случае взлома или если забудете пароль\n\nНа email мы вышлем ссылку в течение 14 дней Вы можете\nперейти по ней для подтверждения почты\nУбедитесь в правильности ввода и нажмите Далее", "Далее", "");
  288. }
  289. else
  290. {
  291. new temp[32];
  292. mysql_real_escape_string(inputtext, temp);
  293. player_info[playerid][EMAIL] = temp;
  294. SPD(playerid, 3, DSI, "{1472FF}Ник пригласившего игрока", "{FFFFFF}Если Вы узнали о нашем сервере от своего друга\nкоторый тут играет, укажите его ник в поле ниже\n\n{C3FF1F}При достижении вами 4-го уровня, он получит вознаграждение", "Далее", "Пропустить");
  295. }
  296. }
  297. case 3:
  298. {
  299. if(!response)//Нет реферала
  300. {
  301. SPD(playerid, 4, DSM, "{1472FF}Exclusive RolePlay", "{FFFFFF}Вы впервые играете в GTA San Andreas Multiplayer (SAMP)?\nМы покажем вам дополнительные подсказки для вас", "Новичок", "Уже играл");
  302. }
  303. else
  304. {
  305. SPD(playerid, 4, DSM, "{1472FF}Exclusive RolePlay", "{FFFFFF}Вы впервые играете в GTA San Andreas Multiplayer (SAMP)?\nМы покажем вам дополнительные подсказки для вас", "Новичок", "Уже играл");
  306. }
  307. }
  308. case 4:
  309. {
  310. if(!response)//Уже играл
  311. {
  312. SPD(playerid, 5, DSM, "{1472FF}Выбор пола", "{FFFFFF}Выберите пол вашего персонажа","Мужской","Женский");
  313. }
  314. else//Новичок
  315. {
  316. SPD(playerid, 5, DSM, "{1472FF}Выбор пола", "{FFFFFF}Выберите пол вашего персонажа","Мужской","Женский");
  317. }
  318. }
  319. case 5:
  320. {
  321. if(!response)
  322. {
  323. player_info[playerid][SEX] = 2;//Женский пол
  324. SPD(playerid, 6, DSM, "{1472FF}Правила сервера", pravila, "Принять", "Отмена");
  325. }
  326. else
  327. {
  328. player_info[playerid][SEX] = 1;//Мужской пол
  329. SPD(playerid, 6, DSM, "{1472FF}Правила сервера", pravila, "Принять", "Отмена");
  330. }
  331. }
  332. case 6:
  333. {
  334. if(!response)
  335. {
  336. SpawnPlayer(playerid);
  337. }
  338. else
  339. {
  340. SpawnPlayer(playerid);
  341. }
  342. }
  343. }
  344. return 1;
  345. }
  346. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  347. {
  348. return 1;
  349. }
  350. //================================Форварды================================//
  351. forward player_connect(playerid);
  352. public player_connect(playerid)
  353. {
  354. new query[48+24];
  355. format(query, sizeof(query), "SELECT `id` FROM `accounts` WHERE `login` = '%s'", sendername(playerid));
  356. mysql_function_query(dbHandle, query, true, "player_check", "ii", playerid, 0);
  357. return 1;
  358. }
  359. forward player_check(playerid);
  360. public player_check(playerid)
  361. {
  362. new rows[2];
  363. cache_get_data(rows[0], rows[1]);
  364. if(rows[0]) show_login(playerid);
  365. else show_register(playerid);
  366. return 1;
  367. }
  368. forward player_login(playerid);
  369. public player_login(playerid)
  370. {
  371. new rows[2], temp[128];
  372. cache_get_data(rows[0], rows[1]);
  373. if(rows[0])
  374. {
  375. cache_get_field_content(0, "id", temp), player_info[playerid][ID] = strval(temp);
  376. cache_get_field_content(0, "email", temp), strmid(player_info[playerid][EMAIL], temp, 0, strlen(temp), 32);
  377. cache_get_field_content(0, "sex", temp), player_info[playerid][SEX] = strval(temp);
  378. cache_get_field_content(0, "admin", temp), player_info[playerid][ADMIN] = strval(temp);
  379. }
  380. }
  381. //========================================================================//
  382. //==================================Стоки=================================//
  383. stock sendername(playerid)
  384. {
  385. new novoeimya[MAX_PLAYER_NAME];
  386. GetPlayerName(playerid, novoeimya, sizeof(novoeimya));
  387. return novoeimya;
  388. }
  389. stock mysql_connects()
  390. {
  391. dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
  392. switch(mysql_errno())
  393. {
  394. case 0: print("Подключение к базе данных MYSQL успешно");
  395. default: print("Подключение к базе данных MYSQL НЕ успешно");
  396. }
  397. mysql_log(LOG_ERROR | LOG_WARNING);
  398. mysql_set_charset("cp1251");
  399. }
  400. stock show_login(playerid)
  401. {
  402. return 1;
  403. /*SPD(playerid, 2, DSI, "Авторизация", "", "".)*/
  404. }
  405. stock show_register(playerid)
  406. {
  407. SPD(playerid, 1, DSI, "{1472FF}Регистрация", "{FFFFFF}Добро пожаловать на сервер Exclusive RolePlay\nЧтобы начать игру, вам необходимо пройти регистрацию\n\nВведите пароль для вашего аккаунта\nОн будет запрашиваться каждый раз когда вы заходите на сервер\n\n\t{33E82D}Примечания:\n\t- Пароль может состоять из русских и латинских символов\n\t- Пароль чувствителен к регистру\n\t- Длина пароля от 6-ти до 15-ти символов", "Далее", "");
  408. }
  409. stock save_account(playerid)
  410. {
  411. new query[128];
  412. format(query, sizeof(query), "UPDATE `accounts` SET \
  413. `email` = '%s', `sex` = '%d', `admin` = '%d' WHERE `id` = '%d' LIMIT 1",
  414. player_info[playerid][EMAIL],
  415. player_info[playerid][SEX],
  416. player_info[playerid][ADMIN],
  417. player_info[playerid][ID]);
  418. mysql_function_query(dbHandle, query, false, "", "");
  419. }
  420. //========================================================================//
  421. //=============================Команды сервера============================//
  422. ALTX:mn("/menu");
  423. CMD:mn(playerid)
  424. {
  425. SPD(playerid, 4444, DSL, "{1472FF}Меню игрока", "{FFFFFF}1. Статистика\n2. Список команд\n3. Личные настройки\n4. Настройки безопасности\n5. Связь с администрацией\n6. Улучшения\n7. Правила сервера\n8. Изменить имя\n9. Дополнительно", "Выбрать", "Закрыть");
  426. }
  427. CMD:setpi(playerid, params[])
  428. {
  429. if(sscanf(params, "ud", params[0], params[1])) return SCM(playerid, COLOR_RED, "{FFFFFF}Введите /setpi [id] [id интерьера]");
  430. new string[128];
  431. format(string, sizeof(string), "{FFFFFF}Вы телепортировали игрока %s[ %d ] в интерьер с ID %d", sendername(params[0]), params[0], params[1]);
  432. SCM(playerid, COLOR_ORANGE, string);
  433. SetPlayerInterior(playerid, params[1]);
  434. return 1;
  435. }
  436. CMD:setvw(playerid, params[])
  437. {
  438. if(sscanf(params, "ud", params[0], params[1])) return SCM(playerid, COLOR_RED, "{FFFFFF}Введите /setvw [id] [id виртуального мира]");
  439. new string[128];
  440. format(string, sizeof(string), "{FFFFFF}Вы телепортировали игрока %s[ %d ] в виртуальный мир с ID %d", sendername(params[0]), params[0], params[1]);
  441. SCM(playerid, COLOR_ORANGE, string);
  442. SetPlayerVirtualWorld(playerid, params[1]);
  443. return 1;
  444. }
  445. //========================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement