HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <colorchat>
  5.  
  6. #define PLUGIN "Frag Verseny"
  7. #define VERSION "1.0"
  8. #define AUTHOR "6almasok"
  9.  
  10. #define prefix "[Frag-V]"
  11.  
  12. new g_StartTime[33], g_EndTime[32], kill[33], bool:SwitchFrag, bool:FirstTask, x_tempid
  13.  
  14. new const view_hud[][] =
  15. {
  16. "A Fragverseny véget ért!^nElsõ: %s",
  17. "A Fragverseny véget ért!^nElsõ: %s | Második: %s",
  18. "A Fragverseny véget ért!^nElsõ: %s | Második: %s | Harmadik: %s",
  19. "Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i",
  20. "Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i | 2. %s - ÖLÉS: %i",
  21. "Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i | 2. %s - ÖLÉS: %i | 3. %s - ÖLÉS: %i",
  22. "A Fragverseny elkezdõdik %s-kor..."
  23. }
  24.  
  25. public plugin_init()
  26. {
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_clcmd("say /fragmenu", "openMain")
  30. register_clcmd("say /kills", "openKillViewer")
  31.  
  32. register_clcmd("START_TIME", "loadStart")
  33. register_clcmd("END_TIME", "loadEnd")
  34. register_clcmd("INDOK", "reset_kuld")
  35.  
  36. register_event("DeathMsg","halal","a")
  37. }
  38. public halal()
  39. {
  40. new attacker = read_data(1)
  41. new victim = read_data(2)
  42.  
  43. if(!SwitchFrag) return PLUGIN_HANDLED
  44. if(attacker == victim || attacker == 0)
  45. return PLUGIN_HANDLED
  46.  
  47. kill[attacker]++
  48.  
  49. return PLUGIN_CONTINUE;
  50. }
  51. public loadStart(id)
  52. {
  53. g_StartTime[id] = EOS
  54. read_args(g_StartTime, charsmax(g_StartTime))
  55. remove_quotes(g_StartTime)
  56.  
  57. if(contain(g_StartTime, ":") != -1)
  58. {
  59. if((strlen(g_StartTime) != 5))
  60. {
  61. ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
  62. g_StartTime[id] = EOS
  63. return PLUGIN_HANDLED
  64. }
  65. }
  66. else
  67. {
  68. ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
  69. g_StartTime[id] = EOS
  70. return PLUGIN_HANDLED
  71. }
  72.  
  73. openMain(id)
  74. return PLUGIN_HANDLED
  75. }
  76. public loadEnd(id)
  77. {
  78. g_EndTime[id] = EOS
  79. read_args(g_EndTime, charsmax(g_EndTime))
  80. remove_quotes(g_EndTime)
  81.  
  82. if(contain(g_EndTime, ":") != -1)
  83. {
  84. if((strlen(g_EndTime) != 5))
  85. {
  86. ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
  87. g_EndTime[id] = EOS
  88. return PLUGIN_HANDLED
  89. }
  90. }
  91. else
  92. {
  93. ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
  94. g_EndTime[id] = EOS
  95. return PLUGIN_HANDLED
  96. }
  97.  
  98. openMain(id)
  99. return PLUGIN_HANDLED
  100. }
  101. public openMain(id)
  102. {
  103. if(!(get_user_flags(id) & ADMIN_CFG)) return PLUGIN_HANDLED
  104.  
  105. new szMenu[121],Time[10]
  106. get_time("%H:%M:%S", Time, charsmax(Time))
  107.  
  108. format(szMenu, charsmax(szMenu), "\r%s \wVezérlõpult^n\dIdõ: %s", prefix, Time)
  109. new menu = menu_create(szMenu, "main_handler")
  110.  
  111.  
  112. if(!SwitchFrag) formatex(szMenu, charsmax(szMenu), "Kezdési Idõ: \y[%s]", g_StartTime[id] == EOS ? "pl. 10:00" : g_StartTime)
  113. else formatex(szMenu, charsmax(szMenu), "A fragverseny elindúlt \y[%s-%s]^n", g_StartTime, g_EndTime)
  114. menu_additem(menu, szMenu, "0", 0)
  115.  
  116. if(!SwitchFrag) formatex(szMenu, charsmax(szMenu), "Végetérési Idõ: \y[%s]^n", g_EndTime[id] == EOS ? "pl. 10:30" : g_EndTime)
  117. else formatex(szMenu, charsmax(szMenu), "\rBeállitások")
  118. menu_additem(menu, szMenu, "1", 0)
  119.  
  120. if(g_EndTime[id] != EOS && g_StartTime[id] != EOS && !SwitchFrag) menu_additem(menu, "\rVerseny elindítása!", "2", 0)
  121.  
  122. menu_display(id, menu, 0)
  123. return PLUGIN_CONTINUE
  124. }
  125. public main_handler(id, menu, item)
  126. {
  127. if(item == MENU_EXIT)
  128. {
  129. menu_destroy(menu);
  130. return PLUGIN_CONTINUE;
  131. }
  132.  
  133. switch(item)
  134. {
  135. case 0:
  136. {
  137. if(!SwitchFrag) client_cmd(id, "messagemode START_TIME")
  138. openMain(id)
  139. }
  140. case 1:
  141. {
  142. if(!SwitchFrag)
  143. {
  144. client_cmd(id, "messagemode END_TIME")
  145. openMain(id)
  146. }
  147. else openSettings(id)
  148. }
  149. case 2:
  150. {
  151. FirstTask = true
  152. openTimeChecker(id)
  153. ColorChat(id, GREEN, "^4%s^1 A számláló elindúlt!", prefix)
  154. }
  155. }
  156. menu_destroy(menu);
  157. return PLUGIN_HANDLED;
  158. }
  159. public openSettings(id) {
  160. new szMenu[121]
  161. format(szMenu, charsmax(szMenu), "\r%s \wBeállítások", prefix)
  162. new menu = menu_create(szMenu, "settings_handler");
  163.  
  164. menu_additem(menu, "Verseny Leállítása", "0",0)
  165. menu_additem(menu, "Ölés Nullázása", "1",0)
  166. menu_additem(menu, "Játékosok Ölései", "2",0)
  167.  
  168. menu_display(id, menu, 0);
  169. }
  170. public settings_handler(id, menu, item)
  171. {
  172. if(item == MENU_EXIT)
  173. {
  174. menu_destroy(menu);
  175. return PLUGIN_CONTINUE;
  176. }
  177.  
  178. switch(item)
  179. {
  180. case 0: openSelect(id)
  181. case 1: openReseter(id)
  182. case 2: openKillViewer(id)
  183. }
  184. menu_destroy(menu);
  185. return PLUGIN_HANDLED;
  186. }
  187. public openKillViewer(id)
  188. {
  189. new szMenu[121], players[32], szTemp[10], pnum, Name[32]
  190. get_players(players, pnum)
  191.  
  192. format(szMenu, charsmax(szMenu), "\r%s \wJátékosok Ölései", prefix)
  193. new menu = menu_create(szMenu, "viewer_handler")
  194.  
  195. for(new i; i < pnum; i++)
  196. {
  197. get_user_name(players[i], Name, charsmax(Name))
  198. formatex(szMenu, charsmax(szMenu),"%s \d[\yÖLÉS:\r %i\d]", Name, kill[players[i]])
  199. num_to_str(players[i], szTemp, charsmax(szTemp))
  200. menu_additem(menu, szMenu, szTemp)
  201. }
  202.  
  203. menu_display(id, menu);
  204. }
  205. public viewer_handler(id,menu, item)
  206. {
  207. if(item == MENU_EXIT)
  208. {
  209. menu_destroy(menu)
  210. return PLUGIN_CONTINUE
  211. }
  212. openKillViewer(id)
  213. return PLUGIN_CONTINUE
  214. }
  215. public openSelect(id)
  216. {
  217. new menu = menu_create("\rBiztosan leakarod állítani a fragversenyt?", "select_handler");
  218.  
  219. menu_additem(menu, "Igen!", "0",0)
  220. menu_additem(menu, "Nem!", "1",0)
  221.  
  222. menu_display(id, menu, 0);
  223. }
  224. public select_handler(id, menu, item)
  225. {
  226. if( item == MENU_EXIT )
  227. {
  228. menu_destroy(menu);
  229. return PLUGIN_HANDLED;
  230. }
  231. switch(item)
  232. {
  233. case 0:
  234. {
  235. FirstTask = false
  236. SwitchFrag = false
  237. ColorChat(0, GREEN, "^4%s ^1Egy ^3ADMIN ^1leállította a fragversenyt!", prefix)
  238. }
  239. case 1: openMain(id)
  240. }
  241. menu_destroy(menu)
  242. return PLUGIN_HANDLED
  243. }
  244. public openReseter(id) {
  245. new cim[121], players[32], pnum, Name[32], szTempid[10]
  246. get_players(players, pnum)
  247.  
  248. format(cim, charsmax(cim), "\yJátékos ölésének nullázása!")
  249. new menu = menu_create(cim, "reset_handler" )
  250.  
  251. for( new i; i<pnum; i++ )
  252. {
  253. get_user_name(players[i], Name, charsmax(Name))
  254. num_to_str(players[i], szTempid, charsmax(szTempid))
  255. menu_additem(menu, Name, szTempid, 0)
  256. }
  257. menu_display(id, menu, 0)
  258. }
  259. public reset_handler(id, menu, item)
  260. {
  261. if( item == MENU_EXIT ) {
  262. menu_destroy(menu);
  263. return PLUGIN_HANDLED;
  264. }
  265. new data[6], szName[64], access, callback;
  266. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  267.  
  268. x_tempid = str_to_num(data);
  269. client_cmd(id, "messagemode INDOK");
  270.  
  271. menu_destroy(menu);
  272. return PLUGIN_HANDLED;
  273. }
  274. public reset_kuld(id)
  275. {
  276. new Msg[121], Name[32]
  277. read_args(Msg, charsmax(Msg))
  278. remove_quotes(Msg)
  279. get_user_name(x_tempid, Name, charsmax(Name))
  280.  
  281. kill[x_tempid] = 0
  282. ColorChat(0, GREEN, "^4%s^3 %s^1 ölései nullázva lettek! Indok: ^4%s", prefix, Name, Msg)
  283.  
  284. return PLUGIN_HANDLED;
  285. }
  286. public openTimeChecker(id)
  287. {
  288. if(FirstTask) set_task(0.5, "openTimeChecker",id)
  289.  
  290. new Time[10], SecSReset[10], SecEReset[10]
  291. get_time("%H:%M:%S", Time, charsmax(Time))
  292. formatex(SecSReset, charsmax(SecSReset), "%s:00", g_StartTime)
  293. formatex(SecEReset, charsmax(SecEReset), "%s:00", g_EndTime)
  294.  
  295. if(!SwitchFrag)
  296. {
  297. set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 6.0, 0.5)
  298. show_hudmessage(0, view_hud[6], g_StartTime)
  299. }
  300. else SeeBestPlayers(id)
  301.  
  302. if(equal(Time, SecSReset))
  303. {
  304. server_cmd("sv_restart 1")
  305. SwitchFrag = true
  306. }
  307. if(equal(Time, SecEReset))
  308. {
  309. FirstTask = false
  310. SwitchFrag = false
  311. SeeBestPlayers(id)
  312. }
  313.  
  314. return PLUGIN_CONTINUE;
  315. }
  316. public SeeBestPlayers(id)
  317. {
  318. new Players[32], Num;
  319. get_players(Players, Num);
  320. SortCustom1D(Players, Num, "sort_bestthree")
  321.  
  322. new Top1 = Players[0]
  323. new Top2 = Players[1]
  324. new Top3 = Players[2]
  325.  
  326. new TopName1[32], TopName2[32], TopName3[32]
  327. get_user_name(Top1, TopName1, charsmax(TopName1))
  328. get_user_name(Top2, TopName2, charsmax(TopName2))
  329. get_user_name(Top3, TopName3, charsmax(TopName3))
  330.  
  331. if(!SwitchFrag)
  332. {
  333. set_hudmessage(0, 255, 0, -1.0, 0.10, 0, 6.0, 30.0)
  334. if(Num == 1) show_hudmessage(0, view_hud[0], TopName1)
  335. if(Num == 2) show_hudmessage(0, view_hud[1], TopName1, TopName2)
  336. if(Num >= 3) show_hudmessage(0, view_hud[2], TopName1, TopName2, TopName3)
  337. }
  338. else
  339. {
  340. set_hudmessage(0, 127, 255, -1.0, 0.10, 0, 6.0, 0.5)
  341. if(Num == 1) show_hudmessage(0, view_hud[3], g_StartTime, g_EndTime, TopName1, kill[Top1])
  342. if(Num == 2) show_hudmessage(0, view_hud[4], g_StartTime, g_EndTime, TopName1, kill[Top1], TopName2, kill[Top2])
  343. if(Num >= 3) show_hudmessage(0, view_hud[5], g_StartTime, g_EndTime, TopName1, kill[Top1], TopName2, kill[Top2], TopName3, kill[Top3])
  344. }
  345. }
  346. public sort_bestthree(id1, id2)
  347. {
  348. if(kill[id1] > kill[id2]) return -1
  349. else if(kill[id1] < kill[id2]) return 1
  350.  
  351. return 0
  352. }
  353.