mythkina 发表于 2008-4-25 14:13:20

关于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事件参数

Rulzy 发表于 2008-4-27 18:47:11

回复: 关于saytext事件的正确用法...

第一个参数并不是那个意思,而是指哪个玩家,这个ID是用来控制颜色的。参考我发的“彩色聊天信息”这个帖子。第二个参数为字符串、第三个以后为可选字符串,一般是用于当参数二中有“%s”时的补充(类似于format函数的使用),如:
message_begin(....)
write_byte(color_id)
write_string("^0x03玩家 %s 将名字改为 %s")
write_string(oldname)
write_string(newname)
message_end()

mythkina 发表于 2008-4-28 21:21:10

回复: 关于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,那么就可以完全不必写了吧``

Rulzy 发表于 2008-4-30 23:05:51

回复: 关于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 是警察,不管谁看到他说的内容,他的名字都会显示为蓝色,如果为土匪,则会显示为红色,如果是观察员,则显示为灰色。
不知道你明白了不?

mythkina 发表于 2008-5-2 23:28:22

回复: 关于saytext事件的正确用法...

我明白了 message_begin那个参数是确定信息的发生id
write_byte 的id是用来判断警匪,从而得出蓝红
由此才能完美模拟say

非常感谢Ruzly的回复~~这次彻底弄懂了 xixi

qqoo 发表于 2008-5-3 13:53:28

回复: 关于saytext事件的正确用法...

:confused: 我不会
页: [1]
查看完整版本: 关于saytext事件的正确用法...