tmi2-mudlib 的更改 - MUD Game

Megan avatar
By Megan
at 2014-06-23T16:27

Table of Contents


網頁好讀版: http://www.ptt.cc/bbs/mud/M.1403512062.A.D9C.html


tmi2_fluffos_v3_改,20140623 版本

http://sanclaechan.myweb.hinet.net/tmi2_fluffos_v3_modify.rar

建議下載並解壓縮後目錄位置為 D:\tmi2_fluffos_v3_改\

(底下以 tmi2_v3_改 簡稱)

新舊目錄之間資料的替換主要以底下目錄為主

1./data
2./u <= 比方你已經有建立自己的使用者目錄了
3./doc <= 比方你已經有新增一些說明文件了

比方你已經有在前一版本的 tmi2_v3_改 用 vobj 指令設定了一些虛擬物
品了,那只要把前一版本的 /data 目錄的 vobj.o 拿來蓋掉新的 vobj.o
,這樣舊版本的 tmi2_v3_改 的虛擬物品資料就能移植到新的版本。

WinXP 使用者,可直接雙擊 D:\tmi2_fluffos_v3_改\bin\啟動 mud 捷徑,
即可執行 mud。Win7 或 Win8 使用者,則務必先參考底下這篇:

http://www.ptt.cc/bbs/mud/M.1399357070.A.366.html

mud 啟動成功後,目前確定以 pietty 連線 localhost 5000 (Telnet),可
連線成功:

http://imgur.com/IQwusvX.jpg

在 tmi2_fluffos_v3_改\ 目錄下會放一些圖片及說明文件。

管理者帳號預設為 mudadm,密碼 mudadm,只允許本機端登入,無法遠端登
入。欲新增管理者帳號,請依序做底下動作

1.修改 /adm/etc/groups 檔,將欲新增的管理者帳號加到 (admin) 群組
2.修改 /include/config.h 檔,確定 #define AUTO_WIZHOOD 沒有 // 掉
3.啟動 mud,然後創建一個步驟 1 所指定的管理者帳號角色
4.角色創完後 save quit,然後關閉 mud
5.再修改 /include/config.h 檔,將 #define AUTO_WIZHOOD 給 // 掉
6.再重新啟動 mud
7.此時再登入你的管理者角色帳號,此帳號就具有管理者權限

目前連線 telnet://210.61.157.53:5000 可連到以最新版本所架的測試站
,有公頻聊天指令可使用,也有遠端頻道指令 tmi2 可使用,使用前 mail
[email protected] 提出申請,信件內容需有:

