看板 mud_sanc 關於我們 聯絡資訊
今天修改 create_instance 函數: varargs int create_instance(string ppl_name,mixed usr,string diff) diff 是所謂的「難度」,當 create_instance 帶這個參數時,它會 將這個參數設到每一個 iroom 中,供 init_instance 及其它函數參 考。 這裡就要定義所謂的難度: 一、英文字串 二、預設值為 "normal" 三、比 "normal" 高的是 "hard",我初期會分三階,分別是hard1、 hard2 及 hard3。 四、不會有 "easy"。 我原則上不採取幻想神域的「單人」「n人」模式。幻想會依玩家選 的是哪一個,決定怪物的難度及血量,其結果是人越多有時反而越難 打,然後又有人數上限,導致.. 1.玩家一個人時,選多人副本有時反而自找麻煩 2.玩家兩三個人時,選多人副本有時也很難打 3.就算玩家湊足五人,可輕鬆虐一般等級的五人副本,卻不保證可以  輕鬆虐困難等級的五人副本,「偏偏又沒其它選擇」 4.玩家無法烙更多人打同一副本(暗黑三也有相同問題) 所以副本只會分「難度」,不會分「人數」,人數由玩家自己決定, 當然一般還是有上限(例如 follow 組隊人數上限),但以攻城戰來說 可能就無上限。 然後四個階段的難度的主要差異(怪物的難度是一定有差的): 1.額外掉寶率。 vobjs_d.c 控制的 2.經驗值、熟練度。 /std/pexp.c 控制的 3.最終寶箱可開到的物品數量。 action + 寶箱宣告控制的 4.副本的地圖有可能會長不一樣。 instance_map2data 決定的 所以 instance_map2data 也加上 diff 參數如下 if(function_exists("instance_map2data",this_ob)) instance_map2data=this_ob->instance_map2data(ppl_name,usr,diff); 目前只有 004.c 有用到,已修改。所以請注意 instance_map2data 要接三個參數。 最後就是如何讓難度參數影響生怪以及額外掉寶率,這個只要寫個公 式去跑就可以了,例如: new_level = level + (254 - level) x hard[n] / 100 new_member = member * (100 + hard[n]) / 100 以上的 diff 參數已實裝。 > da bear instance_diff :"hard3" instance_id1 :"laechan" instance_id2 :"004" Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.157.53 ※ 文章網址: http://www.ptt.cc/bbs/mud_sanc/M.1398223280.A.7C3.html ※ 編輯: laechan (210.61.157.53), 04/23/2014 11:45:15 ※ 編輯: laechan (210.61.157.53), 04/23/2014 16:02:57
laechan :突然發現 pexp.c 不用改(因為經驗值會隨等級變動) 04/23 16:03
Fnd :我想人多難打應該是公式很單純的用乘法吧(猜測 04/23 19:35
laechan :今天有想到,應該至少可分為「單人」及「非單人」 04/23 19:46
laechan :單人副本「其它人無法事後加入」只要加這個條件即可 04/23 19:47
laechan :而多人就泛指兩人以上,成員可來來去去 04/23 19:47
laechan :這個會加進明天的 coding 項目 04/23 19:47