[心得] 區域寫作 mob_prog
mob_prog = mob_programs 即 mob 的動作程式,舉凡是給它錢
告訴他什麼話,給他什麼東西都是由這邊操控,這是最簡易版的
程序控制,不需要真正寫到程式,但是也是一連串的邏輯控制就是了。
以下是一個例子 巨型野兔(huge hare)
>fight_prog 100~
if rand(25)
mset hare level 5
emote 咚!咚!咚!跳到了你的面前
bare multi $n
mset hare level 11
endif
~
>death_prog 100~
mpjunk all
if rand(10)
mpoload 5601 10
break
endif
if rand(35)
mpoload 5608 1
mpecho 你發現腳邊有一個土堆!
endif
~
|
兔子的動作主要分兩種 program,分別是 fight 與 death
program 種類有很多,格式是這樣:
>[prog_type] [argument]~
~
>是prog進入點
[prog_type]rog 種類,總共有以下
1. SPEECH_PROG //說話程式
2. RAND_PROG //隨機啟動程式
3. FIGHT_PROG //戰鬥程式
4. DEATH_PROG //死亡時啟動程式
5. HITPRCNT_PROG //mob血量百分比程式
6. ENTRY_PROG //生物進入房間起動的程式
7. GREET_PROG //生物見面啟動程式
8. GIVE_PROG //被給予時啟動程式
9. BRIBE_PROG //被給錢時啟動程式
1. speech_prog 就是你告訴他什麼話時會啟動的程式,例如
>speech_prog [p] 給我錢~
say 才不要咧!
~
當玩家 "tell mob 給我錢" 的時候,NPC會說"才不要咧!"
[p] 參數為了良好的程式習慣,就都要加就對了!
2. rand_prog 就是mob會不斷的隨機一個亂數,然後執行這段程式
>rand_prog 50~
say 耶 50% 機率可以說話!
~
嗯,沒錯!後面接的參數就是機率!這個 rand_prog 每個 tick
就會執行一次亂數,所以是非常吃系統資源的,我自己是完全禁
止使用這種prog,沒意義也沒效率
3. fight_prog 就是戰鬥的動作,後面接的也是參數。例如:
>fight_prog 100~
say 竟敢打我!
~
這個例子不是很好,因為它每一回合都會說一次 "竟敢打我!"
機率是 100% 嘛!來應用一下剛剛兔子的prog
>fight_prog 100~
if rand(25)
mset hare level 5
emote 咚!咚!咚!跳到了你的面前
bare multi $n
mset hare level 11
endif
~
這邊就是每回合都會進入這個戰鬥程式,第二行的 if rand(25) 代表有
25%的機率會進入這個條件,if 當然要用 endif 包起來,這就是程式的
概念,所以要寫難度高的、複雜的prog建議要有基礎的程式底子。
mset xxxx 是 mob 動作,這是改變兔子等級到 5 級,然後使用 bare multi
使用完後再改回 11 級,因為等級太高打玩家會太痛XD
4. death_prog 死亡時會啟動的程式,一樣用數字當作機率參數。
>death_prog 100~
mpjunk all
if rand(10)
mpoload 5601 10
break
endif
if rand(35)
mpoload 5608 1
mpecho 你發現腳邊有一個土堆!
endif
~
這個例子稍微複雜一點,死亡時清空身上的裝備(mpjunk all),這邊使用
mpjunk 而不是 mppurge,請注意以後清東西請用這個指令,不要再用mppurge
if rand(10) 有10%機率會產生(mpoload) 5601 這個物品
break 則是直接結束整個 death_prog
if rand(35) 有35%機率產生 5608,且在房間廣播 "你發現腳邊有一個土堆!"
某個很難打的重要戒指 death_prog 很簡單,
>death_prog 5~
mpoload xxx 1
~
這樣就了解了
5.hitprcnt_prog 血量比例程式,
當 mob 的 hp 低於某百分比時所進行的prog
>hitprcnt_prog 50~
say HP低於一半啦!
~
不過通常不會單獨使用,而是用另外一種方式出現在其他 prog 裡面
例如在 fight_prog 裡面常用
if hitprcnt($i) < 50
say 我的血量低於一半,開始變身!
mset eplis level 130
endif
這邊就是龍王不斷變強的秘密(?),每到一定的血量就提升自己的等級
6. entry_prog 基本上就是玩家進入這格房間會驅動的程式
>entry_prog 80~
say 我有80%的機率跟你打招呼喔!
~
簡單易懂,除非特殊情況,不然我覺得這個部分其實跟 greet_prog 蠻重疊的
7. greet_prog 碰到該mob會觸發的程式,
>greet_prog 100~
say 您好歡迎光臨!
~
通常作服務業賣商品的都要很有禮貌,所以都會作類似這種 prog
不過有時候NPC進到商店,理論上 NPC 不可能跟 NPC 買東西吧!
所以都還會加一個判斷式,判斷是不是人,阿不是啦!是不是玩家
8. give_prog 玩家給予物品時會觸發的程式,要記得物品名稱是完整名稱喔
>give_prog dragon pearl~
say 哇!這麼好給我飛龍珠!那我就收下啦!
mpjunk all
~
通常做迷的時候一定要把物品給刪除(mpjunk),避免玩家從你(mob)身上
得到好處之後殺人越貨再來一次XD
9. bribe_prog 賄賂程式,參數是金額
>bribe_prog 5000~
say 謝謝你給我5000金幣!
mpjunk coins
~
概念如同 give_prog,計得刪除金幣。
bribe_prog 還有一個概念,就是參數以上也視同接受,例如上面的例子
你給 mob 5001 金幣,他也是會說 歇歇你給我5000 金幣
所以要做出上下限的概念比較搞剛一點,要做這樣子:
>bribe_prog 5000~
say you gave at least 5000 coins!!
mpjunk coins
~
>bribe_prog 1~
say you gave less than 5000 coins!!
mpjunk coin
~
這樣給予不到5000金幣的時候也會有反應了!
好了 prog 介紹到這邊,但是還有很很多的參數沒介紹到,可能再下一篇出現
這篇當基礎介紹就好,我突然開始有點後悔自己介紹,找以前文章輕鬆多了XD
--
Mars-瑪爾斯群英傳,為一種多人的地下城文字網路遊戲(MUD),
以西方魔法奇幻風格為背景,讓玩家扮演各種職業進行冒險、解謎。
IP:220.135.242.105:8888 討論板: PTT mud_mars
Eplis @ Mars
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.211.22
推
10/13 17:23, , 1F
10/13 17:23, 1F
推
10/13 18:45, , 2F
10/13 18:45, 2F
推
10/13 19:28, , 3F
10/13 19:28, 3F
→
10/13 19:28, , 4F
10/13 19:28, 4F
推
10/13 19:37, , 5F
10/13 19:37, 5F
→
10/13 20:03, , 6F
10/13 20:03, 6F
→
10/14 21:20, , 7F
10/14 21:20, 7F
推
10/14 21:36, , 8F
10/14 21:36, 8F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
mud_mars 近期熱門文章
10
10
PTT遊戲區 即時熱門文章
15
19
19
27
70
207