/std/new_ob/instance/instance_ob.c - 聖殿英雄傳說 MUD

Hedda avatar
By Hedda
at 2017-08-18T22:48

Table of Contents

嘛,明後天解析這個東西,用跟以前不同的方法。未來有一個重要
的東西要做,就是 quest 內有 instance、instance 內有 quest,
但是這兩個東西我都遺忘了重要的部份:

quest: 與搜集物品及打怪有關的部份(當初寫給 norr 的)
這部份我看能不能透過法師進階轉職任務去找到蛛絲馬跡
instance: 全部忘得一乾二淨, haha......

quest 先不管(反正到時可以寫外掛硬幹),instance 必須先找回過
去的 coding 記憶。


第一部份 全部(或大部份)重要的函數及變數列表

static mixed instance_files=({});
static mapping instance_comm=([]);
static mapping instance_data=([]);
static mapping instance_mobs=([]);
static mapping instance_mob_datas=([]);
static mapping instance_npcs=([]);
static mapping ppl_instance=([]);
static string instance_names,instance_paths;
static string instance_ob,instance_author,
instance_virtual,instance_map2data,
instance_id1,instance_id2;
static int instance_multi,instance_cd_times;

int map2data(string tmap);
int instance_set(object room,mixed tmps);
int instance_del(object room,mixed tmps);

varargs mixed instance_data(string str1,string str2);

varargs void instance_channel(object room,int k,string str);

varargs int create_instance(string ppl_name,mixed usr,string diff,string mode);

varargs int birth_npcs(object room,string npc_files,string tmp);

varargs int birth_mobs(object room,mixed tmps,string names,int lv,string diff);

varargs int init_instance(object room,object ppl);

mixed random_map(int Width,int High,int p);

int instance_set(object room,mixed tmps);
int instance_del(object room,mixed tmps);

object find_npc(object room,mixed tmps);


第二部份 回想與猜想

01、理論上這東西是「每一個副本控制物件」的繼承檔,而它有
create_instance 代表玩家「進副本時」就是呼叫控制物件
去產生對應的副本區域,一個玩家同一時間只能在同一副本
產生一個副本區域,所以產生的副本區域一定被儲存在某處
,推測是 /std/new_ob/instance_rooms.c (不是這次重點)

02、在 create_instance 內,ppl_name 一般是 this_player()
,mixed usr 是包含 ppl 在內的全部玩家(例如同隊玩家),
diff 是難度字串,mode 是 single/非single 字串。

03、依這種寫法,任務內要使用到副本的話,就一定要寫相對應
的副本控制物件,這部份避無可避;副本控制物件寫好後,
自然就可 create_instance,this_player() 呼叫該函數後
就會產生副本區域「同時」自己也會被 move 進副本區域內

04、instance_ob 的大部份東西不用看了,create_instance 會
用就行了。

05、大抵上,仍是採借用現存區域房間的做法較方便,但要使用
虛擬房間也可以:

laechan/001.c : 實體房間範例
laechan/002.c : 虛擬房間範例
laechan/003.c : 借用實體房間但地圖路線自訂的範例
laechan/004.c : 多層式副本(類似幻想神域某一類型區域)

06、理論上,若在 quest 的某步驟呼叫 create_instance 的話
,在呼叫的同時會視為玩家已完成該步驟,這時玩家若在副
本內 recall 或 quit 的話,再回到任務觸發處試圖再接該
任務時就會無法接(因為該步驟已完成)。

所以最好還是別這樣寫。

另一方面,則最好在玩家「闖過」該副本後,直接設定玩家
已闖過該任務某一步驟的標記,讓玩家得以繼續解該任務,
是比較合理的做法。實務上,stepX_npc 可設定為玩家絕對
無法抵達的房間,玩家自然無法 quest here about xxx 去
完成該步驟─只有「闖過」副本,系統才會標記玩家已解完
該步驟。

實驗主要針對的是這個部份,第 n 步驟會提示玩家去哪裡下
instance -enter,我會找現存副本來測,並修改最後一格的
判斷:

1.沒有相關任務標記的玩家: 照原本的副本流程結束
2.有著相關任務標記的玩家: 會跑不同的流程
闖過後會設定任務標記

然後再測試被設定完任務標記的玩家,能否繼續接任務

(我可能會修改 _quest.c 為 stepX_npc 增加第三種型態,
這個主要用在 quest show 及 quest shows 上面)

第三部份 實驗

暫定明天再做,任務步驟大概 4 個差不多,副本隨便找一個簡單
的來改。

(編輯中)

--
Tags: 線上

All Comments

請問一定要購買資料片嗎

Christine avatar
By Christine
at 2017-08-18T21:34
大家好 想請教一下 GW2 一定要買資料片嗎 我目前免費玩主程式都玩得好好的 真的想不到要買資料片的原因 有什麼好處是一定要現在買嗎? 還是我可以等到滿級 有需要再買...目前才lv29.. 謝謝 - ...

兩周年慶典 狂歡瘋一夏

Blanche avatar
By Blanche
at 2017-08-18T19:59
http://heroes.garena.tw/news/670 各位親愛的英雄 赫克二武「銃刃」正式登場,也正適逢《新瑪奇英雄傳》兩周年, 當然要有豐富的活動與大家一同歡慶! 不知不覺已經兩周年了,庫漢村莊裡的 NPC 們好像也都有很大的感觸呢~ 去與大家對話並完成任務,旅行者會送大家可愛的小鬼氣球 ...

赫克二武改版資訊

Ida avatar
By Ida
at 2017-08-18T19:50
http://heroes.garena.tw/news/668 《新瑪奇英雄傳》赫克二武「銃刃」亡命狙擊 裂刃迴天 https://youtu.be/rq2ByWTQky4 各位親愛的英雄 赫克二武「銃刃」登場,亡命狙擊!裂刃迴天! 「銃刃」是一手持散彈槍,一手持長刃的組合, 對於英雄們來說應該是個 ...

天使、眾神與龍之舞-空天龍牌組研究

Donna avatar
By Donna
at 2017-08-18T19:17
遊戲角落網頁版: https://game.udn.com/game/story/10449/2650715 大家好!我是深海棲艦。平衡過了半個月了,整體環境也變不再到處都是中立深淵 (雖然吸血鬼還是到處都是…以快攻吸血鬼的身分肆虐天梯),在這樣的環境下, 我這次要向大家介紹一套從巴哈姆特降臨時代開始一直 ...

這裡有女性玩家嗎?

Frederic avatar
By Frederic
at 2017-08-18T19:15
如題 這次去漫博有看到一些女性玩家 不過人數寥寥可數 之前看公式書的附錄裡面寫到 根據問卷調查 大約有10%玩家是女性 板上有女生嗎? - ...