mud兼容tomud客户端实现步骤
2008/12/25 15:56:55
一、在 include 目录下加入 tomud.h 文件,文件内容如下:
Copy code #define TMI(x) (""+x+"")
#define TMA ""
#define TMB ""
#define INFO TMI
#define HEND sprintf("%c",18)

#define PTEXT(x) TMI("ptext "+x)
#define ALERT(x) TMI("alert "+x)
#define MTEXT(x) TMI("ptext "+x)
#define L_ITEM(x) RANK_D->new_short(x)
#define L_ICON(x) TMI("licon "+x)
#define CLEAN0 TMI("lbclear0")
#define ADD0(x) TMI("lbadd0 "+L_ITEM(x)+";")
#define REM0(x) TMI("lbrem0 "+L_ITEM(x)+";")
#define CLEAN1 TMI("lbclear1")
#define ADD1(x) TMI("lbadd1 "+L_ITEM(x)+";")
#define REM1(x) TMI("lbrem1 "+L_ITEM(x)+";")
#define CLEAN2 TMI("lbclear2")
#define ADD2(x) TMI("lbadd2 "+L_ITEM(x)+";")
#define REM2(x) TMI("lbrem2 "+L_ITEM(x)+";")


二、在 include 目录下的 globals.h 里添加代码 #include "tomud.h" // 以下所有修改内容仅注意修改包含 tomud 字符的地方
三、在 master.c 文件里添加如下内容:
Copy code 
// Master.c
//
// For ES II mudlib
// Original from Lil
// Rewritten by Annihilator (11/07/94)
// Modified by Xiang for XKX (12/15/95)
// Updated by Doing Lu for hell (2K)

#pragma optimize
#pragma save_binary

#define BIG5_PORT              4000
#define TOMUD_PORT              6000 // 这里为 tomud 设置专用连接端口 6000
#define TRACE_DETAIL_LENGTH_LIMIT    300
#define SPRINTF_OVERFLOW          65535

#include <ansi.h>
#include <config.h>
#include <localtime.h>


object connect(int port)
{
    object login_ob;
    mixed err;
 
    err = catch(login_ob = new(LOGIN_OB));

    if (err)
    {
          write("现在有人正在修改使用者连线部份的程式,请待会再来。\n");
          write(err);
          destruct(this_object());
    }
   
    if (port == BIG5_PORT)
          login_ob->set_temp("big5", 1);
         
    else
    if (port == TOMUD_PORT)    // 这里是判断是否是 tomud 专用端口连接 
          // 设置TOMUD用户的连接标记,配合 logind.c 判断
          login_ob->set_temp("tomud", 1);         
    return login_ob;
}

四、logind.c 文件里做以下修改(以hell的logind.c为例)
Copy code
void logon(object ob)
{
    object *usr, *login_usr;
    int i, ip_num, wiz_cnt, ppl_cnt, login_cnt;
    int iplimit;
    int user_num;
    int now_time;
    string msg;
    mapping temp_time;
    string *counter = ({});
    string ipname;
    if (uptime() < 30)
    {
          write(sprintf("%s正在启动过程中,请稍候再来。\n", LOCAL_MUD_NAME()));
          destruct(ob);
          return;
    }
   
    now_time = time() & 0xFFFFFFFE;
    if (BAN_D->is_banned(query_ip_number(ob)) == 1)
    {
          write("你的地址在本 MUD 不受欢迎。\n");
          destruct(ob);
          return;
    }
    if (mapp(temp_time = blocks[query_ip_number(ob)]))
    {
          if (now_time - temp_time["time"] < temp_time["punish"])
          {
                write(temp_time["reason"] + "请过" +
                    appromix_time(temp_time["time"] + temp_time["punish"] - now_time) + "再尝试连线。\n");
                destruct(ob);
                return;
          }
          remove_blocks(q

下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms