Re: [闲聊] tmi2-mudlib 的更改

楼主: laechan (挥泪斩马云)   2014-06-23 16:27:38
网页好读版: 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

Links booklink

Contact Us: admin [ a t ] ucptt.com