GMCP起步心得(转自FluffOS官方群文档)

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 可看服务器发过来的变量内容。

京ICP备13031296号-4