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

楼主: laechan (挥泪斩马云)   2014-06-05 11:55:48
tmi2_fluffos_v3_改,20140605 版本
http://sanclaechan.myweb.hinet.net/tmi2_fluffos_v3_modify.rar
下载解压缩后比方以 20140605 的版本为例,其目录名称为:
tmi2_fluffos_v3_改_20140605
(底下以 tmi2_v3_改 简称)
从 20140605 起的版本,已不包含 fluffos-2.16-ds05 这个 fluffos 目录
,有需要的人只要下载原始的 tmi2_fluffos_v3 压缩档即可取得,网址:
http://lpmuds.net/files/tmi2_fluffos_v3.zip
WinXP 使用者,可直接双击 tmi2_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_改\ 目录下会放一些图片及说明文件。
目前连线 telnet://210.61.157.53:5000 可连到以最新版本所架的测试站
,白天大概都会开着,有公频聊天指令可使用,可在那边做即时意见交流。
下次预计新增 sanc 正在使用的虚拟物品系统,这东西越早引入,就越能减
少正式架站后撰写到实体物品的情况,可减少线上实体物件占用数。
它也是支援任务系统、副本系统、炼金/补品系统的重要基础系统。
==================================================================
本次修改范围: 2014/06/02~2014/06/05
修改 /adm/daemons/format_time.c 新增 Ctime 函数。(sanc style)
修改 /cmds/std/_chat.c 将 emote 相关的讯息取得函数化。
修改 /cmds/std/_who.c 修正部份 bug。
新增玩家住宅及其附属的仿开○农场的小系统。
└相关档案: /adm/daemons/myhomed.c myhome 管理系统
/cmds/std/_myhome.c myhome 相关指令
/std/myhome.c myhome 产生档
└/include/myhome.h 相关 .h 档
/std/myfarm.c myfarm 产生档
└/include/myfarm.h 相关 .h 档
新增 times_check 系统。(sanc style)
└相关档案: /d/area/times_check.c times_check 主档
└/d/area/times_check.o times_check 储存盘
新增定期航班型交通工具继承档。(sanc style)
└相关档案: /std/boat.c 继承档
└/d/area/test/boat.c 使用范例
└/d/area/test/port1.c
port2.c 港口范例
新增线上投票指令。(sanc style)
└相关档案: /cmds/std/_vote.c 线上投票指令
└/data/vote.o 投票资料储存盘
└/open/cmds/vote/ 明文档资料暂存区
==================================================================
底下是一些 demo 跟说明:
> myhome create
myhome: 你建立了自己的家.
[ Laechan 的家 ]
一间漂浮于云端的矮层楼房。
明显出口: 无.
在 /adm/daemons/myhomed.c 会登录这间房子
> call /adm/daemons/myhomed;query_myhome
OBJ(/adm/daemons/myhomed)-> query_myhome() = ([ "laechan" :
OBJ(/std/myhome#6) ])
> farm
你进入了自己的农场.
☆ Laechan 的 Lv.1 农场 ☆ v1.00
─────────────────────────────────────
目前没有种植任何东西.
─────────────────────────────────────
back-回家 list-作物列表 grow-种植 collect-收成 watering-浇水
weed-除草 spraying-杀虫
> list
all 类作物一览:
作物名称 分类 Lv 成本 可收成量 单价 成熟 期数
─────────────────────────────────────
马铃薯(potato) crops 1 300 10 50 600秒 1
稻米(rice) crops 1 1000 15 100 1800秒 3
─────────────────────────────────────
种植作物: grow [作物英文名], 例如 grow potato.
> grow potato
grow: 你将马铃薯(potato)种进了第一块田。
> grow rice
grow: 你将稻米(rice)种进了第二块田。
> l
☆ Laechan 的 Lv.1 农场 ☆ v1.00
─────────────────────────────────────
1. 马铃薯(potato) 3%▍
2. 稻米(rice) [1/3] 1%▏
─────────────────────────────────────
back-回家 list-作物列表 grow-种植 collect-收成 watering-浇水
weed-除草 spraying-杀虫
上面的显示代表 potato 是 1 期作物,而 rice 是 3 期作物,目前的设
计是稻米收获 1 期后,第 2 期起的成熟时间就是第 1 期所需时间的一半
底下是发生虫害/干旱/长杂草时的情况
> l
☆ Laechan 的 Lv.1 农场 ☆ v1.00
─────────────────────────────────────
1. 马铃薯(potato) 38%███▉
2. 稻米(rice) [1/3] 12%█▎
* 农地正长著许多的杂草,必须赶快进行除草!!
─────────────────────────────────────
back-回家 list-作物列表 grow-种植 collect-收成 watering-浇水
weed-除草 spraying-杀虫
> weed
weed: 你为这个农场进行了除草的工作.
> l
☆ Laechan 的 Lv.1 农场 ☆ v1.00
─────────────────────────────────────
1. 马铃薯(potato) 40%████
2. 稻米(rice) [1/3] 13%█▍
* 农地正面临严重的干旱,必须赶快进行浇水!!
─────────────────────────────────────
back-回家 list-作物列表 grow-种植 collect-收成 watering-浇水
weed-除草 spraying-杀虫
上面的意思是,干旱及长杂草的情况是同时存在的,但是它会依据状态
处理的优先度来决定要先显示哪一种状态: 虫害 > 干旱 > 长杂草
myfarm 是依存在 myhome 上的,/adm/daemons/myhomed.c 只认 myhome,
再依据登录在 myhome 的 myfarm_ob 来得知使用者的农场是哪一块:
> data here
myfarm_ob : OBJ(/std/myfarm#7)
而指令 myhome update1 及 myhome update2,分别可让管理者为线上所有
已存在的 myhome 及 myfarm 做更新。例如今天假设你为 myfarm 加了一
个新指令或修改了什么,想立即更新线上所有已存在的农场时,就下指令
myhome update2 即可:
> myhome update2
myhome update2: myfarm 更新完毕.
=================================================================
> update boat
/d/area/test/boat: Updated and loaded.
> goto boat
[/d/area/test/boat ]
小游轮
一艘经常来往于台北与高雄之间的小游轮.
明显出口: 无.
> start
广播: 小游轮已经抵达台北港。
> l
小游轮 目前状态: 停靠在台北港。
一艘经常来往于台北与高雄之间的小游轮.
明显出口有: out.
只需要 start 过一次,再来就全由 times_check.c 控制。
/d/area/times_check.c 有几个函数可用
> call times_check;return_times_check
times_check=
([ "1401936850" : ({ ({ "/d/area/test/boat", "/d/area/test/boat", ({ "start_plane" }) }) }) ])
times_no_save=
([ ])
目前心跳参数: 1
这是看目前总存的 times_check 及 times_no_save 资料,以及 times_check
目前的心跳状态。
> call times_check;return_tmps;"times_check";"/d/area/test/boat";"/d/area/test/boat";
OBJ(/d/area/times_check)-> return_tmps( "times_check", "/d/area/test/boat",
"/d/area/test/boat" ) = ({ "start_plane" })
这是看目前 "/d/area/test/boat" & "/d/area/test/boat" 这个组合的执行状
况(times_check 的部份),比方目前它下一个要执行的参数是 start_plane。
广播: 小游轮驶离了台北港,开往高雄港。
> call times_check;return_tmps;"times_no_save";"/d/area/test/boat";"/d/area/test/boat";
OBJ(/d/area/times_check)-> return_tmps( "times_no_save",
"/d/area/test/boat", "/d/area/test/boat" ) = ({ "plane_0_4" })
这是看目前 "/d/area/test/boat" & "/d/area/test/boat" 这个组合的执行状
况(times_no_save 的部份)比方目前它下一个要执行的参数是 plane_0_4。
> call times_check;check_names;"/d/area/test/boat"
times_check 区:
({ "/d/area/test/boat", "/d/area/test/boat", ({ "start_plane" }) }) 122 秒后.
这是看目前 "/d/area/test/boat" 这个 name 的呼叫状态,比方上面指的就是
122 秒后它将再呼叫自己一次,并带 start_plane 这个参数。
times_check_no_save 区:
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_1_2" }) }) 42 秒后.
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_1_4" }) }) 82 秒后.
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_0_5" }) }) 2 秒后.
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_1_3" }) }) 62 秒后.
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_1_5" }) }) 102 秒后.
({ "/d/area/test/boat", "/d/area/test/boat", ({ "plane_1_1" }) }) 22 秒后.
这是看目前 "/d/area/test/boat" 这个 name 的 times_no_save 呼叫状态,比
方上面就是它依据航程计划所决定的“几秒后各带什么参数过去”。
目前 times_check 心跳参数: 1.
call times_check;remove_names;"/d/area/test/boat"
call times_check;remove_files;"/d/area/test/boat"
这两个指令则可以针对 names 及 files 去删除资料。
===========================================================================
> vote open 测试投票
开启时间: Thu Jun 05 10:45:02 2014
投票代码: 1401936302
投票标题: 测试投票
确定的话请按 Y or y: y
ok. 请于本次设定结束后, 编辑投票说明档 /open/cmds/vote/1401936302.txt
请按任意键之后, 开始输入投票项......
请输入第 1 投票项(直接按 ENTER: 输入完毕; 按 abort 再按 ENTER: 放弃开启)...
-> 投票项目1
请输入第 2 投票项(直接按 ENTER: 输入完毕; 按 abort 再按 ENTER: 放弃开启)...
-> 投票项目2
请输入第 3 投票项(直接按 ENTER: 输入完毕; 按 abort 再按 ENTER: 放弃开启)...
-> 其它项目
请输入第 4 投票项(直接按 ENTER: 输入完毕; 按 abort 再按 ENTER: 放弃开启)...
-> 投票部队
请输入第 5 投票项(直接按 ENTER: 输入完毕; 按 abort 再按 ENTER: 放弃开启)...
->
ok! 共有 4 个投票项. 如有错误, 请用 vote set 更改.
请决定一位玩家最多可以投几票(1-4): 1
ok! 你设定每一个人只能投 1票.
所有设定全数完毕, 如有错误, 请用 vote set 修改.
> ed /open/cmds/vote/1401936302.txt
Editing: /open/cmds/vote/1401936302.txt [new file]
:a
这是一项测试投票.
.
:w
"/open/cmds/vote/1401936302.txt" 1 lines 18 bytes
:q
Exit from ed.
> vote join 1401936302
标题: 测试投票
说明:
这是一项测试投票.
1. 投票项目1
2. 投票项目2
3. 其它项目
4. 投票部队
你可以投的票数: 1 票.
请选择你要投的项目(1-4, q: 结束投票, ENTER: 放弃投票): 1
你将神圣的一票投在第 1 选项.
投票结束, 你总共投下 1 票.
下次的投票也请再来唷~拜拜 ^_^
> vote check 1401936302
标题: 测试投票
说明:
这是一项测试投票.
投票项与目前投票状况(每人 1 票)...
1. 投票项目1 ...... 100.0%.
2. 投票项目2 ...... 0.0%.
3. 其它项目 ...... 0.0%.
4. 投票部队 ...... 0.0%.
目前总投票数: 1 票.
> vote set 1401936302
投票代码: 1401936302
投票标题: 测试投票
1. 更改投票标题.
2. 更改投票项.
3. 更改每人可投票数.
4. 收回投票.
5. 本次投票截止, 进行结果统计.
6. 请玩家参与此次投票之系统广播.
7. 不作任何动作(直接按 ENTER 效果一样).
请选择: 6
ok! 你启动代码 1401936302 的系统投票广播.
投票系统广播
来喔~来喔~紧来投票喔~
-> 测试投票
1. 投票项目1
2. 投票项目2
3. 其它项目
4. 投票部队
赶快来投票吧!指令是 vote join 1401936302
>
这个是我 2000 年的时候写的,刚写好就启用了,后来也没做什么
更动,从这个档案可以看到我早期使用的 coding 逻辑。

Links booklink

Contact Us: admin [ a t ] ucptt.com