網頁好讀版: 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
給 laechan.bbs@ptt.cc 提出申請,信件內容需有:
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