关于屏蔽玩家radio语音和信息的问题
我想编写了一个插件,功能是屏蔽掉玩家发送radio时的信息,即仅仅是保留语音部分,信息就不要显示了.#include <amxmodx>
public plugin_init() {
register_plugin("Hook Radio", "1.0", "X-man");
register_concmd("radio1", "hook_radio");
register_concmd("radio2", "hook_radio");
register_concmd("radio3", "hook_radio");
}
public hook_radio() {
return PLUGIN_HANDLED;
}
上面的代码可以实现屏蔽radio的功能,但有BUG:
1. 虽然可以屏蔽掉radio1,radio2和radio3的所有信息,但当玩家扔O3,O4和O5时却无法屏蔽掉这句信息“Fire in the hold!”.
2. 插件居然把radio的语音和信息全都屏蔽掉了,按C,X和Z键居然不出现radio的信息列表了,其实我只是想屏蔽掉文字信息部分而已,语音部分我是不想屏蔽的.
Rulzy版主,能帮忙看看是什么原因吗?
回复: 关于屏蔽玩家radio语音和信息的问题
if(equal(arg5,"#Go_go_go")){//Msg GoGoGo
format(saymsg,255,"^x03%s^x04【对讲机】^x03: 都冲上去!!!",arg4)
彩色对讲机里面不是有这样的代码吗?
回复: 关于屏蔽玩家radio语音和信息的问题
客户端命令radio1,就是指玩家按Z键打开radio信息菜单的事件,你在这个时候return plugin_handled,后果可想而知。回复: 关于屏蔽玩家radio语音和信息的问题
再向高手请教一个问题,我使用了这个彩色对讲机插件(colored_radio.amxx),发现如果扔雷的话屏幕的左下方会出现两个信息:第一个是CS系统本身的radio信息: xxx (无线电): 小心手雷 !
第二个是插件里面自定义的信息: xxx (对讲机): 注意 !扔手榴弹了 !
其实只显示一个信息就足够了,所以我想问一下,怎么才能去掉那句CS系统本身的radio信息?(仅保留插件里面自定义的信息就可以了。)
#include <amxmodx>
#include <amxmisc>
#include <Engine>
#define PLUGIN_NAME "Colored Radio"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "zwfgdlc"
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_message(get_user_msgid("TextMsg"),"color_radio")
}
public color_radio(msgid, msgDest, msgEnt){
new argNum = get_msg_args()
if (argNum!=5) return PLUGIN_CONTINUE
if (get_msg_argtype(1)!=ARG_BYTE) return PLUGIN_CONTINUE
new arg1=get_msg_arg_int(1)
if (arg1!=5) return PLUGIN_CONTINUE
new arg3
get_msg_arg_string(3,arg3,255)
if(equal(arg3,"#Game_radio")){
new arg4,arg5
get_msg_arg_string(4,arg4,32)
get_msg_arg_string(5,arg5,128)
if(equal(arg5,"#Fire_in_the_hole")){
return 1
}
}
return PLUGIN_CONTINUE
}
public grenade_throw(id, greindex, wpnid)
{
new msg
new thname
new pindex
pindex=id
switch(wpnid)
{
case CSW_HEGRENADE:
{
get_user_name(id,thname,31)
format(msg,63,"^x03%s ^x01(对讲机):^x04 注意! 扔手榴弹了!",thname)
}
case CSW_FLASHBANG:
{
get_user_name(id,thname,31)
format(msg,63,"^x03%s ^x01(对讲机):^x04 注意! 扔闪光弹了!",thname)
}
case CSW_SMOKEGRENADE:
{
get_user_name(id,thname,31)
format(msg,63,"^x03%s ^x01(对讲机):^x04 注意! 扔烟雾弹了!",thname)
}
}
client_color(0,id,msg)
}
public client_color(playerid, colorid, msg[])
{
message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),{0,0,0},playerid)
write_byte(colorid)
write_string(msg)
message_end()
}
回复: 关于屏蔽玩家radio语音和信息的问题
理论上应该不会有系统的那个信息出来,你再试下.回复: 关于屏蔽玩家radio语音和信息的问题
#include <amxmodx>#include <amxmisc>
#include <Engine>
#define PLUGIN_NAME "Colored Radio"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "zwfgdlc"
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_message(get_user_msgid("TextMsg"),"color_radio")
}
public color_radio(msgid, msgDest, msgEnt)
{
new argNum = get_msg_args()
if (argNum!=5) return PLUGIN_CONTINUE
if (get_msg_argtype(1)!=ARG_BYTE) return PLUGIN_CONTINUE
new arg1=get_msg_arg_int(1)
if (arg1!=5) return PLUGIN_CONTINUE
new arg3
get_msg_arg_string(3,arg3,255)
if(equal(arg3,"#Game_radio"))
{
new arg5
get_msg_arg_string(5,arg5,128)
if(equal(arg5,"#Fire_in_the_hole"))
{
return 1
}
}
return PLUGIN_CONTINUE
}
public grenade_throw(id, greindex, wpnid)
{
new msg
new thname
new pindex
pindex=id
switch(wpnid)
{
case CSW_HEGRENADE:
{
get_user_name(id,thname,31)
format(msg,63,"%s (RADIO): I threw a grenade !",thname)
}
case CSW_FLASHBANG:
{
get_user_name(id,thname,31)
format(msg,63,"%s (RADIO): I threw a flashbang !",thname)
}
case CSW_SMOKEGRENADE:
{
get_user_name(id,thname,31)
format(msg,63,"%s (RADIO): I threw a smokegrenade !",thname)
}
}
client_color(0,id,msg)
}
public client_color(playerid, colorid, msg[])
{
message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),{0,0,0},playerid)
write_byte(colorid)
write_string(msg)
message_end()
}
我把插件的中文翻译成英文后,放到CS1.5里测试,结果失败了,还是会出现那句CS系统本身的radio信息.(参见截图)
回复: 关于屏蔽玩家radio语音和信息的问题
zwfgdlc楼主,麻烦你帮忙再修正一下.
页:
[1]