tmi2-mudlib 的更改 - MUD Game

Daniel avatar
By Daniel
at 2014-06-30T15:33

Table of Contents


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


tmi2_fluffos_v3_改,20140630 版本

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

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

(底下以 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,只允許本機端登入,無法遠端登
入。欲新增 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

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

本次修改範圍: 20140624~20140630

本次只做一項修改就是新增腳本式任務系統。所謂的腳本檔案類似底下

> more /d/quest/l/l001.txt
title=測試任務## 任務的 名字
date=2014-06-27## 標記
author=laechan## 作者
keys=test, 測試## 關鍵字
steps=3## 步驟總數
times=1## 能解幾次
step1_tar=/d/area/newbie/mob/mao1## 步驟1要找誰or要去哪
step1_check=
ppl->query_levels()<2 要符合步驟1的判斷才執行
你要滿兩級之後才能來找瑪兒喔!##
step1_msg= 步驟1會跑哪些訊息
$N: 你好
$O: 你好啊~~##
step2_tar=/d/area/newbie/mob/angelia1## 步驟2要找誰or要去哪
step2_msg=
$N: 你好 步驟2會跑哪些訊息
$O: 你好, 冒險者.##
step3_tar=/d/area/newbie/mob/mao1## 步驟3要找誰or要去哪
step3_msg=
$N: 你好 步驟3會跑哪些訊息
$O: 你回來啦##
step3_end=
ppl->add_levels(1) 步驟3結束後會做哪些事情
write("恭喜,你升級了!\n")##

> quest read l001
/std/cmd_m.c: Updated and loaded.
/d/quest/quest_ob.c: Updated and loaded.
/d/quest/l/l001: Updated and loaded.

以 quest read 指令將這個物件腳本讀入後,它就會去做解析腳本檔
的工作,然後產生「腳本物件檔」,比方腳本檔是 l001.txt,那物件
檔就是 l001.c。

> quest list
l001 laechan 測試任務 ({ "test", "測試" })
觸發物件: 道具店老闆--瑪兒(Maor) /d/area/newbie/mob/mao1
l002 laechan 測試任務2 ({ "test2", "測試2" })
觸發物件: 道具店老闆--瑪兒(Maor) /d/area/newbie/mob/mao1
l003 laechan 測試任務3 ({ "test3", "測試3" })
觸發物件: 道具店老闆--瑪兒(Maor) /d/area/newbie/mob/mao1

目前共註冊了三個任務,quest list 可簡單列出這些任務的基本資訊
,從上面可看出三個任務都可設定以 maor 為接任務的 npc,因為三個
任務的關鍵字各不相同。

> quest show l001
┌──────────────────────────────┐
│任務名稱:測試任務 │
│任務作者:laechan │
│關 鍵 字:test, 測試 │
├──────────────────────────────┤
│任務步驟: │
│ │
│ 1.與 道具店老闆--瑪兒(Maor) 對話。 │
│ 2.與 修理店老闆--安琪拉(Angelia) 對話。 │
│ 3.與 道具店老闆--瑪兒(Maor) 對話。 │
└──────────────────────────────┘

quest show 指令可以看到某一任務更詳細的資訊。

底下實際進行該任務並示範 quest query。

> look
[/d/area/newbie/room/object ]
[道具屋]

這裡是魔女琪琪開的道具屋, 你可以四處看看(list),
都是一些很奇特但相當好用的道具呢, 如果有錢的話,
就買些東西(buy), 它們可是相當好用的.

明顯出口有: south.
道具店老闆--瑪兒(Maor)
> quest maor about test
Laechan: 你好
瑪兒: 你好啊~~

> quest query laechan
({ "l001", 1, 0, 0, "2014-06-27" })
已解第1步驟 任務標記存在這裡

> quest maor about test
瑪兒: 你接下來應該去找 修理店老闆--安琪拉(Angelia) 喔.

它會提示玩家接下來要找誰。

> quest angelia about test
Laechan: 你好
安琪拉: 你好, 冒險者.

> quest query laechan l001
({ "l001", 2, 0, 0, "2014-06-27" })
已解第2步驟

> quest angelia about test
安琪拉: 你接下來應該去找 道具店老闆--瑪兒(Maor) 喔.

> quest maor about test
恭喜,你升級了! <= 先執行 step3_end
Laechan: 你好 然後才執行 step3_msg
瑪兒: 你回來啦

> quest query laechan l001
({ "l001", 0, 1, 1404110402, "2014-06-27" })
已解步驟歸 0 已解次數變 1 解了該任務的時間

> quest del laechan l001
quest_data[laechan][0]=({ "l001", 0, 1, 1404110402, "2014-06-27" }) 刪除 ok.

> quest maor about ?
與 瑪兒 有關的任務關鍵字有: test3, 測試3, test2, 測試2, test, 測試

上述指令可顯示與 maor 有關的任務關鍵字。

quest del 指令則可以清除玩家已解哪個任務或是已解的所有任務的
紀錄(wiz 可使用這個指令反覆測試任務)。

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

以腳本式任務系統寫任務,有以下幾個優點

一、不需要去動區域檔及怪物檔,需要改的只有腳本。
二、一個 quest 指令就可以接所有的任務。
三、一個 quest 指令就可以管理與維護所有的任務。
四、所有的任務流程通通寫在腳本檔裡,more 出來看就很清楚。
五、任務的 date 一變更,玩家就可以重解該任務。
六、任何人都能輕易接手維護其它人所寫的任務
七、任務攻略靠指令就能完成,甚至「任務流程教學」靠指令就能完成
八、任務腳本本身就是「素材」的一種

傳統上以 ask 指令、以 add_action、以修改房間檔與怪物檔所寫成
的任務,具有以下缺點

一、要改檔案、要寫函數、要設立很多判斷式

比方你到底有沒有先找前一位 npc 聊過話,或是想寫任務的 wiz
卻遇到沒有這個房間或該隻怪物的修改權,得請 adm 開通權限..

二、經常為了要讓玩家做什麼動作指令、或是給什麼關鍵字想半天

比方某個地方到底是要 push 還是 move,後面要接 stone 還是
石頭,語法到底是 push stone 還是 push stone to ...

  然後還得為要怎麼提示玩家,才既不會露骨又能讓玩家不至於猜
了老半天還猜錯。

三、難以集中維護與管理

比方某 wiz 在任期間寫了很多任務,結果他離開後,沒人可以接
手維護。甚至很可惜的其實他某個任務已經快寫完了,結果因為
很難理解他所寫的落落長的步驟而只好成為遺珠之憾。

四、要完全摸透一個任務的所有流程,必須一個檔案一個檔案 more

而且重點是 more 了還要能懂原設計者當初是怎麼構想這個任務
的,才看得懂他使用一些參數的用意。更不用說,就連原設計者
  本身都可能在隔了很多年之後,忘記自己當初是怎麼寫的,他也
只能靠一個檔案一個檔案 more 來回想。

五、當某個房間、或某隻怪物,同時身兼兩個以上的任務相關物件

比方以上面的任務為例,跟 maor 有關的任務就有三個,若依傳
統的寫法「光是 maor 這隻 npc 就得做很大段落的修改」,才
能讓它身兼三個任務的相關 npc。

六、任務一經更動,原本玩家或 wiz 所寫的任務教學或流程就得改

比方最常見的就是任務的延伸或縮減,則已公布的相關攻略或教
  學文件就得跟著更動。


任務系統的說明文件也已建立於 document 的系統目錄,使用者也可
參看。

我想傳統與新式做法的優缺點都是使用者可以自行評估的,使用者也
不一定要用我寫的任務系統,自己寫一個也是可以的。

我為 tmi2_v3_改 寫這個任務系統的目的之一,在於任務腳本本身也
是一種素材,我有解釋過什麼叫素材,比方某 tmi2_v3_改 的 mud,
今天完成了一個任務腳本檔,則他是可以將這個任務 share 出來的,
其它 tmi2_v3_改 的 mud 只要配合自己的 mud 將腳本檔略做修改,
馬上就能讓這個任務在自己的 mud work。

先確保擁有素材的特色,然後才是這個任務系統本質上最大的優點,
也就是「任何你已知的、能搜尋到的任務」,你都能將它快速寫成腳
本,即所有線上遊戲的任務幾乎都能在找到資訊的同時就將其腳本化
,例如 RO 大神官的委託任務:

http://roidv.com/ro/mission/ep11_1_m.htm#3

01.再與神殿屋內與“傑德 大神官”對話觸發,接受他的委託。
02.依照傑德的只是走到了有兩個士兵守衛的門(134.134),跟其中一個士兵對話。
 他會要求冰心臟40個,身上有東西會進入傳點。
03.走到底與”教皇”對話,隨便回答後回去找“傑德 大神官”。
  之後會被傳到隔壁房間,走到牆壁偷聽他與別人的對話。
04.再找“傑德 大神官”對話會警告你不可以跟去,離開房間後會得到鑰匙。
05.這時就可以去拉赫的神殿密穴,到二樓禮拜堂的中間傳點進去就可以了。
06.直接到四樓的會自動觸發對話,再走到119.204與”尼樂研 大神官”對話。
07.之後會被傳回拉赫,趕緊回去找傑德。
08.與他對話之後會取得經驗值,就可以自由進出神殿洞穴。

要在 tmi2_v3_改 實裝上面的任務,只需要透過 set_npcs 撰寫
大神官、士兵、教皇、神殿密穴裡二樓的某一格、四樓的某一格
、尼樂研,.... 光是看到這個任務的瞬間,腳本幾乎就已經完
成了。(因為對話可以自己掰)

冰心臟 40 個更簡單,比方冰心臟的虛擬物品編號是 m040,那
只需要做底下判斷:

if(ppl->query_vobjs("m040")<40)
{
write("你要先準備冰心臟 40 個喔.\n");
return 1;
}
ppl->add_vobjs("m040",-40); // 玩家有準備足夠時就扣掉


總之,tmi2_v3_改 有任務系統了,距離完改又更靠近了一步。

PS.我評估過 tmi2_v3_改 或許不需要副本系統,那或許就可以
  直接用 sanc 現有的版本(反正也是我寫的,justin@sanc 寫
的部份它也同意授權)

因為副本有它的存在意義,但以 tmi2_v3_改 的先天體質來
說(不怕搶怪、地圖可無限擴張),副本系統是可有可無的。

主要是我不想重寫副本系統。


最後附上一個我在 sanc 寫過的新手任務腳本(有經過 norr@sanc
等 wiz 的修改),部份我在 sanc 寫的腳本我也放進了 sanc.rar
壓縮檔內,存放於 /open/cmds/quest/l 資料夾中。

> more /open/cmds/quest/n/n000
title=在新手村生活的第一步##
date=2011/10/02##
key=newbie quest;新手任務##
macro=
#define OOXX "ooxx"
#define ABCD "abcd"##
steps=8##
nonseq=2-7##
step1_npc=/d/ppl/norr/quarcha/npc/center##
step1_msg=
$M: 你好啊, 陌生人!
$N: 你好 ^_^
$M: 俗話說, 『在家靠父母, 出外靠朋友』
$M: 先去認識咱們城鎮裡頭的一些人吧!
$M: 只要對他們說是我介紹你來的就可以了.++
(quest 他們 about 相同的關鍵字 即可)##
chat1_npc=/d/wiz/mob/lodao##
chat1_msg=
$M說道: 「新手任務」的相關對話 npc 都在這座城鎮內喔~##
step2_npc=/d/ppl/norr/quarcha/npc/effie##
step2_msg=
$M: 你好啊, 陌生人
$N: 您好, 謬西先生叫我來跟您打聲招呼 ^_^
$M: 啊, 是這樣啊, 你好, 我叫伊菲, 是這兒的老闆
$M: 瞭解一些跟$HIG$物品$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$i$NOR$ 可以觀看身上的物品
$M: 指令 $HIW$ob$NOR$ 可以觀看打怪得到的物品(虛擬物品)
$M: 指令 $HIW$drop$NOR$ 可以丟下身上的物品
$M: 指令 $HIW$get$NOR$ 可以撿起地上的物品
$M: 指令 $HIW$give$NOR$ 可以將身上的物品給人
$M: 我們店裡有賣許\多道具, 有需要的話就常常來這光顧吧!##
step3_npc=/d/ppl/norr/quarcha/npc/eqmaster##
step3_msg=
$M: 你好啊, 咦? 我以前好像沒看過你哪.
$N: 您好, 謬西先生叫我來跟您打聲招呼 ^_^
$M: 喔喔, 是這樣啊, 你好啊, 呵呵
$M: 我是這裡的老闆, 我叫德雷依.
$M: 瞭解一些跟$HIG$裝備$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$wear$NOR$ 可以穿上身上的裝備
$M: 指令 $HIW$remove$NOR$ 可以脫下身上的裝備
$M: 指令 $HIW$look me$NOR$ 可以觀看身上裝備的狀態
$M: 指令 $HIW$searchobj$NOR$ 可以搜尋線上玩家的特定裝備
$M: 指令 $HIW$eqstat$NOR$ 可以觀看玩家身上的裝備屬性值
$M: 指令 $HIW$view$NOR$ 可以觀看玩家身上某一件裝備的詳細資訊
$M: 我這兒裝備很多吧? 缺裝備的話就來我這裡買吧.
$M: 我會算你便宜一點的, 呵呵.##
step4_npc=/d/ppl/norr/quarcha/npc/hotel##
step4_msg=
$M: 歡迎光臨~
$N: 您好, 謬西先生叫我來跟您打聲招呼 ^_^
$M: 唉呀~你好啊
$M: 我是這裡的老闆娘,我叫做諾雅
$M: 你叫我阿雅就好了,叫我阿諾的話小心我飛踢你唷 ^_<
$M: 瞭解一些跟$HIG$身體狀態$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$score 及 score l$NOR$ 可以觀看自己的一些數值資訊
$M: 指令 $HIW$astat(簡寫 a)$NOR$ 可以觀看 buff 的狀態
$M: 指令 $HIW$hp$NOR$ 可以讓你在戰鬥中觀看血量的狀態
$M: 指令 $HIW$con$NOR$ 可以讓你打量戰鬥的目標的強度跟資訊
$M: 有空歡迎常來啊~我們旅館的伙食不錯唷~##
step5_npc=/d/ppl/norr/quarcha/npc/katwuya##
step5_msg=
$M: 你好, 請隨便參觀
$N: 啊..您好, 謬西先生叫我來跟您打聲招呼 ^_^
$M: 喔, 是這樣啊.
$M盯著你瞧了好一會兒.
$M: 看你弱不禁風的, 怎樣, 要不要買點藥水啊? 哈哈..
$M: 瞭解一些跟$HIG$藥水及身上錢財、存款$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$drink$NOR$ 可以喝藥水、及觀看身上還有帶多少藥水
$M: 指令 $HIW$wealth$NOR$ 可以讓你觀看帶在身上的錢財數量
$M: 指令 $HIW$balance$NOR$ 可以讓你觀看銀行存款的數量
$M: 要出城打怪的話最好先來我這裡補個幾瓶再上路比較好喔.##
step6_npc=/d/ppl/norr/quarcha/npc/master##
step6_msg=
$M: 你好啊, 年輕人.
$N: 您好, 謬西先生叫我來跟您打聲招呼 ^_^
$M: 喔, 嗯嗯, 年輕人你真有禮貌啊~
$M: 瞭解一些跟$HIG$交談$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$chat$NOR$ 可以讓你進行線上與其它玩家的$HIC$【閒聊】$NOR$
$M: 指令 $HIW$say$NOR$ 可以讓你跟同房間的玩家對話
$M: 指令 $HIW$tell$NOR$ 可以讓你跟其它玩家進行私密的交談
$M: 指令 $HIW$reply$NOR$ 可以讓你回覆其它玩家的私密交談
$M: 指令 $HIW$recare show$NOR$ 可以讓你回顧最近五則私密交談內容
$M: 老夫的名字是格拉夫, 有問題都可以來問我喔~##
step7_npc=/d/ppl/norr/quarcha/npc/wpmaster##
step7_msg=
$M: 你好, 歡迎參觀.
$N: 您好, 謬西先生叫我來跟您...
$M: 年輕人, 買把武器吧.
$N: 啊?...不是, 是謬西先生叫我...
$M: 喔, 哦哦! 原來是這樣啊, 失禮失禮.
$M: 瞭解一些跟$HIG$買賣$NOR$有關的指令,對將來很有幫助喔
$M: 指令 $HIW$sell(ob sell)$NOR$ 可以將你身上的東西賣給商店
$M: 指令 $HIW$buy(ob buy)$NOR$ 可以買進商店的東西並放在身上
$M: 指令 $HIW$list$NOR$ 可以觀看商店現在有在賣些什麼東西
$M: 指令 $HIW$auction$NOR$ 可以將你身上的東西放在拍賣頻道進行拍賣
$M: 指令 $HIW$hands 及 blarket$NOR$ 有興趣的話也可以研究一下怎麼用喔
$M: 以後要買武器的話, 就來我這裡吧, 但是記得帶錢喔, 哈哈.##
step8_npc=/d/ppl/norr/quarcha/npc/center##
step8_msg=
$M: 怎樣, 他們人都不錯吧
$N: 哈哈..對啊..^_^;
$M: 呵呵, 雖然他們每個人的個性都不一樣
$M: 不過其實都是很熱心的好人喔.
$M: 認識他們對你以後會很有幫助的.
$M: 他們所講解的每個指令, 也都有指令說明可以參閱\喔
$M: 瞭解這些指令怎麼使用, 對你將來是很有幫助的
$M: 總之, 恭喜你完成了『認識新手村的人們』的任務
$HIG$『$HIY$你得到了任務獎勵─新手基金$HIW$ 10 $HIY$萬以及$HIW$ 35000 $HIY$經驗>值 $HIG$』$NOR$##
step8_end=
add_v(ppl,"record_data/newbie_money",100000)
add_v(ppl,"exp",35000)##

> quest show n000
┌────────────────────────────────┐
│任務編號:n000(一次性任務) │
│任務名稱:在新手村生活的第一步 │
│任務標記:2011/10/02 │
│任務作者:無名氏 │
│關 鍵 字:newbie quest, 新手任務 │
├────────────────────────────────┤
│任務流程: │
│ │
│ 1.與謬西領航員(Musi)對話。 │
│ 2.與道具店老闆伊菲(Effie)對話。 │
│ 3.與裝備大師德雷依(Derlei)對話。 │
│ 4.與旅館老闆娘-諾雅(Norya)對話。 │
│ 5.與藥劑師-卡翠亞(Katwuya)對話。 │
│ 6.與新手導師格拉夫(Galuf)對話。 │
│ 7.與武器大師-卡諾斯(Kanors)對話。 │
│ (第 2-7 步驟可以不用照順序) │
│ 8.最後與謬西領航員(Musi)對話,任務結束。 │
├────────────────────────────────┤
│任務獎勵: │
│ │
│ 新手基金 100000 元。 │
│ 經驗值 35000 點。 │
└────────────────────────────────┘


--
Tags: 線上

All Comments

Dinah avatar
By Dinah
at 2014-07-01T21:36
下次的版本會讓quest指令更充實一點
Leila avatar
By Leila
at 2014-07-04T16:19
以及做些細部的修改,下次項目會較雜
Dinah avatar
By Dinah
at 2014-07-05T18:16
Kama avatar
By Kama
at 2014-07-09T18:04
新的創角流程已寫好並測試ok

世足就在今夜之大雞第4場!

Susan avatar
By Susan
at 2014-06-30T13:20
就在今夜,大雞重返榮耀之路2014 16強大雞第4場: 午夜0:00 法國 VS. 奈及利亞 支持大雞的鄉親們準備好爆米花飲料一起來high吧! Go France! - ...

NPC大多都怎麼推呢?

Joe avatar
By Joe
at 2014-06-30T12:56
因為看到有人說PTT只有MABI交易版於是來發發閒聊文了andgt;_O+ 是說現在NPC大多都是人偶+爆裂+火噴風車支援 不過出野團總是會碰到某個職業(我知道有些人對於MABI內使用職業一詞覺得反感 但不知道用哪個詞比較適當 艸 多到滿出來 ...

好像沒什麼人在關心AIC?

Gary avatar
By Gary
at 2014-06-30T12:46
前兩天剛剛沸沸揚揚打完台灣國手選拔~ 不過看板上好像沒什麼人在討論? 不知道大家有沒有在關注今年的AIC呢? 感覺還是蠻看好ahq的說! - ...

「航向喜望峰」主線

Skylar Davis avatar
By Skylar Davis
at 2014-06-30T12:36
0.完成「沙塵中的黃金都市」,再入港觸發劇情。 1.聽到拿坡里有一家採用新大陸食材,很美味的比薩屋, ナポリ 於是前往拿坡里。 バジル 2.到達拿坡里,不過披薩店生意太火熱,羅勒不夠用, ...

「航向喜望峰」

Daph Bay avatar
By Daph Bay
at 2014-06-30T11:08
メンテナンス終了のお知らせ いつも『大航海時代Ⅴ』をご利用いただきありがとうございます。 アップデート「喜望峰へ」実装のためのメンテナンスが終了し、サービスを再開いたしました。 以下の通り、機能追加・不具合修正・調整などを行いましたのでご報告いたします。 【機能追加】 ●新海域(コンゴ川・アフリカ南端)を ...