HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. // FORDITAS BY: PaT. ~ arenacity@windowslive.com
  2. // www.amxx.try.hu
  3.  
  4. #include <amxmodx>
  5. #include <amxmisc>
  6. #include <fakemeta>
  7. #include <fun>
  8. #include <hamsandwich>
  9.  
  10. #define VERSION "1.5"
  11.  
  12. new g_enable, knife_fight, g_maxplayers, g_IsBot[33],
  13. g_msgsync, g_PlayerWeapons[33], g_playername[33][32],
  14. g_msgCurWeapon, cvar_showhud, cvar_offnoadm
  15.  
  16. new gBuyCommands[][] =
  17. {
  18. "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",
  19. "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren",
  20. "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge",
  21. "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550",
  22. "buyammo1", "buyammo2"
  23. }
  24.  
  25. public plugin_init()
  26. {
  27. register_plugin("Knife Fight", VERSION, "alan_el_more")
  28.  
  29. register_cvar("kf_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  30.  
  31. register_dictionary("Knife_Fight.txt")
  32.  
  33. g_enable = register_cvar("kf_enable", "1")
  34. cvar_showhud = register_cvar("kf_showhud", "1")
  35. cvar_offnoadm = register_cvar("kf_offnoadm", "1")
  36.  
  37. register_clcmd("say /kf", "cmdkf", ADMIN_KICK)
  38.  
  39. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  40.  
  41. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  42. RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
  43. RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
  44. RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
  45.  
  46. g_msgsync = CreateHudSyncObj()
  47. g_maxplayers = get_maxplayers()
  48.  
  49. for (new i; i < sizeof gBuyCommands; i++)
  50. register_clcmd(gBuyCommands[i], "BlockBuyCommands")
  51.  
  52. register_event("CurWeapon", "event_cur_weapon", "b", "1=1")
  53. g_msgCurWeapon = get_user_msgid("CurWeapon")
  54. }
  55.  
  56. public cmdkf(id, level, cid)
  57. {
  58. if(get_pcvar_num(g_enable))
  59. {
  60. if (!cmd_access(id, level, cid, 1))
  61. return PLUGIN_HANDLED
  62.  
  63. if(knife_fight)
  64. {
  65. if(get_pcvar_num(cvar_showhud))
  66. {
  67. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  68. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE_ADM", g_playername[id])
  69. }
  70.  
  71. knife_fight = false
  72.  
  73. for(new id = 1;id <= g_maxplayers;id++)
  74. {
  75. if(is_user_alive(id))
  76. restore_weapons(id)
  77. }
  78. }
  79. else
  80. {
  81. if(get_pcvar_num(cvar_showhud))
  82. {
  83. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  84. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_ENABLE", g_playername[id])
  85. }
  86.  
  87. knife_fight = true
  88.  
  89. for(new id = 1;id <= g_maxplayers;id++)
  90. {
  91. if(is_user_alive(id))
  92. {
  93. g_PlayerWeapons[id] = pev(id , pev_weapons) &~ ( 1 << 31 )
  94.  
  95. strip_user_weapons(id)
  96. give_item(id, "weapon_knife")
  97. }
  98. }
  99. }
  100. }
  101. else
  102. client_print(id, print_chat, "[KF] %L", id, "KF_DISABLE")
  103.  
  104. return PLUGIN_HANDLED
  105. }
  106.  
  107. public event_round_start()
  108. {
  109. if(get_pcvar_num(cvar_offnoadm) && !fnGetAdms() && knife_fight)
  110. {
  111. knife_fight = false
  112.  
  113. if(get_pcvar_num(cvar_showhud))
  114. {
  115. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  116. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE")
  117. }
  118.  
  119. return PLUGIN_HANDLED
  120. }
  121.  
  122. if(knife_fight)
  123. {
  124. if(get_pcvar_num(cvar_showhud))
  125. {
  126. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  127. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_KF")
  128. }
  129. }
  130.  
  131. return PLUGIN_CONTINUE
  132. }
  133.  
  134. public fw_PlayerSpawn_Post(id)
  135. {
  136. if (!is_user_alive(id))
  137. return
  138.  
  139. if(get_pcvar_num(g_enable) && knife_fight)
  140. {
  141. strip_user_weapons(id)
  142. give_item(id, "weapon_knife")
  143. }
  144. }
  145.  
  146. public fw_TouchWeapon(weapon, id)
  147. {
  148. if (knife_fight && (1 <= id <= g_maxplayers) && !g_IsBot[id])
  149. return HAM_SUPERCEDE
  150.  
  151. return HAM_IGNORED
  152. }
  153.  
  154. public client_putinserver(id)
  155. {
  156. g_IsBot[id] = is_user_bot(id)
  157.  
  158. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  159. }
  160.  
  161. public client_infochanged(id)
  162. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  163.  
  164. public restore_weapons(id)
  165. {
  166. new iValue = g_PlayerWeapons[id]
  167.  
  168. for(new j = 1 ; j <= 30 ; j++)
  169. {
  170. if ((1 & (iValue >> j)) && (j != 2) && (j != CSW_C4) && (j != CSW_KNIFE))
  171. {
  172. static szWeapon[32]
  173. get_weaponname(j, szWeapon, 31)
  174. give_item(id, szWeapon)
  175. }
  176. }
  177. }
  178.  
  179. fnGetAdms()
  180. {
  181. new adms, id
  182. adms = 0
  183.  
  184. for(id = 1;id <= g_maxplayers;id++)
  185. {
  186. if(get_user_flags(id) & ADMIN_KICK)
  187. adms++
  188. }
  189.  
  190. return adms
  191. }
  192.  
  193. public BlockBuyCommands(id)
  194. return knife_fight ? PLUGIN_HANDLED : PLUGIN_CONTINUE
  195.  
  196. public event_cur_weapon(id)
  197. {
  198. if (!is_user_alive(id))
  199. return;
  200.  
  201. if (knife_fight && !((1<<read_data(2)) & (1<<CSW_KNIFE)))
  202. {
  203. engclient_cmd(id, "weapon_knife")
  204.  
  205. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  206. ewrite_byte(1)
  207. ewrite_byte(CSW_KNIFE)
  208. ewrite_byte(-1)
  209. emessage_end()
  210. }
  211. }
  212. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  213. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
  214. */
  215.