1.你所架的站台 ip 及 port
2.你所架的站台之名稱(若沒有這個名稱會內定為 XXX's PC

==================================================================

本次修改範圍:20140619~20140623

一、新增群式怪物繼承檔 GMONSTER = /std/gmonster.c

對群式怪物的描述採用 sanc 的描述,但是程式架構不採用 sanc 的
架構(因為作者不是我),gmonster.c 基本上 inherit monster.c,
但是自訂底下函數

void init(); 怪物被觸發時的函數
string query_short(); 讀取怪物 short 名稱的函數
int query_points(string str); 讀取怪物 hp/sp/.. 的函數
int receive_damage(int damage); 怪物損血時呼叫的函數

群式怪物不需 set("short"),但需 set("member") 即隻數。

群式怪物檔案可參考 /d/area/newbie/mob/bear1.c
群式怪物的 script_mob 檔可參考 /d/area/redant/script_mob

底下會有群式怪物的相關 demo。

二、修改 /adm/simul_efun/base_name.c,新增 explode_base_name 全
域函數

base_name(ob) = "/d/area/newbie/room/001"

則 └────────┐
                         ↓
explode_base_name(base_name(ob)) = "/d/area/newbie/room*001"

也就是最後一個 / 會被替換為 *,這樣就容易對這樣的字串做目錄
  與檔名的拆解。

三、/cmds/std/_help.c 指令檔再補強

增加「虛擬目錄」以及相關指令功能:

數字 : 進入一個目錄或觀看一個說明檔案
0 或 < : 回上一層
q : 離開

底下指令只有 wiz 可以使用

add 數字 : 將某一項目還原
name 數字 = 名稱 : 將某一項目取新的名稱
virtual *目錄 = 名稱 : 新增一虛擬目錄
link 數字a to 數字b : 將 a link 到 b 這個虛擬目錄
unlink 數字a : 取消 a 的 link
data : 顯示所在目錄有哪些設定資料
del 數字 : 將某一項目遮蔽不顯示或刪除一虛擬目錄

底下會有 demo。

四、修改 /cmds/object/_update.c

增加兩種指令語法

update -n 數字a-數字b

比方對 001.c~400.c 這個範圍做 update,就是 update -n 1-400

(這個語法還存在改版的空間,下一次再改版,它會更方便)

update -p

它可以對整個目錄的 .c 檔做 update。

五、新增 /cmds/std/_betla.c,線上賭盤指令

直接下載 sanc 由我寫的指令,連同 /open/betla 也一起下載。

底下會有 demo。

六、新增 tmi2_v3_改 專用的地圖系統

這個系統最重要的功能是做地圖的共享,這個往後的改版會有更進
一步的說明。

  修改日誌則有提到要新增這個系統需要新增及更動哪些東西,使用
  者可參考修改日誌檔,這裡不做贅述(因為很長)。

底下會有 demo。

七、修改 /adm/simul_efun/attack.c 的 defence_attack 函數

增加如何寫盾擋及武器招架的程式段範例。

底下會有 demo。

八、其它修改

修正 !指令 、 數字 !指令 等上一次版本有 bug 的部份。

修改 /std/user.c 的 complete_setup 函數,對每一個登入的玩家
做部份數值初始化的工作。

修改 /adm/simul_efun/adminp.c,新增 wiz_lv 函數,可簡易判斷
一個使用者 id 是不是 wiz,是的話就會傳回 >0 的數值。

(使用者可用 running code: write(wiz_lv("隨便一個id")) 去看

新增 /cmds/std/_who2.c、_guild2.c,供使用者寫指令時參考。

新增 /d/area/redant 區域目錄,即 sanc 的「炙蟻地獄」區域

修改 /include/mudlib.h 全域定義檔,於最底下新增更多的定義

=================================================================

demo 區

> l
[/d/area/redant/180 ]
炙蟻地穴-第二層
這座洞穴長年棲息著巨大的蟻類,嘎吱嘎吱的走動聲音不時從洞
穴的深處傳來,生活在這裡的炙蟻,其酸液據說是珍貴的藥材!

明顯出口有: east 和 west.
工炙蟻群(worker redants) [10群工炙蟻]

> data redants
id : ({ "worker redants", "redants", "monster" })
member : 10 <- 隻數
short : "@@query_short" <- 此時會讀取 query_short 函數去產生
unit : "群工炙蟻" <- unit 跟一般怪物的設定不太一樣
一般怪物頂多設 "隻", "位", ..

現在所有新式區域產生的怪物會自動帶的怪物 id 是 "monster"
,這個 id 定義在 /include/mudlib.h 的最底下。

上面各顏色則對映其作用的位置。

> wear all
你裝備上小盾牌(shield).
你裝備上格鬥匕首(fight dagger).
你裝備上所有的東西!

> k redants
你對著工炙蟻群喝道: 「小王八蛋! 今日不是你死就是我活! 」
☆☆☆ 戰 鬥 開 始 ☆☆☆

你手握格鬥匕首刺向工炙蟻群,造成結實的傷害!(170)
工炙蟻群用酸液噴向你,但是被你以小盾牌擋開了! <= 盾擋成功判斷到的訊息
你手握格鬥匕首戳向工炙蟻群,造成結實的傷害!(170)
工炙蟻群猛烈地攻擊你,但是無關痛癢... <= 閃格擋沒有成功
你手握格鬥匕首刺向工炙蟻群,造成結實的傷害!(170)
工炙蟻群用酸液噴向你,但是被你以格鬥匕首格開了! <= 武器招架成功判斷到的訊息
.
.
你手握格鬥匕首捅向工炙蟻群,造成結實的傷害!(170)
工炙蟻群 死掉了 1 群工炙蟻! <= 開始死第一隻
.
.
工炙蟻群猛烈地攻擊你,但是被你以小盾牌擋開了
你手握格鬥匕首捅向工炙蟻群,造成結實的傷害!(170)
工炙蟻群 死掉了 1 群工炙蟻! <= 死第九隻了
工炙蟻群用酸液噴向你,但是無關痛癢...
你手握格鬥匕首刺向工炙蟻群,造成結實的傷害!(170)
工炙蟻群 死掉了 1 群工炙蟻! <= 第十隻陣亡
工炙蟻群 全體陣亡了。 這時就全體陣亡
工炙蟻群(worker redants)發出一聲慘叫!!
工炙蟻群(worker redants)慢慢的倒在地上...死了!

○○○ 這場戰鬥結束了! ○○○

如果四個人圍毆「這隻怪物」,那麼在上面 10 隻的死掉過程中,
就可以實現:

玩家A 打死了 3 隻
玩家B 打死了 4 隻
玩家C 打死了 2 隻
玩家D 打死了 1 隻

========================================================================

explode_base_name 的好處可以用底下的 running code 說明

tmp=base_name(environment(me));
write("explode 前: "+tmp+"\n");
tmp=explode_base_name(tmp);
write("explode 後: "+tmp+"\n");

// 第一種方式: 用 explode, 以 "*" 為分隔字
obs=explode(tmp,"*");
write("目錄: "+obs[0]+", 檔名: "+obs[1]+"\n");
// 第二種方式: 用 strsrch, 找出 "*" 在字串裡的位置
i=strsrch(tmp,"*");
j=strlen(tmp);
write("目錄: "+tmp[0..i-1]+", 檔名: "+tmp[i+1..j-1]+"\n");

========== 程式執行區 ==========
explode 前: /d/area/redant/313
explode 後: /d/area/redant*313
目錄: /d/area/redant, 檔名: 313
目錄: /d/area/redant, 檔名: 313 <= 兩種做法都能得到相同結果
========== 程式執行區 ==========

傳統上要取出目錄及檔名要用 while 去做,現在有 explode_base_name
就方便很多,使用者可依需要看是要用 explode 的方式或 strsrch 的
方式分解出目錄及檔名皆可。

================================================================

再來是 help 的 demo。我已經先建立 /doc/skill 目錄,並且從 sanc
下載了一些技能說明檔。

> ls /doc/skill
Path: [/doc/skill]
1 adventure_heart 1 counter 1 parry
1 backstab 1 dagger 1 return_spell
1 barefist 1 daggermaster 1 shield
1 blade_heart 1 dodge 1 thunder_spell
1 blizzard 1 egingin 1 watershield
1 bousou 1 fighter_heart

> help
[/doc/]
1.README 2.[concepts] 3.[daemons]
4.[driverdoc] 5.[emote] 6.[etc]
7.[functions] 8.[help] 9.[lpc]
10.[mudlib] 11.[properties] 12.[skill]
13.[wizhelp] 14.備忘 15.回上一層.
請輸入:

首先,可以把 12 那一項改名為 技能

請輸入: name 12 = 技能
skill 已更名為 技能.
[/doc/]
1.README 2.[concepts] 3.[daemons]
4.[driverdoc] 5.[emote] 6.[etc]
7.[functions] 8.[help] 9.[lpc]
10.[mudlib] 11.[properties] 12.[技能]
13.[wizhelp] 14.備忘 15.回上一層.
請輸入:

然後進入 12

請輸入: 12
[/doc/skill/]
1.adventure_heart 2.backstab 3.barefist
4.blade_heart 5.blizzard 6.bousou
7.counter 8.dagger 9.daggermaster
10.dodge 11.egingin 12.fighter_heart
13.parry 14.return_spell 15.shield
16.thunder_spell 17.watershield 18.回上一層.
請輸入:

從上面可以看出技能其實有冒險者的、有盜賊的、有戰士的、有騎士的
......通通都放在同一個目錄。這時就可以建虛擬目錄,例如說先來建
一個冒險者的:

請輸入: virtual *adventure = 冒險者(adventure)
虛擬目錄 冒險者(adventure) 已新增.
[/doc/skill/]
1.[冒險者(adventure)] 2.adventure_heart 3.backstab
4.barefist 5.blade_heart 6.blizzard
7.bousou 8.counter 9.dagger
10.daggermaster 11.dodge 12.egingin
13.fighter_heart 14.parry 15.return_spell
16.shield 17.thunder_spell 18.watershield
19.回上一層.
請輸入:

虛擬目錄的 *adventure 的 * 就是虛擬目錄的標頭,有 * 就是虛擬目
錄,沒有 * 就不是。

接下來,就可以把 adventure_heart、barefist、dodge、parry、
shield 這五個技能 "link" 到 1.[冒險者(adventure)]:

請輸入: link 2 to 1
已將文件 adventure_heart link 到 冒險者(adventure) 中了.
請輸入: link 3 to 1
已將文件 barefist link 到 冒險者(adventure) 中了.
.
.
請輸入: link 12 to 1
已將文件 shield link 到 冒險者(adventure) 中了.
[/doc/skill/]
1.[冒險者(adventure)] 2.backstab 3.blade_heart
4.blizzard 5.bousou 6.counter
7.dagger 8.daggermaster 9.egingin
10.fighter_heart 11.return_spell 12.thunder_spell
13.watershield 14.回上一層.
請輸入:

然後我們進 1.[冒險者(adventure)] 去看

請輸入: 1
[/doc/skill/*adventure/]
1.adventure_heart 2.barefist 3.dodge
4.parry 5.shield 6.回上一層.
請輸入:

同樣的,上面的東西也可以命名,例如把 1 命名成冒險者之心

請輸入: name 1 = 冒險者之心
adventure_heart 已更名為 冒險者之心.
[/doc/skill/*adventure/]
1.冒險者之心 2.barefist 3.dodge
4.parry 5.shield 6.回上一層.
請輸入:

然後看一下 1 這個檔案在說些什麼

請輸入: 1
冒險者之心(Adventure heart)
這是個冒險者公會的技能,使用後可以讓新手冒險者更有勇氣及
能力去面對未來將會碰上的事件及怪物,雖然幫助有限,但對初
期的冒險者來說,這是非常有用的。

*使用方式:heart adventure。
 指令 a 及 score l 可觀看使用後的影響。

請按 enter 鍵繼續...
[/doc/skill/*adventure/]
1.冒險者之心 2.barefist 3.dodge
4.parry 5.shield 6.回上一層.
請輸入:

也可以解除某一個檔案的 link

請輸入: unlink 2
你解除了 barefist 的 link 設定.
[/doc/skill/*adventure/]
1.冒險者之心 2.dodge 3.parry
4.shield 5.回上一層.

按 < 就能返回上一層:

請輸入: <
[/doc/skill/]
1.[冒險者(adventure)] 2.backstab 3.barefist
4.blade_heart 5.blizzard 6.bousou
7.counter 8.dagger 9.daggermaster
10.egingin 11.fighter_heart 12.return_spell
13.thunder_spell 14.watershield 15.回上一層.
請輸入:

可以看見 barefist 已經是未 link 狀態。

然後如果把 1. 那個虛擬目錄整個刪掉,就會變成如下:

請輸入: del 1
*adventure 已刪除.
[/doc/skill/]
1.adventure_heart 2.backstab 3.barefist
4.blade_heart 5.blizzard 6.bousou
7.counter 8.dagger 9.daggermaster
10.dodge 11.egingin 12.fighter_heart
13.parry 14.return_spell 15.shield
16.thunder_spell 17.watershield 18.回上一層.
請輸入:

所有曾被 link 到 虛擬目錄 的檔名就會回到未 link 狀態。

這樣就能實現樹狀型式的輸入型 help 功能,而且管理者也能透過
選單功能快速建立樹狀架構。

這東西比 sanc 現用的 help 及未完全開放的 xhelp 功能更強。

==========================================================

線上賭盤指令如下:

> betla
現有賭盤:
========================================================================
========================================================================
betla [賭盤編號] 即可參與線上投注,請參閱 betla 指令說明。

到 /open/betla 目錄下隨便讀入一個 betla 檔

> cd /open/betla
/open/betla

> ls
Path: [/open/betla]
1 20111114_5 1 20130413_1 1 betla.c 1 r1
1 20130410_1 1 20130415_1 1 betla_ex realtime/
1 20130410_2 baseball/ 1 laechan tseng/
1 20130411_1 1 betla polite/ wang/

> betla readfile 20130415_1
欲開賭盤:北韓20130414(日)發射飛彈
金額設定:每注 3000 影特幣
封盤時間:600 分鐘後
賭盤項目:會打美國
     會打韓國
     會打日本
     會打其它(例如只射向東海)
     不會射
     其它可能
     贊助賭盤
<< 你贊助了 9999 注 >>
確定請按 Y or y: Y

跟 more 該檔的結果對照

> more 20130415_1
北韓20130414(日)發射飛彈 <= 賭盤標題
3000 <= 每注多少
600 <= 封盤時間設定在「幾分鐘後」
add:9999 <= 官方贊助多少注
會打美國 <= 賭盤選項1
會打韓國 <= 2
會打日本 <= 3
會打其它(例如只射向東海) <= 4
不會射 <= 5
其它可能 <= 6
贊助賭盤 <= 最後一項預設為贊助賭盤

> betla
現有賭盤:
========================================================================
1. 北韓20130414(日)發射飛彈 封盤時間:2014/06/24 02:02
========================================================================
betla [賭盤編號] 即可參與線上投注,請參閱 betla 指令說明。

> betla 1
賭盤:北韓20130414(日)發射飛彈
每注:3000 影特幣
======================================================================
1.會打美國 0 注(賠率:0.000000)
2.會打韓國 0 注(賠率:0.000000)
3.會打日本 0 注(賠率:0.000000)
4.會打其它(例如只射向東海) 0 注(賠率:0.000000)
5.不會射 0 注(賠率:0.000000)
6.其它可能 0 注(賠率:0.000000)
7.贊助賭盤 9999 注(賠率:1.000000) (你已下 9999 注)
======================================================================
指令語法:betla [賭盤編號] [賭盤項目] [下注數].

比方我們下注 1

> betla 1 1 1000
betla: 下注完畢.
> betla 1
賭盤:北韓20130414(日)發射飛彈
每注:3000 影特幣
======================================================================
1.會打美國 1000 注(賠率:10.999000) (你已下 1001 注)
2.會打韓國 0 注(賠率:0.000000)
3.會打日本 0 注(賠率:0.000000)
4.會打其它(例如只射向東海) 0 注(賠率:0.000000)
5.不會射 0 注(賠率:0.000000)
6.其它可能 0 注(賠率:0.000000)
7.贊助賭盤 9999 注(賠率:1.100010) (你已下 9999 注)
======================================================================
指令語法:betla [賭盤編號] [賭盤項目] [下注數].

然後假設我們要手動封盤(時間到它也會自動封盤)並開獎:

> betla set 1
1.賭盤:北韓20130414(日)發射飛彈(1 to [新標題])
2.賭項:共 7 個(2 [n] to [新名稱])
({ "會打美國", "會打韓國", "會打日本", "會打其它(例如只射向東海)", "不會射", "其它可能", "贊助賭盤" })
3.每注:3000 影特幣(3 to [n])
4.開放/暫停/取消該賭盤(4 to start/stop/halt)
(附註:4 to halt 可以補發獎金給未領取的人。)
5.設定中獎項目及開獎(5 to [n])
6.線上公告賭盤(6 to shout)
===================================================
請輸入(直接按[ENTER]為離開設定):4 to stop
betla: 你暫停了該賭盤的下注.

請輸入(直接按[ENTER]為離開設定):5 to 1
賭盤:北韓20130414(日)發射飛彈
項目:會打美國
你決定開這個獎項嗎(y/n):y

【賭盤系統】北韓20130414(日)發射飛彈
【賭盤系統】本賭盤開 1. 會打美國
【賭盤系統】賠率 10.999000,每一注可得 32997 影特幣.

【賭盤系統】你下注了第 1 個項目,贏得賭金 33029996 影特幣!
【賭盤系統】贏得了賭盤使你的賭技有所增長!
【賭盤系統】laechan 買了 1001 注贏得賭金 33029996 影特幣!
剩餘未領獎人員:

我曾用這指令在 sanc 開過金曲獎、金馬獎相關賭盤,而且是邊看
轉播邊開賭盤,它的做法就是先把賭盤腳本檔編好,如下

> ls /open/betla/realtime/2013金曲獎
Path: [/open/betla/realtime/2013金曲獎]
1 台語女歌手 1 作詞人 1 原住民語歌手 1 單曲製作人
1 台語男歌手 1 客語專輯 1 國語女歌手 1 新人
1 台語專輯 1 客語歌手 1 國語男歌手 1 演唱組合
1 年度歌曲 1 音樂錄影帶 1 國語專輯 1 樂團
1 作曲人 1 原住民語專輯 1 專輯製作人 1 編曲人

> more /open/betla/realtime/2013金曲獎/國語女歌手
2013金曲獎─最佳國語女歌手獎
5000
300
add:9999
盧凱彤/你安安靜靜地躲起來
鄧紫棋/第四張專輯 Xposed曝光
林憶蓮/蓋亞
家家 /忘不記
徐佳瑩/理想人生
蔡依林/MUSE
從缺
贊助賭盤

這樣當電視直播到要開始頒最佳國語女歌手了時,就馬上把該賭盤
readfile 進來,然後就可以等頒獎結果揭曉,就再用 betla set
設定要開哪一項目,馬上就能開出賭盤。

/open/betla 下有 sanc 開過的所有賭盤,使用者可參考。

===========================================================

新式地圖系統如下

首先在 /d/area/redant 目錄下下這三個指令(要分開下)

trans map1 to /d/area/redant by script_room
trans map2 to /d/area/redant by script_room
trans map3 to /d/area/redant by script_room

上面三個指令可依三張數字圖各自產生出對映的房間,三個區域的
範圍如下:

map1: 001.c~177.c
map2: 178.c~331.c
map3: 332.c~475.c

只要 more map1, map2, map3 就可知道其範圍,而 map1x、map2x
、map3x 就是其 x-x 圖。

這個區域共三層,map1、map2、map3 就代表第一、二、三層。

接著,就以 map 指令設定這三層地圖的資料:

目錄 層 起 迄 x-x地圖檔
> map -set redant 1 = 1,177,map1x
map_data[redant][0]=({ 1, 177, ({ }), "map1x" }) 資料設定 ok.
> map -set redant 2 = 178,331,map2x
map_data[redant][1]=({ 178, 331, ({ }), "map2x" }) 資料設定 ok.
> map -set redant 3 = 332,475,map3x
map_data[redant][2]=({ 332, 475, ({ }), "map3x" }) 資料設定 ok.

上面應該不難理解。如果只有一層(如 /d/area/01/01) 那當然就
只需要一行,然後給個起迄範圍及 x-x 地圖是哪一個檔即可。

接著設定出口資料,根據 /d/area/redant/area_room.c

// 這裡則可以針對房間號碼變更出口設定
// 依房間號碼來設定連接上下層的例子
if(n==152 && !query("exits/down"))
set("exits/down",__DIR__+"313");
if(n==313 && !query("exits/up"))
set("exits/up",__DIR__+"152");
if(n==210 && !query("exits/down"))
set("exits/down",__DIR__+"370");
if(n==370 && !query("exits/up"))
set("exits/up",__DIR__+"210");

(這裡就是一個透過 area_room.c 做集中管理的例子)

我設定第一層的出口是 001 之外還有 152,第二層 210 及 313
,第三層為 370,也就是說

第一層 入口001───152

第二層 210───313

第三層 370

大概是這樣的關係,這時指令就可以這樣下

> map -exits redant 1 = 1,152
map_data[redant][0]=({ 1, 177, ({ 1, 152 }), "map1x" }) 設定完成.
> map -exits redant 2 = 210,313
map_data[redant][1]=({ 178, 331, ({ 210, 313 }), "map2x" }) 設定完成.
> map -exits redant 3 = 370
map_data[redant][2]=({ 332, 475, ({ 370 }), "map3x" }) 設定完成.

接著還可以再為各層命名,指令這樣下

> map -name redant 1 = 炙蟻地獄第一層
map_data[redant][0]=({ 1, 177,({1,152}),"map1x","炙蟻地獄第一層"})
設定完成.
> map -name redant 2 = 炙蟻地獄第二層
map_data[redant][1]=({ 178, 331,({210,313}),"map2x","炙蟻地獄第二層"})
設定完成.
> map -name redant 3 = 炙蟻地獄第三層
map_data[redant][2]=({ 332, 475,({ 370 }),"map3x","炙蟻地獄第三層"})
設定完成.

這樣設定就結束了,流程就是:

trans產生房間→map -set 設定基本資料→map -exits 設出口→map -name 設名字

然後就能使用 map 指令了,先 goto 到 /d/area/redant/001 區域入口。

> goto 001
[/d/area/redant/001 ]
炙蟻地穴-第一層
越往洞穴的深處走,你越覺得燥熱難當,在這個狹窄的地方遇上
魔物的話,在戰鬥上極為不利,生活在這裡的炙蟻,其酸液據說
是珍貴的藥材!

明顯出口有: south 和 east.
兵炙蟻群(soldier redants) [10群兵炙蟻]

> map
                                
│                                  
    








>

由上圖可知入口在區域的左上角。接著往東走兩格看看

> run 2e
炙蟻地穴-第一層
明顯出口有: south, east, 和 west.
黑炙蟻群(black redants) [10群黑炙蟻]
工炙蟻群(worker redants) [10群工炙蟻]
炙蟻地穴-第一層
明顯出口有: south, east, 和 west.

> map
                            
│ │ │                              
口 口                              
        
                                 



>

上面包含了三種東西

1.你走了多少範圍,就顯示多少範圍的地圖出來
2.區域的出口會以 標示                       
自己則以 標示
房間則以 標示
路線則以 ─ │ 標示
3.它不只顯示你走過的房間,連相鄰的房間也顯示

wiz 如果下 map here 則會看到全圖:

> map here
─口──口 口─口─口─口─口─口 口 口     口─口─口 口
│ │ │ │   │ │   │ │ │ │     │   │ │
口 口─口─口─口─口 口─口─口─口─口─口─口─口 口─口 口─口
│ │ │ │   │ │ │       │     │
口─口 口─口─口─口 口─口─口─口 口─口─口─口─口─口─口─口─口
    │ │     │   │ │ │ │ │ │ │   │
口─口─口─口─口─口─口 口─口─口 口─口─口 口 口─口 口─口 口─口
│ │ │ │ │ │ │ │ │ │     │ │ │   │   │ │
口─口─口 口─口─口─口─口─口─口     口─口 口 口─口─口─口 口
                  │                   │
口─口─口─口           口     口   口─口─口─口─口 口
│                 │     │           │ │
口─口 口─口     口─口─口 口─口   口─口─口─口─口 口─口─口
  │ │ │       │ │ │     │   │   │
口─口 口 口─口─口─口 口─口─口─口 口─口─口 口   口─口─口─口
│   │         │ │       │   │         │
口 口─口─口─口─口 口 口 口 口─口─口  口 口─口─口─口 口─口
│ │ │     │ │   │ │   │   │ │ │ │     │
口─口 口     口─口─口─口─口─口 口─口─口─口 口 口─口─口─口
                      

底下模擬接近到下一個區域出口時的情況:

> run e 4s 6e 3s w 2s e n 2e s 3e 3n 2w

> map
─口─口─口                            
│ │ │ │                            
口 口─口─口─口                          
    │ │                      
    口─口─口                            
    │ │                          
    口─口─口─口─口 口─口─口                    
      │ │ │ │ │ │ │                    
      口─口─口─口─口─口─口                    
                  │                    
                  口     口              
                  │     │              
                口 口─口   ─口─口─口        
                │ │     │   │    
              口─口─口─口   口   口          
                │           │          
                口 口─口─口   口 口─口        
                │ │   │   │ │          
              口─口─口─口 口─口─口─口                                         
>

然後再往南走一格

> s
[/d/area/redant/133 ]
炙蟻地穴-第一層
走在這座洞穴裡令你覺得十分的悶熱,嘎吱嘎吱的走動聲音不時
從洞穴的深處傳來,生活在這裡的炙蟻,其酸液據說是珍貴的藥
材。

明顯出口有: south, north, east, 和 west.
兵炙蟻群(soldier redants) [10群兵炙蟻]

> map
─口─口─口                            
│ │ │ │                            
口 口─口─口─口                          
    │ │                      
    口─口─口                            
    │ │                          
    口─口─口─口─口 口─口─口                    
      │ │ │ │ │ │ │                    
      口─口─口─口─口─口─口                    
                  │                    
                  口     口              
                  │     │              
                口 口─口   口─口─口─口        
                │ │     │   │    
              口─口─口─口 口──口 口          
                │       │   │          
                口 口─口─口  口 口─口        
                │ │   │   │ │          
              口─口─口─口 口─口─口─口 

>

上面包含了兩種東西

1.它真的只顯示你走過的範圍以及其鄰近房間
2.只有走到接近出口的那一格,才顯示出口


在刀劍神域的某一集裡,桐人與亞絲娜組隊遇到克萊因,打屁閒聊
之後又遇到軍隊,軍隊的隊長就開口向桐人他們要「地圖」。

這個地圖系統就能做到「給玩家地圖」。

而例如說你希望你的 mud 有小地圖,則這個地圖系統是辦得到的,
例如你要預設玩家能看到全圖,只要修改特定段落即可(我會在地圖
系統的說明文件裡說明要怎麼改)。

我設計了只顯示走過的範圍 -> 你可以將其改成顯示全圖

我只設計一律顯示全圖 -> 你很難新增只顯示走過的範圍的功能

我的意思就是,我今天設計它具有「只顯示走過的範圍」的用意,
並不是要所有 tmi2_v3_改 的使用者都要照我設計的去跑,因為程
式是可以修改的。

但是如果我沒有為 tmi2_v3_改 設計這個東西,使用者要設計出這
東西卻是很困難的。

兩相比較當然是「我把它設計出來,然後由你來決定要不要用它

(那基本上我會想設計這個,當然也是因為我本來就要用的緣故)

有任何問題或建議,都可透過推文或回文的方式讓我知道。

我覺得關鍵是像 caselook 這位使用者,是否能光靠 map 指令所
看到的地圖,就知道下一步應該怎麼走,據我的瞭解有些使用者是
辦不到的,sanc 為此才新增了位於地圖底下的資訊:

> map
炙蟻地穴-第一層(o: 你的位置 @: 區域出入口)
@-x-x-x x-x-x-x-x-x x x x-x-x x
| | | | | | | | | | | | |
x x-x-x-x-x x-x-x-x-x-x-x-x x-x x-x
| | | | | | | | |
x-x x-x-x-x x-x-x-x x-x-x-x-x-x-x-x-x
| | | | | | | | | | |
x-x-x-x-x-x-x x-x-x x-x-x x x-x x-x x-x
| | | | | | | | | | | | | | | |
x-x-x x-x-x-x-x-x-x x-x x x-x-x-x x
| |
x-x-x-x x x x-x-x-x-x x
| | | | |
x-x x-x x-x-x x-x x-x-x-x-o x-x-x
| | | | | | | | |
x-x x x-x-x-x x-x-x-x x-x-x x x-x-x-x
| | | | | | |
x x-x-x-x-x x x x x-x-x @ x x-x-x-x x-x
| | | | | | | | | | | | |
x-x x x-x-x-x-x-x x-x-x-x x x-x-x-x
前往方式: recall w look mirror 輸入 felid, 然後
11d 4s 32w n enter
地圖說明: 本區域為亞雷克萊斯特大陸上的區域,共三層。區域一
開始的進入點為地圖的最左上角。前往第二層建議走法
3e 4s 6e 3s w 2s e n 2e s 3e 3n 2w 2s down

(上面就是新增的資訊)

預計下次的版本會對 attack.c 做更多的修改、建立更多的說明文件、
並在 show 函數實裝「小黑鼠傷口鮮血滿身是。」這個受傷狀況訊息,
說明文件會佔大部份。


Laechan

--
Tags: 線上

All Comments

Lauren avatar
By Lauren
at 2014-06-23T20:15
明天起沒啥空,但有零碎時間編文件檔
Edith avatar
By Edith
at 2014-06-26T14:55
推啊 越來越強大的mudlib
Heather avatar
By Heather
at 2014-06-28T00:00
突然發現應該可以練習看口─口圖
Rae avatar
By Rae
at 2014-06-29T09:59
好,上次更新我只摸到一次:p
Valerie avatar
By Valerie
at 2014-07-03T15:42
那群式怪物loot判定是如何呢?
Mia avatar
By Mia
at 2014-07-04T19:13
基本設定是殺死最後一隻=呼叫die的人
Mary avatar
By Mary
at 2014-07-08T08:29
但是要get all不會選不到嗎?
Tom avatar
By Tom
at 2014-07-11T08:47
只是函數很多,又沒API查,只能慢來
Hedy avatar
By Hedy
at 2014-07-15T08:01
任務系統接近完工,比sanc現用的還好
Hedda avatar
By Hedda
at 2014-07-19T18:58
任務系統明天就能完成雛形必釋出

doom主機

Vanessa avatar
By Vanessa
at 2014-06-23T15:21
跳電導致UPS壞掉 目前正在更換 更換完成可以上線了 - ...

關於神秘熔爐的合成

Puput avatar
By Puput
at 2014-06-23T13:26
最近剛回鍋 不知道配方有沒有新增? 還是說一樣只有精華區那一篇的配方? 現在SIGIL一樣用隨機四個黃色去賭橘色賣錢嗎? 那部分裝被拆出的符文(+ptv / ppc 這種類似珠寶的)也有這種賺錢方法嗎? - ...

菁英zero角色卡販賣

George avatar
By George
at 2014-06-23T12:47
如題 應該不少人跑馬燈看過幾次 今天終於上架了 但官網還沒公告呢...? 補上連結 http://tw.beanfun.com/mabinogi/index.aspx?url=BulletinDetail.aspx?Bid=37963andamp;kind=25 -- Sent from my Andr ...

本週寵物特賣會 摩托車 焦阿巴

Frederic avatar
By Frederic
at 2014-06-23T10:41
https://tw.event.beanfun.com/mabinogi/EventAD/EventAD.aspx?EventADID=845 2014/6/23 中午12:00 到 2014/6/29 晚上23:59 摩托車 焦阿巴 ----------------------------- ...

人跑哪去了

Jacob avatar
By Jacob
at 2014-06-23T08:54
現在的感覺真的跟BBO剛出來時完全不同了! 以前是用很有歸屬感的隊伍來比賽 現在,除了AS,還有傭兵、R卡、傳說卡、綠卡 教練還不是每年都有,我想玩xx年xx隊,卻不能用當年的教練 現在很喜歡某球隊而組的人非常少 更多的情況是為了讓隊伍實力強才組 為了雙守,自己也還算喜歡的球員必須坐板凳 為了 ...