HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2. --------------------------------------------------------------
  3. ---------------------- Made by Deviance ---------------------
  4. --------------------- www.the-place.co.nr --------------------
  5. --------------------------------------------------------------
  6. */
  7. //
  8. // --| ---------- Fordította Traops (CoopCola) ------------ |--
  9. //
  10.  
  11. #include <amxmodx>
  12. #include <amxmisc>
  13. #include <fun>
  14. #include <geoip>
  15.  
  16. #define Plugin "Donation System"
  17. #define Version "1.0"
  18. #define Author "Doombringer"
  19.  
  20. new Float:speed[33], Float:Gravity[33]
  21. new health[33], armor[33], glow[33]
  22.  
  23. new bool:is_donator[33], donator_level[33]
  24. new type = 1, selected_id, selected_name[33], selected_level = 1 // Menu stuff
  25.  
  26. /* Old way of making rank names
  27. new const donator_ranks[10][] = {
  28. "Donator rank 1",
  29. "Donator rank 2",
  30. "Donator rank 3",
  31. "Donator rank 4",
  32. "Donator rank 5",
  33. "Donator rank 6",
  34. "Donator rank 7",
  35. "Donator rank 8",
  36. "Donator rank 9",
  37. "Donator rank 10"
  38. }
  39. */
  40.  
  41. new donator_ranks[33][32]
  42. new msgtext
  43.  
  44. public plugin_init()
  45. {
  46. register_plugin(Plugin, Version, Author)
  47.  
  48. register_event("CurWeapon","set_speed","be")
  49. register_event("ResetHUD", "hook_hud", "be")
  50.  
  51. register_concmd("amx_dmenu", "Main_Menu", ADMIN_LEVEL_B, "- Milyen joggal lehessen megnyitni a támogatói menüt")
  52. register_clcmd("fullupdate", "block")
  53.  
  54. msgtext = get_user_msgid("StatusText")
  55. load_ranks()
  56. }
  57.  
  58. public block()
  59. {
  60. return PLUGIN_HANDLED
  61. }
  62.  
  63. public load_ranks()
  64. {
  65. new configsdir[64], path[132]
  66. get_configsdir(configsdir, 63)
  67.  
  68. format(path, 131, "%s/donator_ranks.ini", configsdir)
  69. new file = fopen(path, "rt")
  70.  
  71. if(!file)
  72. {
  73. server_print("Could not find the donator_ranks.ini file!")
  74. return PLUGIN_HANDLED
  75. }
  76.  
  77. new Rtext[266]
  78.  
  79. new file_rank[32]
  80. new file_speed[8], file_gravity[8]
  81. new file_health[8], file_armor[8], file_glow[8]
  82.  
  83. new i = 1
  84. while(!feof(file))
  85. {
  86. fgets(file, Rtext, 265)
  87.  
  88. if( (strlen(Rtext) < 2) || (contain(Rtext, "//") != -1) )
  89. continue;
  90.  
  91. parse(Rtext, file_rank, 31, file_health, 7, file_armor, 7, file_glow, 7, file_speed, 7, file_gravity, 7)
  92.  
  93. donator_ranks[i] = file_rank
  94. speed[i] = str_to_float(file_speed)
  95.  
  96. Gravity[i] = str_to_float(file_gravity)
  97. health[i] = str_to_num(file_health)
  98.  
  99. armor[i] = str_to_num(file_armor)
  100. glow[i] = str_to_num(file_glow)
  101.  
  102. //server_print("(%d) %s - %d HP, %d AP, %d GW, %f SP, %f GY", strlen(Rtext), donator_ranks[i], health[i], armor[i], glow[i], speed[i], Gravity[i])
  103. i++
  104. }
  105.  
  106. fclose(file)
  107. server_print("Successfully loaded %d ranks", i - 1)
  108.  
  109. return PLUGIN_CONTINUE
  110. }
  111.  
  112. public check_if_donator(id, steamid[], ip[], name[])
  113. {
  114. new configsdir[64], path[132]
  115. get_configsdir(configsdir, 63)
  116.  
  117. format(path, 131, "%s/donators.ini", configsdir)
  118. new file = fopen(path, "rt")
  119.  
  120. if(!file)
  121. {
  122. server_print("Could not find the donators.ini file!")
  123. return PLUGIN_HANDLED
  124. }
  125.  
  126. new Rtext[166], file_id[38], file_level[4]
  127.  
  128. while(!feof(file))
  129. {
  130. fgets(file, Rtext, 165)
  131.  
  132. if( (strlen(Rtext) < 2) || (contain(Rtext, "//") != -1) )
  133. continue;
  134.  
  135. parse(Rtext, file_id, 37, file_level, 3)
  136.  
  137. if( (equal(file_id, steamid)) || (equal(file_id, ip))|| (equal(file_id, name)) )
  138. {
  139. is_donator[id] = true
  140. donator_level[id] = str_to_num(file_level)
  141.  
  142. break;
  143. }
  144. }
  145.  
  146. fclose(file)
  147. return PLUGIN_CONTINUE
  148. }
  149.  
  150. public give_stuff(id)
  151. {
  152. set_user_health(id, health[donator_level[id]])
  153. set_user_armor(id, armor[donator_level[id]])
  154.  
  155. if(glow[donator_level[id]] > 1)
  156. set_user_rendering(id, kRenderFxGlowShell, random(256), random(256), random(256), kRenderNormal, glow[donator_level[id]])
  157.  
  158. set_user_maxspeed(id, get_user_maxspeed(id) + speed[donator_level[id]])
  159. set_user_gravity(id, Gravity[donator_level[id]])
  160. }
  161.  
  162. public tell_level(id)
  163. {
  164. new name[32]
  165. get_user_name(id, name, 31)
  166.  
  167. client_print(id, print_chat, "Üdv itt %s. Te egy támogató vagy (Szinted %d, Rankod %s)", name, donator_level[id], donator_ranks[donator_level[id]])
  168. client_print(id, print_chat, "Az Életed, Páncélod, Gravitációd és Sebességed annál több lesz minél többet támogatod a szervert")
  169.  
  170. return PLUGIN_CONTINUE
  171. }
  172.  
  173. public client_putinserver(id)
  174. {
  175. new steamid[38], IP[22], name[32]
  176.  
  177. get_user_authid(id, steamid, 37)
  178. get_user_ip(id, IP, 21, 0)
  179.  
  180. get_user_name(id, name, 31)
  181. check_if_donator(id, steamid, IP, name)
  182.  
  183. if(is_donator[id])
  184. {
  185. new country[45]
  186. geoip_country(IP, country, 44)
  187.  
  188. set_hudmessage(0, 255, 0, -1.0, 0.28, 2, 6.0, 5.0)
  189. show_hudmessage(0, "Egy támagotó játékos %s csatlakozott a szerverre. (%s)", name, country)
  190.  
  191. set_task(3.0, "tell_level", id)
  192.  
  193. give_stuff(id)
  194. ShowHUD(id)
  195. }
  196.  
  197. return PLUGIN_CONTINUE
  198. }
  199.  
  200. public ShowHUD(id)
  201. {
  202. new HUD[121]
  203. format(HUD, 120, "[%s] Szint: %d", donator_ranks[donator_level[id]], donator_level[id])
  204.  
  205. message_begin(MSG_ONE, msgtext, {0,0,0}, id)
  206. write_byte(0)
  207. write_string(HUD)
  208. message_end()
  209.  
  210. if(is_donator[id])
  211. set_task(5.0, "ShowHUD", id)
  212. }
  213.  
  214. public set_speed(id)
  215. {
  216. if(is_donator[id])
  217. {
  218. set_user_maxspeed(id, get_user_maxspeed(id) + speed[donator_level[id]])
  219. }
  220. }
  221.  
  222. public hook_hud(id)
  223. {
  224. if(is_donator[id])
  225. {
  226. give_stuff(id)
  227. }
  228. }
  229.  
  230. public Main_Menu(id, level, cid)
  231. {
  232. if(!cmd_access(id, level, cid, 1))
  233. return PLUGIN_HANDLED
  234.  
  235. new menu = menu_create("Támogató Menü:", "main_handle")
  236.  
  237. new players[32], num, player, current_id[3]
  238. get_players(players, num)
  239.  
  240. static name[32]
  241. for(new i = 0; i < num; i++)
  242. {
  243. player = players[i]
  244.  
  245. get_user_name(player, name, 31)
  246. format(current_id, 2, "%d", player)
  247.  
  248. menu_additem(menu, name, current_id, 0)
  249. }
  250.  
  251. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  252. menu_display(id, menu, 0)
  253.  
  254. return PLUGIN_HANDLED
  255. }
  256.  
  257. public main_handle(id, menu, item)
  258. {
  259. if (item == MENU_EXIT)
  260. {
  261. menu_destroy(menu)
  262. return PLUGIN_HANDLED
  263. }
  264.  
  265. new data[6]
  266. new access, callback
  267.  
  268. menu_item_getinfo(menu, item, access, data, 2,_,_, callback)
  269.  
  270. selected_id = str_to_num(data)
  271. get_user_name(selected_id, selected_name, 31)
  272.  
  273. Selection_Menu(id)
  274.  
  275. menu_destroy(menu)
  276. return PLUGIN_HANDLED
  277. }
  278.  
  279. public Selection_Menu(id)
  280. {
  281. new menu_title[255]
  282.  
  283. format(menu_title, 254, "%s %s egy támogató", selected_name, is_donator[selected_id] == true ? "is":"is not")
  284.  
  285. new menu = menu_create(menu_title, "selection_handle")
  286.  
  287. if(is_donator[selected_id])
  288. {
  289. menu_additem(menu, "Eltávolít", "1", 0)
  290. menu_additem(menu, "Szerkeszt", "2", 0)
  291. }
  292. else
  293. {
  294. menu_additem(menu, "Hozzáad", "1", 0)
  295. }
  296.  
  297. menu_addblank(menu, 0)
  298. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  299.  
  300. menu_display(id, menu, 0)
  301. }
  302.  
  303. public selection_handle(id, menu, item)
  304. {
  305. if (item == MENU_EXIT)
  306. {
  307. menu_destroy(menu)
  308. return PLUGIN_HANDLED
  309. }
  310.  
  311. new data[6]
  312. new access, callback
  313.  
  314. menu_item_getinfo(menu, item, access, data, 2,_,_, callback)
  315. new key = str_to_num(data)
  316.  
  317. if(is_donator[selected_id])
  318. {
  319. switch(key)
  320. {
  321. case 1: Remove_Menu(id)
  322. case 2: Edit_Menu(id)
  323. }
  324. }
  325. else
  326. {
  327. switch(key)
  328. {
  329. case 1: Add_Menu(id)
  330. }
  331. }
  332.  
  333. menu_destroy(menu)
  334. return PLUGIN_HANDLED
  335. }
  336.  
  337. public Remove_Menu(id)
  338. {
  339. new menu_title[255]
  340.  
  341. format(menu_title, 254, "Eltávolítod %s?", selected_name)
  342. new menu = menu_create(menu_title, "remove_handle")
  343.  
  344. menu_additem(menu, "Igen", "1", 0)
  345. menu_additem(menu, "Nem", "2", 0)
  346.  
  347. menu_addblank(menu, 0)
  348. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  349.  
  350. menu_display(id, menu, 0)
  351. }
  352.  
  353. public remove_handle(id, menu, item)
  354. {
  355. if (item == MENU_EXIT)
  356. {
  357. menu_destroy(menu)
  358. return PLUGIN_HANDLED
  359. }
  360.  
  361. new data[6]
  362. new access, callback
  363.  
  364. menu_item_getinfo(menu, item, access, data, 2,_,_, callback)
  365. new key = str_to_num(data)
  366.  
  367. if(key == 1)
  368. {
  369. new configsdir[64], path[132]
  370. get_configsdir(configsdir, 63)
  371.  
  372. format(path, 131, "%s/donators.ini", configsdir)
  373. new file = fopen(path, "rt")
  374.  
  375. if(!file)
  376. {
  377. server_print("Nem talaltam a donators.ini fajlt!")
  378. return PLUGIN_HANDLED
  379. }
  380.  
  381. new Rtext[43], file_id[39]
  382.  
  383. new steamid[38], IP[23]
  384.  
  385. get_user_authid(selected_id, steamid, 37)
  386. get_user_ip(selected_id, IP, 22, 0)
  387.  
  388. new line
  389. while(!feof(file))
  390. {
  391. fgets(file, Rtext, 42)
  392.  
  393. if( (strlen(Rtext) < 2) || (contain(Rtext, "//") != -1) )
  394. continue;
  395.  
  396. parse(Rtext, file_id, 38)
  397.  
  398. if( (equal(steamid, file_id)) || (equal(IP, file_id)) || (equal(selected_name, file_id)) )
  399. {
  400. write_file(path, " ", line)
  401.  
  402. is_donator[selected_id] = false
  403. donator_level[selected_id] = 0
  404.  
  405. remove_task(id)
  406. client_print(id, print_chat, "Sikeresen eltávolítottad: %s, Ő többé nem támogató.", selected_name)
  407.  
  408. break;
  409. }
  410.  
  411. line++
  412. }
  413.  
  414. fclose(file)
  415. }
  416.  
  417. menu_destroy(menu)
  418. return PLUGIN_HANDLED
  419. }
  420.  
  421. public Edit_Menu(id)
  422. {
  423. new menu = menu_create("Szint szerkesztése", "edit_handle")
  424.  
  425. new menu_items[64]
  426.  
  427. format(menu_items, 63, "Növelted %s szinjét a következőre %d", selected_name, donator_level[selected_id] + 1)
  428. menu_additem(menu, menu_items, "1", 0)
  429.  
  430. format(menu_items, 63, "Csökkentetted %s szintjét a következőre %d", selected_name, donator_level[selected_id] - 1)
  431. menu_additem(menu, menu_items, "2", 0)
  432.  
  433. menu_addblank(menu, 0)
  434.  
  435. format(menu_items, 63, "Elmentetted %s szintjét", selected_name)
  436. menu_additem(menu, menu_items, "3", 0)
  437.  
  438. menu_addblank(menu, 0)
  439. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  440.  
  441. menu_display(id, menu, 0)
  442. }
  443.  
  444. public edit_handle(id, menu, item)
  445. {
  446. if (item == MENU_EXIT)
  447. {
  448. menu_destroy(menu)
  449. return PLUGIN_HANDLED
  450. }
  451.  
  452. new data[6]
  453. new access, callback
  454.  
  455. menu_item_getinfo(menu, item, access, data, 2,_,_, callback)
  456. new key = str_to_num(data)
  457.  
  458. switch(key)
  459. {
  460. case 1: donator_level[selected_id]++
  461. case 2: donator_level[selected_id]--
  462.  
  463. case 3:
  464. {
  465. new configsdir[64], path[132]
  466. get_configsdir(configsdir, 63)
  467.  
  468. format(path, 131, "%s/donators.ini", configsdir)
  469. new file = fopen(path, "rt")
  470.  
  471. if(!file)
  472. {
  473. server_print("Could not find the donators.ini file!")
  474. return PLUGIN_HANDLED
  475. }
  476.  
  477. new Rtext[43], file_id[39]
  478.  
  479. new steamid[38], IP[23]
  480.  
  481. get_user_authid(selected_id, steamid, 37)
  482. get_user_ip(selected_id, IP, 22, 0)
  483.  
  484. new line
  485. while(!feof(file))
  486. {
  487. fgets(file, Rtext, 42)
  488.  
  489. if( (strlen(Rtext) < 2) || (contain(Rtext, "//") != -1) )
  490. continue;
  491.  
  492. parse(Rtext, file_id, 38)
  493.  
  494. if( (equal(steamid, file_id)) || (equal(IP, file_id)) || (equal(selected_name, file_id)) )
  495. {
  496. new line_text[41]
  497. format(line_text, 40, "^"%s^" ^"%d^"", file_id, donator_level[selected_id])
  498.  
  499. write_file(path, line_text, line)
  500. client_print(id, print_chat, "Sikeresen elmentetted %s szintjét a támogatói fájlba", selected_name)
  501.  
  502. break;
  503. }
  504.  
  505. line++
  506. }
  507.  
  508. fclose(file)
  509. }
  510. }
  511.  
  512. Edit_Menu(id)
  513. return PLUGIN_HANDLED
  514. }
  515.  
  516. public Add_Menu(id)
  517. {
  518. new menu = menu_create("Támogató Hozzáadása", "add_handle")
  519. new menu_items[64], add_type[9]
  520.  
  521. menu_additem(menu, "Save to file", "1", 0)
  522.  
  523. switch(type)
  524. {
  525. case 1: copy(add_type, 8, "Steamid")
  526. case 2: copy(add_type, 8, "IP")
  527. case 3: copy(add_type, 8, "Name")
  528. }
  529.  
  530. format(menu_items, 63, "Hozzadás: %s", add_type)
  531. menu_additem(menu, menu_items, "2", 0)
  532.  
  533. menu_addblank(menu, 0)
  534.  
  535. format(menu_items, 63, "Magasabb szntet neki: %d", selected_level + 1)
  536. menu_additem(menu, menu_items, "3", 0)
  537.  
  538. format(menu_items, 63, "Alacsonyabb szintet neki: %d", selected_level - 1)
  539. menu_additem(menu, menu_items, "4", 0)
  540.  
  541. menu_addblank(menu, 0)
  542. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  543.  
  544. menu_display(id, menu, 0)
  545. }
  546.  
  547. public add_handle(id, menu, item)
  548. {
  549. if (item == MENU_EXIT)
  550. {
  551. menu_destroy(menu)
  552. return PLUGIN_HANDLED
  553. }
  554.  
  555. new data[6]
  556. new access, callback
  557.  
  558. menu_item_getinfo(menu, item, access, data, 2,_,_, callback)
  559. new key = str_to_num(data)
  560.  
  561. switch(key)
  562. {
  563. case 1:
  564. {
  565. new configsdir[64], path[132]
  566. get_configsdir(configsdir, 63)
  567.  
  568. format(path, 131, "%s/donators.ini", configsdir)
  569. new file = fopen(path, "at")
  570.  
  571. if(!file)
  572. {
  573. server_print("Nem talaltam a donators.ini fajlt!")
  574. return PLUGIN_HANDLED
  575. }
  576.  
  577. new add_by[38]
  578.  
  579. switch(type)
  580. {
  581. case 1: get_user_authid(selected_id, add_by, 37)
  582. case 2: get_user_ip(selected_id, add_by, 37, 0)
  583. case 3: copy(add_by, 37, selected_name)
  584. }
  585.  
  586. new add_user[41]
  587. format(add_user, 40, "^"%s^" ^"%d^"^n", add_by, selected_level)
  588.  
  589. fprintf(file, add_user, 40)
  590. fclose(file)
  591.  
  592. is_donator[selected_id] = true
  593. donator_level[selected_id] = selected_level
  594.  
  595. ShowHUD(selected_id)
  596. client_print(id, print_chat, "Sikeresen hozzáadtad: %s, Ő mostantól támogató.", selected_name)
  597.  
  598. type = 1
  599. selected_level = 1
  600.  
  601. menu_destroy(menu)
  602. return PLUGIN_HANDLED
  603. }
  604.  
  605. case 2:
  606. {
  607. if(type >= 3)
  608. {
  609. type = 1
  610. Add_Menu(id)
  611.  
  612. return PLUGIN_HANDLED
  613. }
  614.  
  615. type++
  616. Add_Menu(id)
  617.  
  618. return PLUGIN_HANDLED
  619. }
  620.  
  621. case 3: selected_level++
  622. case 4: selected_level--
  623. }
  624.  
  625. Add_Menu(id)
  626. return PLUGIN_HANDLED
  627. }