⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gemote_q.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// 神话世界·西游记·版本4.50/* <SecCrypt CPL V3R05> */ // by mon@xyj 10/2/97// for inter mud emote messages.#include <command.h>#include <net/dns.h>#include <net/macros.h>#include <net/daemons.h>#include <ansi.h>inherit F_CLEAN_UP;inherit F_DBASE;inherit F_SAVE;mapping emote;void create(){   if(!restore()&&!mapp(emote)) {     emote = ([]);   }}string query_save_file() {return DATA_DIR + "emoted";}// send request to another mud.void send_msg(string channel, object me, string verb, string id,        string mud, mixed filter){   mapping minfo;   string msg;//   if(!ACCESS_CHECK(previous_object())//   &&   base_name(previous_object()) != TELL_CMD) return;   mud = htonn( mud );   if(mud == mud_nname() || !geteuid(me)) return;   minfo = (mapping)DNS_MASTER->query_mud_info(mud);   if (!minfo) return ;        if(!mapp(emote)) return ;   if(undefinedp(emote[verb])) return;   if(!stringp(msg=emote[verb]["others_target"])) return;   msg=replace_string(msg, "$P", gender_pronoun(me->query("gender")));   msg=replace_string(msg, "$S", RANK_D->query_self(me));   msg=replace_string(msg, "$s", RANK_D->query_self_rude(me));   msg=replace_string(msg, "$C", RANK_D->query_respect(me));   msg=replace_string(msg, "$c", RANK_D->query_rude(me));// $N should be replaced upon return of the message.   msg = replace_string(msg, "|", "");   msg = replace_string(msg, "@@@", "");   DNS_MASTER->send_udp(minfo["HOSTADDRESS"], minfo["PORTUDP"],     "@@@" + "gemote_q" +     "||NAME:" + Mud_name() +     "||PORTUDP:" + udp_port() +     "||CNAME:" + me->name(1) +     "||MYID:" + me->query("id") +     "||TARGET:" + id +//     "||FILTER:" + filter +                "||CHANNEL:" +channel+     "||MSG:"+msg+"@@@\n");        tell_object(me, "网路讯息已送出,请稍候。\n");}// Someone on another mud has sent us an intermud emote.void incoming_request(mapping info){   mapping minfo;   object target;   string msg, tar;   if (info["NAME"] && info["PORTUDP"]) {     // dont want to tell to ourselves     if (info["NAME"] == Mud_name())   return;     // get our info about the sender, ping them if we don't have any     minfo = DNS_MASTER->query_mud_info(info["NAME"]);     if (!minfo || !DNS_MASTER->dns_mudp(info["NAME"]))        PING_Q->send_ping_q(info["HOSTADDRESS"], info["PORTUDP"]);     if (minfo && minfo["HOSTADDRESS"] != info["HOSTADDRESS"]) {        // Its been faked!         dns_log("dns_fake", "Gemote: "+info["NAME"]+          "("+info["HOSTADDRESS"]+") message:"          +" "+ info["MSG"]+"\n");        DNS_MASTER->send_udp(minfo["HOSTADDRESS"], minfo["PORTUDP"],          "@@@"+DNS_WARNING+          "||MSG: Faked gemote message: "          +info["NAME"]+" "+info["MSG"]+          "||FAKEHOST:"+info["name"]+          "@@@\n");        return ;     }     msg="";     tar=info["TARGET"];     if(stringp(tar)&&tar!="") target=find_player(tar);     if(objectp(target)) {       if(target->is_character()&&          target->query("env/invisibility")<1) {          msg=info["MSG"];          msg=replace_string(msg, "$R", RANK_D->query_respect(target));          msg=replace_string(msg, "$r", RANK_D->query_rude(target));          msg=replace_string(msg, "$n", target->name());          msg=replace_string(msg, "$p", gender_pronoun(target->query("gender")));                  }                }       DNS_MASTER->send_udp(info["HOSTADDRESS"], info["PORTUDP"],     "@@@" + "gemote_a" +     "||NAME:" + Mud_name() +     "||PORTUDP:" + udp_port() +     "||CNAME:" + info["CNAME"] +     "||MYID:" + info["MYID"] +     "||TARGET:" + tar +//     "||FILTER:" + info["FILTER"] +                "||CHANNEL:"+info["CHANNEL"]+     (msg==""? "":"||MSG:"+msg) +     "@@@\n");                   } //if (info["NAME"] && info["PORTUDP"])}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -