搜索
查看: 3095|回复: 5

关于saytext事件的正确用法...

[复制链接]
发表于 2008-4-25 14:13:20 | 显示全部楼层 |阅读模式 来自 中国–辽宁–沈阳
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[64]; //message已经formatex了,呵呵
message_begin( MSG_ONE, get_user_msgid("SayText"), _, playerid )
write_byte( id)
write_string( message )
message_end( )

发现明显不同 是随着cs版本的升级 event事件的定义有了变化的缘故吗? 哪位可以发一个最新的event事件的集合文件或者告知如何去查最新的event事件参数
发表于 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()
回复

使用道具 举报

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

使用道具 举报

发表于 2008-4-30 23:05:51 | 显示全部楼层 来自 中国–福建–厦门

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

write_byte(player)
这个是用来控制颜色的,即后面字符串中“^x03”后面的内容的颜色,这个跟 message_begin 最后一个参数不是一个意思。打比方说,想要模拟玩家say的功能:
  1. public plugin_init()
  2. {
  3.   ........
  4.   register_clcmd("say2", "cmdSay2");
  5.   ........
  6. }
  7. public cmdSay2(id)
  8. {
  9.   new text[256]
  10.   read_argv(1, text, 255)
  11.   trim(text)
  12.   if(!text[0]) return PLUGIN_HANDLED;
  13.   new name[32]
  14.   get_user_name(id, name, 31);
  15.   new max_players = get_maxplayers()
  16.   for(new i=1;i<=max_players;i++)
  17.   {
  18.     if(!is_user_connected(i)) continue;
  19.     message_begin(MSG_ONE, get_user_msgid("SayText"), _, i)
  20.     write_byte(id)
  21.     write_string("^x03%s^x01 说:%s");
  22.     write_string(name)
  23.     write_string(text)
  24.     message_end()
  25.   }
  26.   return PLUGIN_HANDLED
  27. }
复制代码
这样,如果 id 是警察,不管谁看到他说的内容,他的名字都会显示为蓝色,如果为土匪,则会显示为红色,如果是观察员,则显示为灰色。
不知道你明白了不?
回复

使用道具 举报

 楼主| 发表于 2008-5-2 23:28:22 | 显示全部楼层 来自 中国–河南

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

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

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

使用道具 举报

发表于 2008-5-3 13:53:28 | 显示全部楼层 来自 中国–广西–南宁

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

:confused: 我不会
回复

使用道具 举报

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

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