{ Mud }

  • MUD eXtension Protocol

    | /

    MUD eXtension Protocol) (MXP) ,是由 Zugg Software維護,它可以利用特別的 Tag 讓 client 顯示時別的畫楮,來讓 Server 與 Client 之間互相通溝。所以玩家即可利用滑鼠進行遊戲操作,可大量降低使用者進入 Mud 的門檻。 Server 部份: 要啟動 MXP 除了 Client 要支援之外, Server 在送出資料時分為三種 Mode ,所以我們在送出資料前,要先送出這些資料是什麼模式,模式送錯,就只會顯示原始內容 。

    1. Open mode - 代號 1: 這是預設的模式,在此模式下可以使用一般合法的 tag ,幾個常用的 Tag 如下:

      1
      <bold> or <b> <underline> or <u> <italic> or <i> <color> or <c> <font> <strike> or <s> <strong> <small> <tt>
    2. Secure mode - 代號 2 : 這個模式可以使用特別的 command 來與 client 端互動,例如:east,他就會出現有底線的 east ,使用者只要點 east ,就會自動往東走。其他相關的資訊請參考 Secure Tag

    3. Locked mode - 代號 3 : 這是原始碼模式,這個部份將不會特別處理,直接顯示。
    4. 其餘模式請參考:MXP modes - secure, open and locked 這篇文章。

    Client 部份: 目前支援 mxp 的 Client 只有 MUSHClientZmud 6.5 板以上,其他的 Client 並不支援。 目前狂想空間已經啟用了部份 mxp 的支援,例如在 npc 上點右鍵,可以得到 kill/fight/look 之類的動作。如果點到 item 上面,會有 get/drop 之類的動作。 你現在開啟 zmud 6.5 板以上,連到 fs.twkang.net 5555 ,並且在登入後,打「set mxp」這個指令,即可以開始享用用滑鼠玩 Mud 的樂趣了。

    有圖有真像:zmud

  • 在 Mud 中和 MSN & YAHOO 作通訊

    /

    現在滿多網路遊戲都有內建和 MSN 作連結的功能了,讓玩家在遊玩之時,還可以和朋友作即時的聊天通話。

    現在配合了邪惡的軟体 bitlbee 就可以達到這項功能。其實在 Mud 裡面用 Mud 裡的 socket 理論上也可以完成,不過因為 Msn 的通訊需要 https 之類的加密協定,所以就只能作到一半了。

    bitlbee 其實還幫我們處理了語系的轉換,和各個 im protocol 的處理,這樣可以讓我們使用簡單的 irc protocol 就可以達到我們想要目地了。

    以下提供我已經完成的程式,但如果有任何 bug 歡迎通知我。

    即時通訊系統

    以下是使用說明:

    指令格式 : im [各項參數]

    這個指令可以讓你登入網路上流行的即時通訊軟體。目前支援的即時通訊軟體有 MSN 、 YAHOO 這二項。

    不管你是第幾次使用,要使用 im 時,必需先打 im login 作登入的動作。

    因為網路傳輸的關系,有些訊息可能會延遲一些時間才會收到。

    im login - 登入 im 系統。
    im quit - 登出 im 系統。
    im who - 列出你的好友名單。
    im register msn - 註冊 msn 帳號。
    im register yahoo - 註冊 yahoo 帳號。
    im add - 新增好友。
    im remove - 移除好友。
    im no - 不同意他人把你加入好友名單。
    im yes - 同意他人把你加入好友名單。
    im nick - 修改 msn 的暱稱。
    im tell - 傳訊給某人。

    UPDATED 2005-07-05: 下載點更新

  • Mud 內的多國語言轉換

    /

    相信很多 Mud 管理者都還在用 Lpc 寫的簡繁互轉的程式或是利用 limso 所作的 package 去轉。不過現在多了一個選擇,在 Linux 下可以利用 Glibc 所提供的函式來作字元轉換,而且可以達到 big5 <-> utf8 <-> gb2312 都可以互轉,不是只有原先的簡繁互轉而已。我相信這樣的方法,應該可以提昇不少效率,並能支援轉換到 utf-8 去。

    該原始碼可以來此下載:
       http://rw.muds.net/~whatup/mud/iconv.tgz
      
    下載原始碼後,請把該檔案解壓縮到 mudos 的 source 目錄下的package,會解出2個檔,iconv.c、iconv_spec.c,然後你可以在options.h 裡加上:

    #define PACKAGE_ICONV

    再重新編譯原始碼然後覆蓋原先的 mudos ,接著重新啟動 mud 即可使用。

    名稱:
    iconv_string() - 轉換字元集語法:

    string iconv_string( string, string , string );
    字串 iconv_string( 字串 來源編碼, 字串 目的編碼, 字串 內容);

    用法:
    來源編碼是指原先的來源的編碼是哪一種,如 big5。目的編碼是指想要編成哪一種碼,如 gb2312 or utf8。此函式傳回的值為編碼後的字串。
       ex: iconv_string(“big5”,”gb2312”,”編碼”);
    這樣就會把”編碼”這2個字轉成簡體字了。

    作者: whatup@wm

    如有問題,請 mail 到 whatup.tw at gmail.com,其中的 at 請換成 @

    ps. 系統爛掉請不要怪我啊…:P

  • 用 php 去解析 mud 中的存檔

    /

    我寫了一個用去解析 mud 中的存檔的 php 程式,是參考 MudOS 的原始碼改的,如果有人要利用此來寫出 WebBBS 來看 mud 中的 board 也可以利用該 php 程式。

    原始檔放在: http://rw.muds.net/~whatup/mud/LpcData.phps

    取下後,請將副檔名改為 .php 結尾。 你可以把 LpcData.php 放到網頁可存取到的目錄,並用 [code lang=”php”] [/code] 就可以把他引入了。其使用方法為: [code lang=”php”]File); print_r(“轉檔後:”); // 會產生 mapping & array print_r($ld->data); ?> [/code] 如果要取出dbase 中的某個內容的話,可以用: [code lang=”php”]data[“dbase”][“name”]); ?>[/code] 這樣就會取出該檔中的 name 了。

  • mud 內的 ftp server

    /

    我相信很多人都用 mud 內建的 ftp server,不過因為內建的 server 其實還是有許多的問題,例如:無法使用 pasv mode,效能也不彰…之類的。不過我現在的作法並不是使用 mud 內建的 ftp server,是用 pureftpd 來作 ftp server。為什麼選用 pureftpd 呢?因為他可以不用 root 模式來跑 ftp server,且可以用自定的密碼認證模式,所以可以讓他跟 mud 連結,作到 ftp & mud 都使用同樣的密碼。接下來看看怎麼作:

    1. ftp://ftp.pureftpd.org/pub/pure-ftpd/release/ 下載最新的 pureftpd 的 source code。
    2. $ tar -xzvf pure-ftpd-xxx.tar.gz
    3. $ ./configure –with-everything –with-brokenrealpath –without-shadow
      –with–noroot –without-ascii –with-language=traditional-chinese
    4. $ make all
    5. cd src/ 把 pure-ftpd & pure-authd cp 到 ~/bin/ 下
    6. 建個 ~/bin/auth 檔內容為:其中的 5556 為在mud 內要拿來作認證的 port,你可以用 iptables 檔掉非 127.0.0.1 連線。

      #!/bin/bash
      (printf %s:%s:%s”rn” $AUTHD_ACCOUNT $AUTHD_PASSWORD $AUTHD_REMOTE_IP;sleep 0.1)|telnet localhost 5556

    7. $ ~/bin/pure-authd -s /home/wmmud/bin/ftpd.sock -r /home/wmmud/bin/auth &
      // 請把其中的目錄改成你現實的狀態,auth就是剛建的 auth 檔

    8. $ home/wmmud/bin/pure-ftpd -lextauth:/home/wmmud/bin/ftpd.sock -A
      -O CLF:/home/wmmud/bin/log -S 5560 &
      // ftpd.sock 要跟上一個同樣, 第2個 CLF:/xxx 就是你的 log
      檔想要放置的位子,5560 就是你要開放給 wizard 連接的 port

    Linux 下的處理已經好了,接下來就是處理 mud 設定了:

    1. 在 config 檔新增 external_port_2 : telnet 5556 ,其中 5556 是你要讓 pure-ftpd 拿來作認證的。
    2. 改寫 /adm/obj/master.c 的 connect,讓他能接受多個 port。
      範例:http://rw.muds.net/~whatup/mud/ftp_server_master.example.c
    3. 新增 /obj/ftplogin.c
      範例:http://rw.muds.net/~whatup/mud/ftp_server_ftplogin.example.c

    接下來應該就可以動了,當然你的 wizard char 要上線才能同時登入 ftp ,這樣對安全性也好多了。