关于saytext事件的正确用法...
SayText事件的参数:byte, string, string, string
1: Destination, 2: Predefined String, 3: Unknown, 4: Text said
Destination can be 1=notify, 2=console, 3=chat, or 4=center
Some values of the predifined string: #Cstrike_Chat_AllDead, #Cstrike_Chat_All
我用了参数4,但是实际上还是在左下角显示,是不是这个参数已经不管用了呢...
即使我把write_byte注释掉也能正常编译和使用...
以上是在论坛以前发贴中找到的内容 但是对比这段代码:
new message; //message已经formatex了,呵呵
message_begin( MSG_ONE, get_user_msgid("SayText"), _, playerid )
write_byte( id)
write_string( message )
message_end( )
发现明显不同 是随着cs版本的升级 event事件的定义有了变化的缘故吗? 哪位可以发一个最新的event事件的集合文件或者告知如何去查最新的event事件参数
回复: 关于saytext事件的正确用法...
第一个参数并不是那个意思,而是指哪个玩家,这个ID是用来控制颜色的。参考我发的“彩色聊天信息”这个帖子。第二个参数为字符串、第三个以后为可选字符串,一般是用于当参数二中有“%s”时的补充(类似于format函数的使用),如:message_begin(....)
write_byte(color_id)
write_string("^0x03玩家 %s 将名字改为 %s")
write_string(oldname)
write_string(newname)
message_end()
回复: 关于saytext事件的正确用法...
非常感谢Rulzy的耐心解答player = players
message_begin(MSG_ONE,saytext_msgid,{0,0,0},player)
write_byte(player)
请看这段代码.在msg_one的前提下,既然player已经是消息发生的玩家id了,也就是目标玩家index已经传递过去了,再加个write_byte(player)是不是多次一举了呢,如果我把write_byte这一行注释掉也是可以正确发给符合get_players要求的玩家的吧``
如果是msg_all,那么就可以完全不必写了吧``
回复: 关于saytext事件的正确用法...
write_byte(player)这个是用来控制颜色的,即后面字符串中“^x03”后面的内容的颜色,这个跟 message_begin 最后一个参数不是一个意思。打比方说,想要模拟玩家say的功能:
public plugin_init()
{
........
register_clcmd("say2", "cmdSay2");
........
}
public cmdSay2(id)
{
new text
read_argv(1, text, 255)
trim(text)
if(!text) return PLUGIN_HANDLED;
new name
get_user_name(id, name, 31);
new max_players = get_maxplayers()
for(new i=1;i<=max_players;i++)
{
if(!is_user_connected(i)) continue;
message_begin(MSG_ONE, get_user_msgid("SayText"), _, i)
write_byte(id)
write_string("^x03%s^x01 说:%s");
write_string(name)
write_string(text)
message_end()
}
return PLUGIN_HANDLED
}
这样,如果 id 是警察,不管谁看到他说的内容,他的名字都会显示为蓝色,如果为土匪,则会显示为红色,如果是观察员,则显示为灰色。
不知道你明白了不?
回复: 关于saytext事件的正确用法...
我明白了 message_begin那个参数是确定信息的发生idwrite_byte 的id是用来判断警匪,从而得出蓝红
由此才能完美模拟say
非常感谢Ruzly的回复~~这次彻底弄懂了 xixi
回复: 关于saytext事件的正确用法...
:confused: 我不会
页:
[1]