mud_sanc 板


LINE

※ [本文轉錄自 mud 看板 #1UnV9b_2 ] 作者: laechan (揮淚斬馬雲) 看板: mud 標題: [閒聊] 關於武防精鍊的做法評估 時間: Thu May 21 11:15:46 2020 灌個水。(真物理灌水,咕嚕咕嚕... sanc 還沒真正實裝這個東西,想說來研究看看,或許打著打著, sanc 那邊就給它實裝了也說不定。 在部份 mud,玩家資料檔的 obj_data 欄位可以做如下儲存: obj_data ([ "/weapon/lodoos/sword1#123456":(["improve_lv":5, ...]), . . ]) 也就是以物品的檔名做為 key 值,後面接這個物品的額外儲存資 料,當玩家 login 時,依照 key 值 clone_object 物品出來的 同時,再做以下的動作: ob=clone_object(files); foreach(str in keys(obj_data[files])) ob->set(str,obj_data[files][str]); 例如把上述的 improve_lv 值 5 設定到該 clone_object 出來的 物品上面,再把該物品 move 到玩家身上。 這類關於額外儲存的資料,需滿足以下條件: 一、最少設定(儲存)項目 二、最簡設定(儲存)原則 比方也有人是用 refine 做為精鍊的意思,我個人的評估思維是, 如果指令敲起來好敲(refine蠻好敲的),意思也有點兒到了,長度 沒有很長....這裡的長度指的是 refine_lv 精鍊等級 refine_stat 精鍊所提升的屬性質 . . 做為儲存欄位來說看起來還 ok,那我多半就會用了。 那首先就 refine_lv 即精鍊等級來說,像 RO 可以精練到 1x 等 ,而且是武器防具都可以,而且還有套裝及插卡方面的設定,還會 有依精鍊值做額外屬性加成的設定,因此我會一併考慮精鍊是否額 外儲存 refine_stat 的問題。 我的思維是,假設做額外儲存,那直覺上會有幾個問題: 1.如果我改變精鍊規則,我很難去更動之前已被玩家精鍊的物品 2.若不存這個欄位,我怎麼解決載入時的 loading 問題 3.我將來要怎麼去統一管理這些已經被精鍊的物品的refine_stat 儲存值 1 的部份就是說,比方我原先訂 +1 就是該武防各屬性 +5,那後來 我覺得 +5 太多了想改 +3 時,玩家之前已精鍊的東西我就得做額 外的處理(把那些 +5 改成 +3)。 而既然以後可能會有這個問題,那還不如在 loading 時就處理: ob=clone_object(files); foreach(str in keys(obj_data[files])) { ob->set(str,obj_data[files][str]); switch(str) { case "refine_lv": lv=obj_data[files][str]; ob->set("refine_stat",lv*5); . . 上面的意思就是說我只儲存 refine_lv,而當玩家登入時,我再依該 物品的 refine_lv 值,來設定 refine_stat 的值是多少;玩家save 或是把該物品儲放進倉庫時,只存 refine_lv 不存 refine_stat,也 就是上述的最少設定(儲存)項目,而上面的 switch..case.. 用來做 為額外的處理。 那麼 coding 常遇到的情況就是 當我們儲存的項目越多時 就可以減少很多額外的處理 當我們儲存的項目很少時 就需要很多其它額外的處理 例如我們只單存一個 refine_lv 時,就可以想見在很多地方都需要先 讀取出這個值,然後再做額外的運算來得到其它我們想要的東西,例 如 refine_stat、refine_name、.... 等等。 通常根據均值定理,可得出一個適當的儲存項目數量,使得儲存的項 目不至於過多,且不會增加很多需做的額外處理。 但是根據經驗,其實還有另一種做法,就是 RO 所採取的額外描述法 例如 RO 的蛇披,它的 Special DEX 部份是這麼說的 https://upload.8591.com.tw/ware/201905/1557133186868273AY.png
Dex+1 精鍊值+8時Dex+3 當精鍊值+9時MATK+1% 當精練值+12時ASPD+1,固定詠唱時間-7% 也就是說,玩家登入或從倉庫拿出此物品時,只載入 refine_lv 的設 定值,但是當玩家做 wear 或 wield 時,才做以下的動作: lv=ob->query("refine_lv"); switch(lv) { case 1..7: ob->add("stat/dex",1); case 8 : ob->add("stat/dex",3); . . } 而其它時候,比方玩家 view 該物品時,只會看到上面的「描述」,以 及該物品的精鍊值,既然玩家只有在做 wear 及 wield 時,該精鍊值才 會有作用,那自然只需在玩家 wear 及 wield 時做相關的處理就好。 我相信 RO 也是這樣做的,所以它們才會規定物品在手持或穿戴時無法 精鍊,必須先脫下來才行。 因此理論上,只儲存 refine_lv 值應該是可以的。 而這可以帶來幾個好處: 一、refine_lv 這個儲存欄位的變動性不高,應該確定就是這個欄位, 連同精鍊指令也可以順便定為 refine。 二、之後可以只先處理 wield/wear 指令,馬上就能進行相關測試,例 如穿脫時的玩家屬性變化、quit/login 時是否正常載入等。 三、再之後才是其它與觀看該物品相關的指令,例如 inventory、look 、view、auc、.....等。 精鍊名稱的部份,最直覺是以下的顯示: +0時: 羅德斯長劍(lodoos sword) +9時: +9羅德斯長劍(lodoos sword) 然後最優先考量是戰鬥時,是否希望+9出現: 你以手中的羅德斯長劍刺向小麻雀 你以手中的+9羅德斯長劍刺向小麻雀 看起來好像讓 +9 出現也不錯?當然這與各家 mud 風格有關且因人而 異。 其它的話問題就小一點,如果希望到處都能帶 +9,那麼在載入時就做 處理是比較好的: foreach(str in keys(obj_data[files])) { ob->set(str,obj_data[files][str]); switch(str) { case "refine_lv": lv=obj_data[files][str]; if(lv>0) { shorts=ob->query("short"); ob->set("short",sprintf(HIG"+%d"NOR"%-s",lv,shorts)); . . 這樣它就到處帶 +9 時,那萬一玩家將 +9 精鍊成 +10 呢,也很簡單 因為它格式是固定的: shorts=ob->query("short"); lv=ob->query("refine_lv"); shorts=replace_string(shorts,"+"+lv,"+"+(lv+1)); 因為 +n 這個東西在物品的 short 只會出現在精鍊識別名稱區塊,平 常不可能有精鍊值為 0 的物品,其名稱會帶 +n 的,就容易做名稱上 的取代。 有時間再打點別的回在下篇。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud/M.1590030949.A.FC2.html ※ 編輯: laechan (114.33.66.104 臺灣), 05/21/2020 11:16:04 ※ 編輯: laechan (114.33.66.104 臺灣), 05/21/2020 11:18:58
1F:→ laechan : 適合目前聖殿的做法,比方精鍊100%確保相關物品的部 05/21 11:27
2F:→ laechan : 份,可使用挪布幣在挪布幣商店購買相關物品來達到 05/21 11:27
3F:→ laechan : 精鍊亦可達到回收影特幣的目的,但因為聖殿可穿戴防 05/21 11:28
4F:→ laechan : 具數很多,初期大概只先開放武器的部份 05/21 11:28
5F:→ laechan : 精鍊值達一定程度: 連擊數可增加,縮短大絕cd時間,.. 05/21 11:29
6F:→ laechan : 都是可做的變化 05/21 11:29







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP