Advertisement
Guest User

Untitled

a guest
Jul 24th, 2014
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.17 KB | None | 0 0
  1. /*
  2. www.pro-pawn.ru
  3. v.0.4.0
  4.  
  5. Сделана навигация по коду, т.е
  6. 1.Инклюды
  7. 2.Переменные
  8. 3.Паблики
  9. 4.Команды
  10. 5.Функции
  11. Как пользоваться?
  12. Захимаем CTRL+F -----> Пишем "Нужный вам пункт" -----> Готово
  13. */
  14. //Инклюды
  15. #include <a_samp>//Стандарт
  16. #include <a_mysql>//База
  17. #include <sscanf2>//Облегчаем написание команд
  18. #include <foreach>//Оптимизация циклов для игроков
  19. #include <dc_cmd>//Командный процессор
  20. #include <streamer>//Стример
  21. //Переменные
  22. enum{
  23. d_register,
  24. d_login,
  25. d_changegang,
  26. d_info,
  27. d_password,
  28. d_vip,
  29. d_stats,
  30. d_ahelp,
  31. d_myahelp,
  32. d_mm,
  33. d_report,
  34. d_gm
  35. }
  36. enum pInfo{
  37. p_id,
  38. p_name[MAX_PLAYER_NAME],
  39. p_member,
  40. p_skin,
  41. p_admin,
  42. p_kills,
  43. p_vip
  44. }
  45. enum gInfo{
  46. g_respect[6],
  47. g_online[6]
  48. }
  49. new
  50. grove_interior_pickups[2],
  51. vagos_interior_pickups[2],
  52. ballas_interior_pickups[2],
  53. aztec_interior_pickups[2],
  54. rifa_interior_pickups[2],
  55. Iterator:streamed_players[MAX_PLAYERS]<MAX_PLAYERS-1>,
  56. GangInfo[gInfo][6],
  57. PlayerInfo[MAX_PLAYERS][pInfo]
  58. ;
  59. static gw_base;
  60. //Паблики
  61. main();
  62. public OnGameModeInit(){
  63. gw_base = mysql_connect("сюда пишем хост","пользователя","база данных","пароль от БД");
  64. mysql_function_query(gw_base, "SELECT * FROM `respect`", true, "LoadingRespect", "");
  65. loadpickup();
  66. loadobject();
  67. SetGameModeText("v0.3");
  68. Iter_Init(streamed_players);
  69. return 1;
  70. }
  71. public OnGameModeExit() return mysql_close(gw_base);
  72. public OnPlayerRequestClass(playerid, classid){
  73. if(GetPVarInt(playerid, "Login") == 1) return SpawnPlayer(playerid);
  74. SendClientMessage(playerid,0xFFFFFFFF, "Добро пожаловать на {269BD8}Pro Pawn Gang War{FFFFFF}");
  75. GetPlayerName(playerid, PlayerInfo[playerid][p_name], MAX_PLAYER_NAME);
  76. static const fmt_str[] = "SELECT `Name` FROM `accounts` WHERE `Name` = '%s'";
  77. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME;
  78. new string[fmt_size];
  79. format(string,sizeof(string),fmt_str, PlayerInfo[playerid][p_name]);
  80. mysql_function_query(gw_base, string, true, "CheckRegistration","d", playerid);
  81. SetPlayerCameraPos(playerid, 1474.184326, -1649.733520, 120.497848);
  82. SetPlayerCameraLookAt(playerid, 1474.273315, -1653.972534, 117.847877);
  83. return 1;
  84. }
  85. public OnPlayerConnect(playerid);
  86. public OnPlayerDisconnect(playerid, reason){
  87. if(GetPVarInt(playerid, "Registration") == 1){
  88. static const fmt_str[] = "DELETE FROM `accounts` WHERE `Name` = '%s'";
  89. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME;
  90. new string[fmt_size];
  91. format(string,sizeof(string),fmt_str, PlayerInfo[playerid][p_name]);
  92. mysql_query(gw_base,string,true);
  93. return 1;
  94. }
  95. if(Iter_Count(streamed_players[playerid]) != 0) Iter_Clear(streamed_players[playerid]);
  96. GangInfo[g_online][PlayerInfo[playerid][p_member]] --;
  97. SavePlayer(playerid);
  98. return 1;
  99. }
  100. public OnPlayerSpawn(playerid){
  101. SetPlayerSkin(playerid, PlayerInfo[playerid][p_skin]);
  102. static const member_colors[] = { 0x008000AA, 0xFFD700AA, 0xFF00FFAA, 0x00BFFFAA, 0x6A5ACDAA };
  103. PlayerInfo[playerid][p_member] = SetPlayerColor(playerid, member_colors[PlayerInfo[playerid][p_member] - 1]);
  104. switch(PlayerInfo[playerid][p_member]){
  105. case 1: SetPlayerPos(playerid,2464.9270,-1688.7904,13.5154);
  106. case 2: SetPlayerPos(playerid,2638.4524,-2014.2202,13.8139);
  107. case 3: SetPlayerPos(playerid,2519.6575,-1276.3923,34.8478);
  108. case 4: SetPlayerPos(playerid,1893.4453,-2038.2994,13.5469);
  109. case 5: SetPlayerPos(playerid,2145.2939,-1802.5371,16.1406);
  110. }
  111. return 1;
  112. }
  113. public OnPlayerDeath(playerid, killerid, reason){
  114. static const
  115. on_death_fmt_str0[] = "{008000}%s",
  116. on_death_fmt_str1[] = "{FFD700}%s",
  117. on_death_fmt_str2[] = "{FF00FF}%s",
  118. on_death_fmt_str3[] = "{00BFFF}%s",
  119. on_death_fmt_str4[] = "{6A5ACD}%s",
  120. on_death_fmt_str5[] = "Вы были убиты игроком {FF8C00}- %s";
  121. const
  122. on_death_fmt_size0 = sizeof(on_death_fmt_str0)-2+32,
  123. on_death_fmt_size1 = sizeof(on_death_fmt_str1)-2+32,
  124. on_death_fmt_size2 = sizeof(on_death_fmt_str2)-2+32,
  125. on_death_fmt_size3 = sizeof(on_death_fmt_str3)-2+32,
  126. on_death_fmt_size4 = sizeof(on_death_fmt_str4)-2+32,
  127. on_death_fmt_size5 = sizeof(on_death_fmt_str5)-2+MAX_PLAYER_NAME;
  128. #if on_death_fmt_size0>on_death_fmt_size1
  129. #define on_death_fmt_size on_death_fmt_size0
  130. #else
  131. #define on_death_fmt_size on_death_fmt_size1
  132. #endif
  133. #if on_death_fmt_size2>on_death_fmt_size3
  134. #undef on_death_fmt_size
  135. #define on_death_fmt_size on_death_fmt_size2
  136. #else
  137. #undef on_death_fmt_size
  138. #define on_death_fmt_size on_death_fmt_size3
  139. #endif
  140. #if on_death_fmt_size4>on_death_fmt_size5
  141. #undef on_death_fmt_size
  142. #define on_death_fmt_size on_death_fmt_size4
  143. #else
  144. #undef on_death_fmt_size
  145. #define on_death_fmt_size on_death_fmt_size5
  146. #endif
  147. new string[on_death_fmt_size];
  148. PlayerInfo[killerid][p_kills] ++;
  149. if(PlayerInfo[killerid][p_member] != PlayerInfo[playerid][p_member]){
  150. GangInfo[g_respect][PlayerInfo[killerid][p_member]] += 1;
  151. GangInfo[g_respect][PlayerInfo[playerid][p_member]] -= 1;
  152. GameTextForPlayer(killerid,"~g~ +1 g_respect",1000,1);
  153. GameTextForPlayer(playerid,"~r~ -1 respect",1000,1);
  154. switch(PlayerInfo[killerid][p_member]){
  155. case 1: format(string,sizeof(string),on_death_fmt_str0, PlayerInfo[killerid][p_name]);
  156. case 2: format(string,sizeof(string),on_death_fmt_str1, PlayerInfo[killerid][p_name]);
  157. case 3: format(string,sizeof(string),on_death_fmt_str2, PlayerInfo[killerid][p_name]);
  158. case 4: format(string,sizeof(string),on_death_fmt_str3, PlayerInfo[killerid][p_name]);
  159. case 5: format(string,sizeof(string),on_death_fmt_str4, PlayerInfo[killerid][p_name]);
  160. }
  161. format(string,sizeof(string),on_death_fmt_str5,PlayerInfo[killerid][p_name]);
  162. SendClientMessage(playerid,0xFFFFFFFF,string);
  163. SetRespect(PlayerInfo[killerid][p_member],GangInfo[g_respect][PlayerInfo[killerid][p_member]]);
  164. SetRespect(PlayerInfo[playerid][p_member],GangInfo[g_respect][PlayerInfo[playerid][p_member]]);
  165. }
  166. return 1;
  167. }
  168. public OnPlayerText(playerid, text[]){
  169. static const
  170. on_text_fmt_str0[] = "{008000}%s: {FFFFFF}%s",
  171. on_text_fmt_str1[] = "{FFD700}%s: {FFFFFF}%s",
  172. on_text_fmt_str2[] = "{FF00FF}%s: {FFFFFF}%s",
  173. on_text_fmt_str3[] = "{00BFFF}%s: {FFFFFF}%s",
  174. on_text_fmt_str4[] = "{6A5ACD}%s: {FFFFFF}%s",
  175. on_text_fmt_str5[] = "{FFFFFF}[VIP] %s: %s";
  176. const
  177. on_text_fmt_size0 = sizeof(on_text_fmt_str0)-2+32-2+152,
  178. on_text_fmt_size1 = sizeof(on_text_fmt_str1)-2+32-2+152,
  179. on_text_fmt_size2 = sizeof(on_text_fmt_str2)-2+32-2+152,
  180. on_text_fmt_size3 = sizeof(on_text_fmt_str3)-2+32-2+152,
  181. on_text_fmt_size4 = sizeof(on_text_fmt_str4)-2+32-2+152,
  182. on_text_fmt_size5 = sizeof(on_text_fmt_str5)-2+32-2+MAX_PLAYER_NAME;
  183. #if on_text_fmt_size0>on_text_fmt_size1
  184. #define on_text_fmt_size on_text_fmt_size0
  185. #else
  186. #define on_text_fmt_size on_text_fmt_size1
  187. #endif
  188. #if on_text_fmt_size2>on_text_fmt_size3
  189. #undef on_text_fmt_size
  190. #define on_text_fmt_size on_text_fmt_size2
  191. #else
  192. #undef on_text_fmt_size
  193. #define on_text_fmt_size on_text_fmt_size3
  194. #endif
  195. #if on_text_fmt_size4>on_text_fmt_size5
  196. #undef on_text_fmt_size
  197. #define on_text_fmt_size on_text_fmt_size4
  198. #else
  199. #undef on_text_fmt_size
  200. #define on_text_fmt_size on_text_fmt_size5
  201. #endif
  202. new string[on_text_fmt_size];
  203. if(GetPVarInt(playerid, "Login") == 1){
  204. switch(PlayerInfo[playerid][p_member]){
  205. case 1: format(string,sizeof(string),on_text_fmt_str0, PlayerInfo[playerid][p_name], text);
  206. case 2: format(string,sizeof(string),on_text_fmt_str1, PlayerInfo[playerid][p_name], text);
  207. case 3: format(string,sizeof(string),on_text_fmt_str2, PlayerInfo[playerid][p_name], text);
  208. case 4: format(string,sizeof(string),on_text_fmt_str3, PlayerInfo[playerid][p_name], text);
  209. case 5: format(string,sizeof(string),on_text_fmt_str4, PlayerInfo[playerid][p_name], text);
  210. }
  211. SendInWorldMessage(playerid,15.0,string,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF);
  212. switch(PlayerInfo[playerid][p_member]){
  213. case 1: format(string,sizeof(string),on_text_fmt_str5,PlayerInfo[playerid][p_name],text);
  214. }
  215. SendInWorldMessage(playerid,15.0,string,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF);
  216. return 0;
  217. }
  218. return 1;
  219. }
  220. public OnPlayerCommandPerformed(playerid, cmdtext[], success){
  221. if(success == -1) return SendClientMessage(playerid, -1, "Такой команды не существует!");
  222. return 1;
  223. }
  224. public OnPlayerPickUpPickup(playerid, pickupid){
  225. if(pickupid == grove_interior_pickups[0]){
  226. if(PlayerInfo[playerid][p_member] != 1) return SendClientMessage(playerid,0xFFFFFFFF,"Доступ разрешен только членам Grove Street");
  227. SetPlayerPos(playerid,-41.9184,67.6980,1025.3560);
  228. }
  229. if(pickupid == vagos_interior_pickups[0]){
  230. if(PlayerInfo[playerid][p_member] != 2) return SendClientMessage(playerid,0xFFFFFFFF,"Доступ разрешен только членам Vagos Gang");
  231. SetPlayerPos(playerid,-2.4970,-120.6256,1016.8203);
  232. }
  233. if(pickupid == ballas_interior_pickups[0]){
  234. if(PlayerInfo[playerid][p_member] != 3) return SendClientMessage(playerid,0xFFFFFFFF,"Доступ разрешен только членам Ballas");
  235. SetPlayerPos(playerid,2238.2400,-1906.8358,14.9375);
  236. }
  237. if(pickupid == aztec_interior_pickups[0]){
  238. if(PlayerInfo[playerid][p_member] != 4) return SendClientMessage(playerid,0xFFFFFFFF,"Доступ разрешен только членам Aztec");
  239. SetPlayerPos(playerid,328.6852,-303.2286,1363.5259);
  240. }
  241. if(pickupid == rifa_interior_pickups[0]){
  242. if(PlayerInfo[playerid][p_member] != 5) return SendClientMessage(playerid,0xFFFFFFFF,"Доступ разрешен только членам Rifa");
  243. SetPlayerPos(playerid,365.1868,1052.3789,1947.4359);
  244. }
  245. if(pickupid == grove_interior_pickups[1]) SetPlayerPos(playerid,2486.3584,-1648.4133,14.0248);
  246. if(pickupid == vagos_interior_pickups[1]) SetPlayerPos(playerid,2786.3416,-1279.6971,44.3409);
  247. if(pickupid == ballas_interior_pickups[1]) SetPlayerPos(playerid,2234.2979,-1906.3167,14.2826);
  248. if(pickupid == aztec_interior_pickups[1]) SetPlayerPos(playerid,1893.3198,-2022.7792,13.5469);
  249. if(pickupid == rifa_interior_pickups[1]) SetPlayerPos(playerid,2784.3477,-1928.3993,13.5469);
  250. return 1;
  251. }
  252. public OnPlayerStreamIn(playerid, forplayerid) return Iter_Add(streamed_players[forplayerid],playerid);
  253. public OnPlayerStreamOut(playerid, forplayerid) return Iter_Remove(streamed_players[forplayerid],playerid);
  254. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
  255. switch(dialogid){
  256. case d_login:{
  257. if(!response) return Kick(playerid);
  258. if(!strlen(inputtext))return ShowPlayerLoginDialog(playerid);
  259. for(new i = strlen(inputtext); i != 0; --i)
  260. switch(inputtext[i]){
  261. case 'А'..'Я', 'а'..'я', ' ': return ShowPlayerDialog(playerid,d_login,DIALOG_STYLE_MSGBOX,"{FF8C00}Ошибка!","{FFFFFF}Введенный вами пароль содержит русские буквы.\nСмените раскладку клавиатуры!","Повтор","");
  262. }
  263. static const d_login_fmt_str[] = "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Key` = '%s'";
  264. const d_login_fmt_size = sizeof(d_login_fmt_str)-2+MAX_PLAYER_NAME-2+15;
  265. new string[d_login_fmt_size];
  266. format(string,sizeof(string),d_login_fmt_str, PlayerInfo[playerid][p_name], inputtext);
  267. mysql_function_query(gw_base, string, true, "PlayerAuthorization", "d", playerid);
  268. return 1;
  269. }
  270. case d_register:{
  271. if(!response) return Kick(playerid);
  272. if(!strlen(inputtext)) return ShowPlayerRegistrationDialog(playerid);
  273. for(new i = strlen(inputtext); i != 0; --i)
  274. switch(inputtext[i]){
  275. case 'А'..'Я', 'а'..'я', ' ': return ShowPlayerDialog(playerid,d_login,DIALOG_STYLE_MSGBOX,"{FF8C00}Ошибка!","{FFFFFF}Введенный вами пароль содержит русские буквы.\nСмените раскладку клавиатуры!","Повтор","");
  276. }
  277. if(strlen(inputtext) < 6 || strlen(inputtext) > 15) return ShowPlayerDialog(playerid,d_register,DIALOG_STYLE_MSGBOX,"{C0C0C0}Ошибка!","{FF6347}Длина пароля должна быть от 6 до 15 символов!","Повтор","");
  278. SetPVarInt(playerid, "Registration", 1);
  279. static const d_reg_fmt_str[] = "INSERT INTO `accounts` (`Name`, `Key`) VALUES ('%s', '%s')";
  280. const d_reg_fmt_size = sizeof(d_reg_fmt_str)-2+MAX_PLAYER_NAME-2+15;
  281. new string[d_reg_fmt_size];
  282. format(string,sizeof(string),d_reg_fmt_str,PlayerInfo[playerid][p_name], inputtext);
  283. mysql_function_query(gw_base, string, false, "Changegang","d", playerid);
  284. return 1;
  285. }
  286. case d_changegang:{
  287. if(response){
  288. switch(listitem){
  289. case 0:{
  290. ChangeGang(playerid, 1, 105);
  291. SpawnPlayer(playerid);
  292. }
  293. case 1:{
  294. ChangeGang(playerid, 2, 108);
  295. SpawnPlayer(playerid);
  296. }
  297. case 2:{
  298. ChangeGang(playerid, 3, 103);
  299. SpawnPlayer(playerid);
  300. }
  301. case 3:{
  302. ChangeGang(playerid, 4, 114);
  303. SpawnPlayer(playerid);
  304. }
  305. case 4:{
  306. ChangeGang(playerid, 5, 175);
  307. SpawnPlayer(playerid);
  308. }
  309. }
  310. }
  311. else ShowPlayerLoginDialog(playerid);
  312. }
  313. case d_info:{
  314. if(!response)return 1;
  315. if(GetPVarInt(playerid, "Registration") == 1) Changegang(playerid);
  316. else return 1;
  317. return 1;
  318. }
  319. case d_mm:{
  320. if(!response) return 1;
  321. switch(listitem){
  322. case 0:{
  323. static const str_vip_prefixes[2][] = {
  324. "Не имеется",
  325. "Имеется"
  326. };
  327. static const d_mm_fmt_str[] = "{FFFFFF}Ваш номер аккаунта: {33AA33}%d\n{FFFFFF}Кол-во убийств: {33AA33}\t%d\n{FFFFFF}Статус VIP: {33AA33} \t\t%s";
  328. const d_mm_fmt_size = sizeof(d_mm_fmt_str)-2+12-2+12-2+10;
  329. new string[d_mm_fmt_size];
  330. format(string,sizeof(string),d_mm_fmt_str,PlayerInfo[playerid][p_id],PlayerInfo[playerid][p_kills],str_vip_prefixes[PlayerInfo[playerid][p_vip]-1]);
  331. ShowPlayerDialog(playerid,d_stats,DIALOG_STYLE_MSGBOX," ",string,"Выход","");
  332. }
  333. case 1: SendClientMessage(playerid,0xAFAFAFFF,"В разработке! Команды");
  334. case 2: ShowPlayerDialog(playerid,d_report,DIALOG_STYLE_INPUT," ","Введите текст жалобы.\nФорма подачи жалобы: [id] [причина]","Подать","Выход");
  335. case 3: SendClientMessage(playerid,0xFFFFFFFF,"Дополнительно: /donate");
  336. }
  337. }
  338. case d_report:{
  339. static const d_report_fmt_str[] = "Жалоба от %s[ID:%d]: %s";
  340. const d_report_fmt_size = sizeof(d_report_fmt_str)-2+MAX_PLAYER_NAME-2+4-2+144;
  341. new string[d_report_fmt_size];
  342. format(string,sizeof(string),d_report_fmt_str,PlayerInfo[playerid][p_name],playerid,inputtext);
  343. SendClientMessage(playerid,-1,"Ваша жалоба отправлена!");
  344. SendAdminMessage(PlayerInfo[playerid][p_admin],0xFF6347FF,string);
  345. }
  346. }
  347. return 1;
  348. }
  349. public Changegang(playerid);
  350. public Changegang(playerid) return ShowPlayerDialog(playerid,d_changegang,DIALOG_STYLE_LIST, "{FF8C00}Выбор группировки","Grove Street\nVagos\nBallas\nAztecas\nRifa", "Принять", "Отмена");
  351. public LoadingRespect();
  352. public LoadingRespect(){
  353. new
  354. rows,
  355. fields
  356. ;
  357. cache_get_data(rows,fields);
  358. GangInfo[g_respect][1] = cache_get_field_content_int(0, "Grove", gw_base);
  359. GangInfo[g_respect][2] = cache_get_field_content_int(0, "Vagos", gw_base);
  360. GangInfo[g_respect][3] = cache_get_field_content_int(0, "Ballas", gw_base);
  361. GangInfo[g_respect][4] = cache_get_field_content_int(0, "Aztecas", gw_base);
  362. GangInfo[g_respect][5] = cache_get_field_content_int(0, "Rifa", gw_base);
  363. return 1;
  364. }
  365. public PlayerAuthorization(playerid, password[]);
  366. public PlayerAuthorization(playerid, password[]){
  367. new
  368. rows,
  369. fields
  370. ;
  371. cache_get_data(rows, fields);
  372. if(!rows){
  373. SendClientMessage(playerid, 0xFFFFFFFF, "Пароль указан не верно.");
  374. SetPVarInt(playerid, "Badpassword", GetPVarInt(playerid, "Badpassword")+1);
  375. if(GetPVarInt(playerid, "Badpassword") == 3){
  376. SendClientMessage(playerid, 0xFFFFFFFF, "Вы были отключены от сервера за незнание пароля.");
  377. DeletePVar(playerid, "Badpassword");
  378. return Kick(playerid);
  379. }
  380. return ShowPlayerLoginDialog(playerid);
  381. }
  382. PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id", gw_base);
  383. PlayerInfo[playerid][p_member] = cache_get_field_content_int(0, "Member", gw_base);
  384. PlayerInfo[playerid][p_skin] = cache_get_field_content_int(0, "Skin", gw_base);
  385. PlayerInfo[playerid][p_admin] = cache_get_field_content_int(0, "Admin", gw_base);
  386. PlayerInfo[playerid][p_kills] = cache_get_field_content_int(0, "Kills", gw_base);
  387. PlayerInfo[playerid][p_vip] = cache_get_field_content_int(0, "Vip", gw_base);
  388. ShowPlayerDialog(playerid,d_changegang,DIALOG_STYLE_LIST, "{FF8C00}Выбор группировки","Grove Street\nVagos\nBallas\nAztecas\nRifa", "Принять", "Отмена");
  389. GangInfo[g_online][PlayerInfo[playerid][p_member]] ++;
  390. return 1;
  391. }
  392. public CheckRegistration(playerid);
  393. public CheckRegistration(playerid){
  394. new
  395. rows,
  396. fields
  397. ;
  398. cache_get_data(rows, fields);
  399. if(!rows) ShowPlayerRegistrationDialog(playerid);
  400. else ShowPlayerLoginDialog(playerid);
  401. return 1;
  402. }
  403. public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ){
  404. if(GetPlayerState(playerid) == 2) return SetVehiclePos(GetPlayerVehicleID(playerid), fX, fY, fZ);
  405. else SetPlayerPosFindZ(playerid, fX, fY, fZ);
  406. return 1;
  407. }
  408. public KickTimer(playerid);
  409. public KickTimer(playerid) return fkick(playerid);
  410. //Команды
  411. CMD:gangtop(playerid,params[]){
  412. static const fmt_str[] = "{008000}\tWest Side Grove Street Gang\n{FFFFFF} Уважение: %i | Бандитов On-line: %i\n\n\
  413. \t{FFD700}Loco Low Vagos Gang\n{FFFFFF} Уважение: %i | Бандитов On-line: %i\n\n\\t{FF00FF}East Side Ballas Gang \n{FFFFFF} Уважение: %i | Бандитов On-line: %i\n\n\
  414. \t{00BFFF}Varios Los Aztecas Gang\n{FFFFFF} Уважение: %i | Бандитов On-line: %i\n\n\\t{6A5ACD}Idlewood Rifa Gang \n{FFFFFF} Уважение: %i | Бандитов On-line: %i\n\n";
  415. const fmt_size = sizeof(fmt_str)-10+200;
  416. new string[fmt_size];
  417. format(string,sizeof(string),fmt_str,
  418. GangInfo[g_respect][1],
  419. GangInfo[g_online][1],
  420. GangInfo[g_respect][2],
  421. GangInfo[g_online][2],
  422. GangInfo[g_respect][3],
  423. GangInfo[g_online][3],
  424. GangInfo[g_respect][4],
  425. GangInfo[g_online][4],
  426. GangInfo[g_respect][5],
  427. GangInfo[g_online][5])
  428. ;
  429. ShowPlayerDialog(playerid, d_info, DIALOG_STYLE_MSGBOX, "{FF8C00}Рейтинг банд",string, "Назад", "");
  430. return 1;
  431. }
  432. CMD:givegun(playerid,params[]){
  433. if(PlayerInfo[playerid][p_admin] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  434. if(GetPVarInt(playerid, "Login") == 0) return 1;
  435. if(sscanf(params,"uii", params[0],params[1],params[2])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /givegun [playerid] [1-46] [1-1000]");
  436. if(GetPVarInt(params[0], "Login") == 0) return SendClientMessage(playerid, 0xAFAFAFFF, "Игрок не подключен.");
  437. if(params[1] > 47 || params[1] < 1) return SendClientMessage(playerid, 0xAFAFAFFF,"Неверный номер оружия.");
  438. else if(params[2] > 1000 || params[2] < 1) return SendClientMessage(playerid, 0xAFAFAFFF,"Кол-во патронов от 1 до 1000!");
  439. GivePlayerWeapon(params[0], params[1], params[2]);
  440. return 1;
  441. }
  442. CMD:report(playerid,params[]){
  443. static const fmt_str[] = "[Жалоба от %s]: %s";
  444. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+144;
  445. new string[fmt_size];
  446. if(GetPVarInt(playerid, "Login") == 0) return 1;
  447. if(sscanf(params,"s", params[0])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /report [text]");
  448. SendClientMessage(playerid,0xFFFFFFFF,"Ваша жалоба отправлена администрации!");
  449. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_name],params[0]);
  450. SendAdminMessage(playerid,0xF4A460FF,string);
  451. return 1;
  452. }
  453. CMD:r(playerid,params[]){
  454. static const fmt_str[] = "[R] %s [Kills: %i]: %s";
  455. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+12-2+144;
  456. new string[fmt_size];
  457. if(sscanf(params, "s[128]",params[0])) return SendClientMessage(playerid, 0xFFFFFFFF, "Введите: /r [сообщение]");
  458. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_name],PlayerInfo[playerid][p_kills], params[0]);
  459. SendRadioMessage(PlayerInfo[playerid][p_member], 0x33cc99FF, string);
  460. return 1;
  461. }
  462. CMD:guf(playerid,params[]){
  463. if(PlayerInfo[playerid][p_vip] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Вы не имеете VIP статуса.");
  464. SetPlayerHealth(playerid,0.0);
  465. SendClientMessage(playerid,0xFFFFFFFF,"Вы использовали возможность GUF.");
  466. return 1;
  467. }
  468. CMD:viphelp(playerid,params[]){
  469. if(PlayerInfo[playerid][p_vip] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Вы не имеете VIP статуса.");
  470. ShowPlayerDialog(playerid,d_vip,DIALOG_STYLE_MSGBOX," ","{33AA33}/guf {FFFFFF}- мгновенная смерть\n","","Закрыть");
  471. return 1;
  472. }
  473. CMD:makeadmin(playerid,params[]){
  474. static const
  475. cmd_make_admin_fmt_str0[] = "Вы назначили игрока %s администратором %d уровня.",
  476. cmd_make_admin_fmt_str1[] = "Вы назначены администратором %d уровня.";
  477. const
  478. cmd_make_admin_fmt_size0 = sizeof(cmd_make_admin_fmt_str0)-2+MAX_PLAYER_NAME-2+5,
  479. cmd_make_admin_fmt_size1 = sizeof(cmd_make_admin_fmt_str1)-2+MAX_PLAYER_NAME;
  480. #if cmd_make_admin_fmt_size0>cmd_make_admin_fmt_size1
  481. #define cmd_make_admin_fmt_size cmd_make_admin_fmt_size0
  482. #else
  483. #define cmd_make_admin_fmt_size cmd_make_admin_fmt_size1
  484. #endif
  485. new string[cmd_make_admin_fmt_size];
  486. if(PlayerInfo[playerid][p_admin] < 5) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  487. if(sscanf(params,"dd", params[0],params[1])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /makeadmin [id] [lvl (0-5)]");
  488. if(params[1] > 5 || params[1] < 0) return SendClientMessage(playerid,0xFFFFFFFF,"Научись уже вводить правильно! От 0 до 5!");
  489. PlayerInfo[params[0]][p_admin] = params[1];
  490. format(string,sizeof(string),cmd_make_admin_fmt_str0,PlayerInfo[params[0]][p_name],params[1]);
  491. SendClientMessage(playerid,0xFFFFFFFF,string);
  492. format(string,sizeof(string),cmd_make_admin_fmt_str1,params[1]);
  493. SendClientMessage(playerid,0xFFFFFFFF,string);
  494. SendClientMessage(playerid,0xFFFFFFFF,"Поздравляем, для получения дополнительной справки - {33AA33}/ahelp");
  495. return 1;
  496. }
  497. CMD:setvip(playerid,params[]){
  498. if(PlayerInfo[playerid][p_admin] < 5) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  499. if(sscanf(params,"dd", params[0],params[1])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /setvip [id] [0-1] (0 - снять, 1 - выдать)");
  500. if(params[1] > 1 || params[1] < 0) return SendClientMessage(playerid,0xFFFFFFFF,"Научись уже вводить правильно! От 0 до 1!");
  501. PlayerInfo[params[0]][p_vip] = params[1];
  502. switch(params[1]){
  503. case 1: SendClientMessage(params[0],0xFFFFFFFF,"Благодарим за покупку VIP аккаунта! Подробно {33AA33}/viphelp");
  504. case 2: SendClientMessage(params[0],0xFFFFFFFF,"У вас сняли вип аккаунт.");
  505. }
  506. static const fmt_str[] = "Ты выдал/снял вип аккаунт у %s";
  507. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME;
  508. new string[fmt_size];
  509. format(string,sizeof(string),fmt_str,PlayerInfo[params[0]][p_name]);
  510. SendClientMessage(playerid,0xFFFFFFFF,string);
  511. return 1;
  512. }
  513. CMD:meadmin(playerid,params[]) return PlayerInfo[playerid][p_admin] = 5;
  514. CMD:ao(playerid,params[]){
  515. if(PlayerInfo[playerid][p_admin] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  516. if(sscanf(params,"s", params[0])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /ao [text]");
  517. static const fmt_str[] = "[SERVER] %s: %s";
  518. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+144;
  519. new string[fmt_size];
  520. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_name],params[0]);
  521. SendClientMessageToAll(0xFFFF00AA,string);
  522. return 1;
  523. }
  524. CMD:a(playerid,params[]){
  525. if(PlayerInfo[playerid][p_admin] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  526. if(sscanf(params, "s[128]",params[0])) return SendClientMessage(playerid, 0xFFFFFFFF, "Введите: /a [сообщение]");
  527. static const fmt_str[] = "[A-CHAT] [%d уровень] %s: %s";
  528. const fmt_size = sizeof(fmt_str)-2+12-2+MAX_PLAYER_NAME-2+144;
  529. new string[fmt_size];
  530. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_admin],PlayerInfo[playerid][p_name],params[0]);
  531. SendAdminMessage(PlayerInfo[playerid][p_admin], 0xFFFFFBB, string);
  532. return 1;
  533. }
  534. CMD:ahelp(playerid,params[]){
  535. if(PlayerInfo[playerid][p_admin] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  536. ShowPlayerDialog(playerid,d_ahelp,DIALOG_STYLE_MSGBOX," ", "{FFFFFF}TM - первый уровень.\n{33AA33}/ao [text] {FFFFFF} - сказать в общий чат.\n{33AA33}/a [text] -{FFFFFF}сказать в админ чат.\n\nM - второй\nКоманды.\n\nA - третьий\n{33AA33}/givegun [id] [gun id] [pt]{FFFFFF} - выдать оружие\n\nSA - четвертый\nКоманды.","close","");
  537. return 1;
  538. }
  539. CMD:kick(playerid,params[]){
  540. if(PlayerInfo[playerid][p_admin] < 2) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  541. if(sscanf(params,"ds", params[0],params[1])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /kick [id] [причина]");
  542. static const fmt_str[] = "[SERVER] Администратор %s кикнул игрока %s. Причина: %s";
  543. const fmt_size = sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+MAX_PLAYER_NAME-2+144;
  544. new string[fmt_size];
  545. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_name],PlayerInfo[params[0]][p_name],params[1]);
  546. SendClientMessageToAll(0xF4A460FF,string);
  547. fkick(params[0]);
  548. return 1;
  549. }
  550. CMD:skick(playerid,params[]){
  551. if(PlayerInfo[playerid][p_admin] < 4) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  552. if(sscanf(params,"d", params[0])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /skick [id]");
  553. fkick(params[0]);
  554. return 1;
  555. }
  556. CMD:myahelp(playerid,params[]){
  557. if(PlayerInfo[playerid][p_admin] < 5) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  558. ShowPlayerDialog(playerid,d_myahelp,DIALOG_STYLE_MSGBOX,"","{FFFFFF}Список команд для нас.\n\n{33AA33}/setvip [id] [0-1] {FFFFFF}- выдать вип аккаунт.\n{33AA33}/makeadmin [id] [0-5] -{FFFFFF}выдать админку. ","Ясно","Понятно");
  559. return 1;
  560. }
  561. CMD:setpos(playerid,params[]){
  562. if(PlayerInfo[playerid][p_admin] < 2) return SendClientMessage(playerid,0xFFFFFFFF,"{33AA33}[Info] {FFFFFF}Нет доступа для продолжения.");
  563. if(sscanf(params,"ddd", params[0],params[1],params[2])) return SendClientMessage(playerid, 0xFFFFFFFF,"Введите: /setpos [x] [y] [z]");
  564. SetPlayerPos(playerid,params[0],params[1],params[2]);
  565. return 1;
  566. }
  567. CMD:mn(playerid,params[]) return ShowPlayerDialog(playerid,d_mm,DIALOG_STYLE_LIST," ","[1] Статистика аккаунта\n[2] Помощь по командам\n[3] Связь с администрацией\n[4] Дополнительно","Далее","Выход");
  568. //Функции
  569. loadpickup(){
  570. grove_interior_pickups[0] = CreatePickup(19,1318,2486.5015,-1644.5315,14.0772, 0);
  571. grove_interior_pickups[1] = CreatePickup(19,1318,-40.2580,71.1498,1025.3560, 0);
  572. vagos_interior_pickups[0] = CreatePickup(19,1318,2782.1538,-1281.1890,44.3724, 0);
  573. vagos_interior_pickups[1] = CreatePickup(19,1318,1.5389,-120.6665,1016.8136, 0);
  574. ballas_interior_pickups[0] = CreatePickup(19,1318,2238.2400,-1906.8358,14.9375, 0);
  575. ballas_interior_pickups[1] = CreatePickup(19,1318,248.5050,-38.7322,1104.4683, 0);
  576. aztec_interior_pickups[0] = CreatePickup(19,1318,1895.5326,-2019.6208,13.5469, 0);
  577. aztec_interior_pickups[1] = CreatePickup(19,1318,328.8775,-299.7524,1363.5259, 0);
  578. rifa_interior_pickups[0] = CreatePickup(19,1318,2787.0764,-1926.0670,13.5469, 0);
  579. rifa_interior_pickups[1] = CreatePickup(19,1318,364.9360,1055.8188,1947.4359, 0);
  580. }
  581. fkick(playerid, times = 100){
  582. if(GetPVarInt(playerid, "Kick") == -1) Kick(playerid);
  583. else if(!GetPVarInt(playerid, "Kick")) SetPVarInt(playerid, "Kick", SetTimerEx("KickTimer", times, 0, "d", playerid));
  584. else{
  585. KillTimer(GetPVarInt(playerid, "Kick"));
  586. SetPVarInt(playerid, "Kick", -1);
  587. Kick(playerid);
  588. }
  589. return 1;
  590. }
  591. loadobject(){
  592. #include <objects>
  593. }
  594. ShowPlayerLoginDialog(playerid){
  595. static const fmt_str[] = "{FFFFFF}Добро пожаловать на {269BD8}Pro Pawn Gang War{FFFFFF}{FFFFFF}Аккаунт зарегистрирован, введите пароль ниже{FFFFFF}Ваше имя: {FF8C00}%s{FFFFFF}Ваш пинг: {FF8C00}%i";
  596. const fmt_size = sizeof(fmt_str)-2+64-2+12;
  597. new string[fmt_size];
  598. format(string,sizeof(string),fmt_str,PlayerInfo[playerid][p_name], GetPlayerPing(playerid));
  599. ShowPlayerDialog(playerid,d_login,DIALOG_STYLE_INPUT,"{FF8C00}Авторизация",string,"Далее","Отмена");
  600. return 1;
  601. }
  602. ShowPlayerRegistrationDialog(playerid){
  603. static const fmt_str[] = "{FFFFFF}Добро пожаловать на {269BD8}Pro Pawn Gang War{FFFFFF}{FFFFFF}Введите пароль ниже, чтобы зарегистрировать аккаунт{FFFFFF}Ваше имя: {FF8C00}%s{FFFFFF}Ваш пинг: {FF8C00}%i";
  604. const fmt_size = sizeof(fmt_str)-2+64-2+12;
  605. new string[fmt_size];
  606. format(string,sizeof(string),fmt_str, PlayerInfo[playerid][p_name], GetPlayerPing(playerid));
  607. ShowPlayerDialog(playerid,d_register,DIALOG_STYLE_INPUT,"{FF8C00}Регистрация",string,"Далее","Отмена");
  608. return 1;
  609. }
  610. ChangeGang(i, gang, model){
  611. PlayerInfo[i][p_member] = gang;
  612. PlayerInfo[i][p_skin] = model;
  613. GangInfo[g_online][PlayerInfo[i][p_member]] ++;
  614. SetPlayerSkin(i, model);
  615. SpawnPlayer(i);
  616. DeletePVar(i, "Registration");
  617. return 1;
  618. }
  619. SavePlayer(playerid){
  620. static const fmt_str[] = "UPDATE accounts SET `Member` = '%i',`Skin` = '%i',`Admin` = '%d',`Kills` = '%i',`Vip` = '%i' WHERE `Name` = '%s'";
  621. const fmt_size = sizeof(fmt_str)-2+1-2+3-2+12-2+12-2+1-2+MAX_PLAYER_NAME;
  622. new string[fmt_size];
  623. format(string,sizeof(string),fmt_str,
  624. PlayerInfo[playerid][p_member],
  625. PlayerInfo[playerid][p_skin],
  626. PlayerInfo[playerid][p_admin],
  627. PlayerInfo[playerid][p_kills],
  628. PlayerInfo[playerid][p_vip],
  629. PlayerInfo[playerid][p_name])
  630. ;
  631. mysql_query(gw_base,string,true);
  632. return 1;
  633. }
  634. SendRadioMessage(member, color, string[])
  635. foreach(Player, i)
  636. if(PlayerInfo[i][p_member] == member) SendClientMessage(i, color, string);
  637. SendAdminMessage(admin, color, string[])
  638. foreach(Player, i)
  639. if(PlayerInfo[i][p_admin] == admin) SendClientMessage(i, color, string);
  640. SendInWorldMessage(playerid,Float:max_radius,text[],color1,color2,color3){
  641. new
  642. Float:px,
  643. Float:py,
  644. Float:pz
  645. ;
  646. GetPlayerPos(playerid,px,py,pz);
  647. SendClientMessage(playerid,color1,text);
  648. if(Iter_Count(streamed_players[playerid]) == 0) return 1;
  649. foreach(streamed_players[playerid],i){
  650. if(IsPlayerInRangeOfPoint(i,max_radius,px,py,pz)){
  651. if(GetPlayerDistanceFromPoint(i,px,py,pz) >= 0.0 && GetPlayerDistanceFromPoint(i,px,py,pz) < max_radius/3)
  652. SendClientMessage(i,color1,text);
  653. if(GetPlayerDistanceFromPoint(i,px,py,pz) >= max_radius/3 && GetPlayerDistanceFromPoint(i,px,py,pz) < max_radius/3*2)
  654. SendClientMessage(i,color2,text);
  655. if(GetPlayerDistanceFromPoint(i,px,py,pz) >= max_radius/3*2 && GetPlayerDistanceFromPoint(i,px,py,pz) <= max_radius)
  656. SendClientMessage(i,color3,text);
  657. }
  658. }
  659. return 1;
  660. }
  661. SetRespect(idx, value){
  662. static const
  663. set_respect_fmt_str0[] = "UPDATE respect SET Grove = '%d' LIMIT 1",
  664. set_respect_fmt_str1[] = "UPDATE respect SET Vagos = '%d' LIMIT 1",
  665. set_respect_fmt_str2[] = "UPDATE respect SET Ballas = '%d' LIMIT 1",
  666. set_respect_fmt_str3[] = "UPDATE respect SET Aztecas = '%d' LIMIT 1",
  667. set_respect_fmt_str4[] = "UPDATE respect SET Rifa = '%d' LIMIT 1";
  668. const
  669. set_respect_fmt_size0 = sizeof(set_respect_fmt_str0)-2+12,
  670. set_respect_fmt_size1 = sizeof(set_respect_fmt_str1)-2+12,
  671. set_respect_fmt_size2 = sizeof(set_respect_fmt_str2)-2+12,
  672. set_respect_fmt_size3 = sizeof(set_respect_fmt_str3)-2+12,
  673. set_respect_fmt_size4 = sizeof(set_respect_fmt_str4)-2+12;
  674. #if set_respect_fmt_size0>set_respect_fmt_size1
  675. #define set_respect_fmt_size set_respect_fmt_size0
  676. #else
  677. #define set_respect_fmt_size set_respect_fmt_size1
  678. #endif
  679. #if set_respect_fmt_size2>set_respect_fmt_size3
  680. #undef set_respect_fmt_size
  681. #define set_respect_fmt_size set_respect_fmt_size2
  682. #else
  683. #undef set_respect_fmt_size
  684. #define set_respect_fmt_size set_respect_fmt_size3
  685. #endif
  686. #if set_respect_fmt_size4>set_respect_fmt_size
  687. #undef set_respect_fmt_size
  688. #define set_respect_fmt_size set_respect_fmt_size4
  689. #endif
  690. new string[set_respect_fmt_size];
  691. switch(idx){
  692. case 1: format(string,sizeof(string),set_respect_fmt_str0, value);
  693. case 2: format(string,sizeof(string),set_respect_fmt_str1, value);
  694. case 3: format(string,sizeof(string),set_respect_fmt_str2, value);
  695. case 4: format(string,sizeof(string),set_respect_fmt_str3, value);
  696. case 5: format(string,sizeof(string),set_respect_fmt_str4, value);
  697. }
  698. mysql_query(gw_base,string,true);
  699. return 1;
  700. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement