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 邏輯。