搜索
查看: 2644|回复: 3

message_begin相关函数的疑问

[复制链接]
发表于 2007-11-18 16:19:21 | 显示全部楼层 |阅读模式 来自 中国–北京–北京
message_begin相关函数的疑问
这是函数定义: MESSAGE_BEGIN(msgDest, msgType, msgOrigin, msgpEntity);        
Msg.Send();        
MESSAGE_END();

在使用中 msgType用get_user_msgid( "SayText" )等来填充

//get_user_msgid - Returns id of client message 其中 SayText是一个event

这里的疑问是msgType为什么会和user相关?
难道它和client_print定义的enum:
print_chat - chat text
print_console - console message
print_notify - console in dev mode
print_center - center say 不同吗?

难道每个人触发SayText的msgid不同?

此外对于msgOrigin也是一头雾水 这咚咚到底是做什么用的...

如果msgEntity我设置为 player那末:write_byte ( player ); 到底起什么作用呢? 不写不可以吗

//write_byte - Writes a single byte to a message.

另外参考了Rulzy斑斑的颜色说明写了如下代码:

format(Message, 163, "^x01[AMXX] ^x03%s ^x01杀死 ^x03%s ^x01获得 ^x04%d ^x01点HP奖励", nameAttacker, nameVictim, gainedHp );

//^x03后对应队伍颜色,即colorid为土匪时显示为红色,colorid为警察时显示为蓝色,colorid为观察员时显示为灰色

首先假设message是群发 则经过测试效果是这样的: 匪徒会看到 killer 和victim的颜色均为红色警察会看到 killer 和victim均为蓝色字体 而我的目的是无论警匪活人看到的message都应该统一成 killer是警-蓝 否则-红 victim相同。不知道改如何写。

R斑斑的代码
public client_color(playerid, colorid, msg[])
{
message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),_,playerid)
write_byte(colorid)
write_string(msg)
message_end()
}
client_color(0, id, msg)其中colorid 是玩家的index值吧(1-32) 那么通过write_byte(colorid)的作用是什么?实在没法顾名思义,难道是通过id判断^x03后该显示什么颜色的函数?

另外 我用的是MSG_ONE_UNRELIABLE 它和MSG_ONE 有什么区别?难道前者是UDP发送后者是TCP包发送? 另外后者发送失败好像会踢人(未证实,老外说的)
发表于 2007-11-19 00:44:44 | 显示全部楼层 来自 中国–广东–佛山–禅城区

回复: message_begin相关函数的疑问

回复

使用道具 举报

 楼主| 发表于 2007-11-19 02:37:18 | 显示全部楼层 来自 中国–北京–北京

回复: message_begin相关函数的疑问

非常感谢!

我的搜索能力不强 而且太后面的也没看 结果没挖掘到这贴..慢慢看
回复

使用道具 举报

发表于 2007-11-19 15:24:40 | 显示全部楼层 来自 中国–广东–佛山–禅城区

回复: message_begin相关函数的疑问

Post by mythkina
非常感谢!

我的搜索能力不强 而且太后面的也没看 结果没挖掘到这贴..慢慢看
早年的才是技术上的精华.
回复

使用道具 举报

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

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