搜索
查看: 2740|回复: 3

有关hook的疑问:如何写只屏蔽某个武器的杀人信息?

[复制链接]
发表于 2008-5-14 10:14:49 | 显示全部楼层 |阅读模式 来自 中国–广东–深圳
有关hook的疑问。

下面的代码把所有的武器杀人的消息都屏蔽了,如何改可以实现只屏蔽某个武器的杀人信息?

因为如果在Change_Death中设置一个变量来改变武器杀死人的信息标识,但是还没等这个值变化的时候,Block_Message已经执行了,下面的2个函数执行是同步的。

代码摘自fight club 1.0

[php]

register_event("DeathMsg", "Change_Death", "a","4&kni")
register_message(get_user_msgid("DeathMsg"),"Block_Message");


public Change_Death()
{
new Attacker = read_data(1)
new Victim = read_data(2)
new Headshot = read_data(3)

// new wpnname[6]
//read_data(6,wpnname,5)


if(Victim != Attacker)
{  
  message_begin(MSG_ALL, get_user_msgid("DeathMsg"))
  write_byte(Attacker)
  write_byte(Victim)
  write_byte(Headshot)
  write_string("fight")
  message_end()
}


return PLUGIN_HANDLED
}

public Block_Message(msg_id,msg_dest,msg_entity)
{
if(msg_id == get_user_msgid("DeathMsg"))
{
  
  return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}
[/php]
发表于 2008-5-14 10:55:18 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 有关hook的疑问:如何写只屏蔽某个武器的杀人信息?

  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #define PLUGIN "Test"
  4. #define AUTHOR "Jim"
  5. #define VERSION "1.0"
  6. public plugin_init()
  7. {
  8. register_plugin(PLUGIN, VERSION, AUTHOR)
  9. register_message(get_user_msgid("DeathMsg"), "death")
  10. }
  11. public death(msg_id, msg_dest, msg_entity)
  12. {
  13. new weapon[20]
  14. get_msg_arg_string(4, weapon, 19)
  15. if(equal(weapon, "grenade"))
  16.   return PLUGIN_HANDLED
  17. return PLUGIN_CONTINUE
  18. }
复制代码
这个例子是不显示手雷杀人信息
回复

使用道具 举报

 楼主| 发表于 2008-5-14 11:16:34 | 显示全部楼层 来自 中国–广东–深圳

回复: 有关hook的疑问:如何写只屏蔽某个武器的杀人信息?

Post by jim_yang
[code]
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Test"
#define AUTHOR "Jim"
#define VERSION "1.0"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("DeathMsg"), "death")
}
public...

感谢,我已经按照你的改了,晚上我再测试一下。
回复

使用道具 举报

 楼主| 发表于 2008-5-14 21:18:10 | 显示全部楼层 来自 中国–广东–深圳

回复: 有关hook的疑问:如何写只屏蔽某个武器的杀人信息?

测试ok,特来表示感谢。。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表