看板 mud_sanc 關於我們 聯絡資訊
出差剛回來。 ※ 引述《justinj (黑旋風)》之銘言: : 看看能不能擁有這些功能 : 1.限時副本(就是副本只能存活n分鐘) 這個在 instance_data 裡面新增參數來判斷即可,時間一到就是 全員脫出不能再跑。 從這裡可以看出還能增加一個 instance_comm 的欄位,也就是所 謂的「共通設定」。 : 2.任務:擊殺副本的怪幾隻之類的 假設副本區域房間路線不是單一路徑,那上述最簡單的做法就是 「自寫怪物」,然後這些怪物只在副本出現,殺死這些怪物時 int die() { this_player()->add_temp("xxx",1); ::die(); return 1; } 我會比較建議這樣的做法,因為它不管是對「單人」或「多人副 本」來說,都比較好設定,在 die 函數裡面統一解決即可,比方 說人就是 string names=environment(this_object())->query("instance_names"); mixed usr=users(); foreach(ppl in usr) if(ppl && environment(ppl)) if(environment(ppl)->query("instance_names")==names) ppl->add_temp("xxx",1); // 在同一副本裡的玩家都+1 : 3.任務:副本通關 最常見有兩種形式(多種也可以) 一、走到這格即通關 在 instance_data 裡面新增參數判斷即可 二、打死該格某隻怪物即通關 用 mob_alldie 來判斷即可 : 4.只有在某副本才會掉的物品(ob)(如果可以,增加連接了某任務才會開始掉ob) 這個只要改 mob_drop 即可,怪物可以設定其它資料,因此只要 讓 mob_drop 讀取這個所謂的「其它資料」,則副本怪就可以比 一般怪(即使檔案一樣)多掉一些東西。 比方怪物都會設定 instance 相關的東西 if(mob->query(instance相關設定)) 才會執行副本額外掉落資料; : 5.國家副本(只有某國家才能進去),或類似限制之類的 這個簡單,等副本穩定再開給玩家寫他國家自己的副本即可。 : 6.是否限制只能進入幾次(還是限制是否能被邀請) 這可以跟任務結合,因為任務有「你要再接任務要再經過多久」 的設計,也就是接任務→才能進副本,則要再進副本自然要再接 任務,這時就能接受任務的 CD 時間設定。 也就是說,實際上沒有這個任務也沒關係,例如 questing("i999",names,... 透過 questing 函數,即便沒有某個任務也能給任務標記,就能 用 quest_data 來儲存玩家的 CD 時間資料。這個以後有空會詳 說。 那初期則可透過設在 /std/new_ob/instance/instance_rooms.c 裡面的資料來判斷,這個適用於「資料不一定要被儲存起來,暫 存即可」,因為 instance_rooms.c 不可被update,所以它可以 儲存比較長時間的暫存資料。 : 7.是否可自行增加額外限制指令 這個透過 add_action 就可處理,instance_room.c 只要有相對 應的函數來對映即可。 : 8.是否可自行增加一進入副本就會在玩家身上多物品 : (我覺得這樣要限制指令或得什麼可能比較好加) : 暫時這樣... 這個最好寫成虛擬物品,透過 ob use 來控制,則該虛擬物品的 實體物件就能透過 ob_use_func 來控制玩家該指令的使用,例 如在副本裡面才能用(environment(ppl)),沒有在副本裡就不能 用。 這些在回國後都會逐漸實裝。趁現在副本系統架構已定,但是還 在撰寫中,修改彈性是很大的。等到都寫完後要再改,就會比較 難改。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.165.193.197