HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #tryinclude <reapi>
  3.  
  4. #if !defined _reapi_included
  5. #include <fakemeta>
  6. #endif
  7.  
  8. #if AMXX_VERSION_NUM < 183
  9. #define client_disconnected client_disconnect
  10. #endif
  11.  
  12. const ACCESS_FLAG = ADMIN_BAN // 'd'
  13.  
  14. new g_iSpeakBitSum
  15.  
  16. public plugin_init() {
  17. register_plugin("Admin Voice Chat", "0.3", "mx?!")
  18.  
  19. #if defined _reapi_included
  20. RegisterHookChain(RG_CSGameRules_CanPlayerHearPlayer, "CanPlayerHearPlayer_Pre")
  21. #else
  22. register_forward(FM_Voice_SetClientListening, "OnSetClientListening_Pre")
  23. #endif
  24.  
  25. register_clcmd("+adminvoice", "func_AdminVoiceOn")
  26. register_clcmd("-adminvoice", "func_AdminVoiceOff")
  27. }
  28.  
  29. #if defined _reapi_included
  30. public CanPlayerHearPlayer_Pre(iReceiver, iSender) {
  31. if(!IsSpeak(iSender)) {
  32. return HC_CONTINUE
  33. }
  34.  
  35. SetHookChainReturn(ATYPE_BOOL, (get_user_flags(iReceiver) & ACCESS_FLAG) ? true : false)
  36. return HC_SUPERCEDE
  37. }
  38. #else
  39. public OnSetClientListening_Pre(iReceiver, iSender, bool:bCanHear) {
  40. if(!IsSpeak(iSender)) {
  41. return FMRES_IGNORED
  42. }
  43.  
  44. engfunc(EngFunc_SetClientListening, iReceiver, iSender, (get_user_flags(iReceiver) & ACCESS_FLAG) ? true : false)
  45. return FMRES_SUPERCEDE
  46. }
  47. #endif
  48.  
  49. public func_AdminVoiceOn(id) {
  50. if((get_user_flags(id) & ACCESS_FLAG) && !IsSpeak(id)) {
  51. SetSpeak(id)
  52. client_cmd(id, "+voicerecord")
  53. }
  54.  
  55. return PLUGIN_HANDLED
  56. }
  57.  
  58. public func_AdminVoiceOff(id) {
  59. if((get_user_flags(id) & ACCESS_FLAG) && IsSpeak(id)) {
  60. ClearSpeak(id)
  61. client_cmd(id, "-voicerecord")
  62. }
  63.  
  64. return PLUGIN_HANDLED
  65. }
  66.  
  67. public client_disconnected(id) {
  68. ClearSpeak(id)
  69. }
  70.  
  71. stock SetSpeak(id) (g_iSpeakBitSum |= (1 << id))
  72. stock IsSpeak(id) return (g_iSpeakBitSum & (1 << id))
  73. stock ClearSpeak(id) (g_iSpeakBitSum &= ~(1 << id))
  74.