Cr@zyTreE 发表于 2008-5-14 10:14:49

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

有关hook的疑问。

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

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

代码摘自fight club 1.0



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
//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
}

jim_yang 发表于 2008-5-14 10:55:18

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


#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 death(msg_id, msg_dest, msg_entity)
{
new weapon
get_msg_arg_string(4, weapon, 19)
if(equal(weapon, "grenade"))
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

这个例子是不显示手雷杀人信息

Cr@zyTreE 发表于 2008-5-14 11:16:34

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

Post by jim_yang

#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...

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

Cr@zyTreE 发表于 2008-5-14 21:18:10

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

测试ok,特来表示感谢。。
页: [1]
查看完整版本: 有关hook的疑问:如何写只屏蔽某个武器的杀人信息?