gmcp本质是把服务器变量直接赋予客户端软件,省去了trigger抓取的过程。
FLUFFOS定义了4个函数
gmcp_enable() gets called when a user has gmcp
gmcp() will get called with any received message
send_gmcp(string) will send the string as a gmcp message
has_gmcp(object) returns if the object supports gmcp
gmcp_enable()由lib自定义,当玩家开启gmcp协议时调用,如在/obj/user里定义
void gmcp_enable()
{
write("gmcp协议已激活");
}
Gmcp()由lib自定义,当用客户端发送信息给服务器时调用,接受客户端发送的数据包信息,如
void gmcp(string str)
{
write("gmcpinfo:" + str);
}
那么当玩家在cmud中 输入#sendgmcp char.name abc时 终端显示"gmcpinfo:char.name "abc"
has_gmcp()是efun,判断this_object()是否支持gmcp(首先this_object()必须是玩家对象,其次玩家客户端要支持gmcp,则 has_gmcp(this_object()) 返回1)。
send_gmcp(string) 是efun,注意,请仅在/obj/user.c设置
void send_gmcp(string str)
{
efun::send_gmcp(str);
return;
}
来调用,其他方法不行。
在 lib里其他地方可以用send_gmcp(“char.name “ + ob->query(“name”)把 ob的name储存到中char包的name变量。客户端对变量的引用%gmcp.char.name的格式, 如在终端输入#show %gmcp.char.name 则系统显示 ob的name。
以上为gmcp 的基本应用方法,包括了 lib对函数的定义和引用,客户端发送给server以及接收server 信息的方法。
提示:在mudlet中可以使用 lua gmcp 可看服务器发过来的变量内容,可以使用lua sendGMCP(command)发送GMCP消息到服务端。