HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. //////////////////////////////////////////////
  2. // C4 TAKER //
  3. // ======================================== //
  4. // //
  5. // Engedélyezi egy játékosnak a bomba át- //
  6. // vételét (T csapat) célzás alapján és //
  7. // az "USE" gomb lenyomásával. (alap "E") //
  8. // //
  9. // SPECIAL THANKS To: joaquimandrade, //
  10. // ConnorMcLeod, wickked, JusTGo, VEN //
  11. // & HamletEagle //
  12. //////////////////////////////////////////////
  13.  
  14. #include <amxmodx>
  15. #include <amxmisc>
  16. #include <fakemeta_util>
  17. #include <hamsandwich>
  18.  
  19. new const plugin[] = "C4 Taker"
  20. new const author[] = "hellmonja & HamletEagle"
  21. new const version[] = "1.09"
  22.  
  23. new num[33], admin_only, take_from_humans, max_dist, hud_limiter;
  24.  
  25. public plugin_init()
  26. {
  27. register_plugin(plugin, version, author);
  28. register_logevent("Bomb_Carrier_Spawned", 3, "2=Spawned_With_The_Bomb");
  29. register_event("StatusValue", "EventStatusValue_PlayerID", "b", "1=2", "2>0");
  30. register_event("StatusValue", "Event_StatusValue_Hide", "be", "1=1", "2=0");
  31. RegisterHam(Ham_ObjectCaps, "player", "Use_Button");
  32.  
  33. //CVAR-ok
  34. admin_only = register_cvar("c4t_admin_only", "1"); //alapból csak az adminoknak működik, '0' esetén mindenkinek (T csapaton belül mindkét esetben)
  35. take_from_humans = register_cvar("c4t_take_from_humans", "0"); //'1' hogy emberektől is elvehető legyen a C4, máskülönben csak a botoktól
  36. max_dist = register_cvar("c4t_max_distance", "120"); //maximum távolság ahonnan átveheted
  37. hud_limiter = register_cvar("c4t_hud", "5"); //hányszor jelenjen meg a HUD üzenet, '0' kikapcs, maximum '9999'
  38. }
  39.  
  40. public Bomb_Carrier_Spawned()
  41. {
  42. new carrier = get_loguser_index();
  43. if(is_user_admin(carrier))
  44. return
  45.  
  46. if(get_pcvar_num(admin_only) == 2)
  47. {
  48. new player, players[32], num, admins[32], count
  49. get_players(players, num, "ae", "TERRORIST")
  50.  
  51. for(new i; i < num; i++)
  52. {
  53. player = players[i];
  54. if(is_user_admin(player))
  55. admins[count++] = player
  56. }
  57.  
  58. new taker = admins[random_num(0, count - 1)]
  59. fm_transfer_user_gun(carrier, taker, CSW_C4);
  60. }
  61. }
  62.  
  63. public EventStatusValue_PlayerID(id) //Esemény amely észleli ha egy játékosra célzol
  64. {
  65. if(!is_user_alive(id))
  66. return
  67.  
  68. new idAim, body, dist = get_pcvar_num(max_dist), limiter = get_pcvar_num(hud_limiter);
  69. get_user_aiming(id, idAim, body, dist);
  70.  
  71. if(!is_user_alive(idAim))
  72. return
  73.  
  74. if(!is_user_admin(id) && get_pcvar_num(admin_only) >= 1)
  75. return //HUD üzenet nem jelenik meg ha az admin_only 1-en van és nem vagy admin
  76.  
  77. if(get_pcvar_num(take_from_humans) == 0 && !is_user_bot(idAim))
  78. return
  79.  
  80. if(get_user_team(id) == get_user_team(idAim) && user_has_weapon(idAim, CSW_C4) && num[id] <= limiter)
  81. {
  82. set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 3.0, 2.0, 0.5, 1.0, 4);
  83. show_hudmessage(id, "Nyomd meg az 'E' gombot a C4 átvételéhez.");
  84. num[id]++; // Limit: ha eléri a megadott számot akkor a HUD üzenet eltűnik
  85. }
  86. }
  87.  
  88. public Event_StatusValue_Hide(id) //HUD üzenet eltűnik ha már nem nézel a bombát hordozó játékosra
  89. {
  90. set_hudmessage(0, 0, 0, -1.0, 0.40, 0, 3.0, 0.1, 0.1, 0.1, 4);
  91. show_hudmessage(id, " ");
  92. }
  93.  
  94. Take_C4(id) //C4 elvétele funckió
  95. {
  96. new idAim, body, dist = get_pcvar_num(max_dist);
  97. get_user_aiming(id, idAim, body, dist);
  98.  
  99. if(!is_user_alive(idAim))
  100. return
  101.  
  102. if(!is_user_admin(id) && get_pcvar_num(admin_only) >= 1)
  103. return //Take_C4 nem fut le ha az admin_only 1-en van és nem vagy admin
  104.  
  105. if(get_pcvar_num(take_from_humans) == 0 && !is_user_bot(idAim))
  106. return //Ha egy emberre nézel de a 'take_from_humans' 0, akkor nem veheted el a C4-et
  107.  
  108. if((get_user_team(id) == get_user_team(idAim)) && user_has_weapon(idAim, CSW_C4))
  109. {
  110. fm_transfer_user_gun(idAim, id, CSW_C4); //C4 átadása funkció
  111. new playername[32];
  112. get_user_name(id, playername, charsmax(playername));
  113. set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 3.0, 2.0, 0.5, 1.0, 4);
  114. show_hudmessage(idAim, "%s has taken the C4 from you.", playername); //Játékos értesítése hogy elvették tőle a bombát
  115. }
  116. }
  117.  
  118. public Use_Button(id) //Funckió ami lefut ha megnyomod az 'E' vagy az "USE" gombot
  119. {
  120. if(is_user_alive(id))
  121. if(pev(id,pev_button) & IN_USE) //Ellenőrzi hogy megnyomtad-e az "USE" gombot
  122. Take_C4(id); //C4 funckió hívása
  123. }
  124.  
  125. public client_disconnect(id)
  126. num[id] = 0; //Nullázódik ha a játékos kilép
  127.  
  128. stock get_loguser_index()
  129. {
  130. new loguser[80], name[32];
  131. read_logargv(0, loguser, charsmax(loguser));
  132. parse_loguser(loguser, name, charsmax(name));
  133.  
  134. return get_user_index(name);
  135. }
  136.