Re: [閒聊] 關於武防精鍊的做法評估
看板mud_sanc (Sanctuary - 聖殿)作者laechan (揮淚斬馬雲)時間5年前 (2020/06/15 09:15)推噓0(0推 0噓 4→)留言4則, 1人參與討論串2/2 (看更多)
最近想到了一個不錯的做法,log 一下。
前篇提到比方武器以後會新增一個 sdata 的儲存欄位 refine_lv,
則當玩家 login、或者玩家自天空城之家倉庫取出該武器時,目前
會做以下動作:
// 讀取所儲存的所有資料的 key 值
tmps=keys(data[target_savebox][res-1][2]);
// 將這些 key 值對映的 value set 進去
foreach(str1 in tmps)
ob->set(str1,data[target_savebox][res-1][2][str1]);
假設我們不讓它儲存「精鍊後武器屬性的變化值」,而是只在物品
載入時才讓屬性變化的話,上面加上以下程式段
// 當 effect_stat 不屬於儲存屬性時
if(member_array("effect_stat",tmps)==-1)
{
// 讀取該物品的精練值
v=ob->query("refine_lv");
// 變更該物品的名字為 +nXXX
if(v>0 && member_array("short",tmps)==-1)
{
str1=ob->query("short");
ob->set("short",sprintf(HIG"+%d"NOR"%-s"NOR,v,str);
}
// 比方精鍊值每+1,屬性+5
v=v*5;
tmps=keys((mapping)ob->query("effect_stat"));
foreach(str1 in tmps)
ob->add("effect_stat/"+str1,v);
}
這樣該物品在載入後不管是 view 或 wear/remove 都會看到
1.該精鍊物品是 +幾
2.該精鍊物品 +幾 後的新屬性值
而且只 save refine_lv 一個欄位,最大好處就是精鍊影響屬性
的公式(比方上面是每精鍊 1,屬性 +3)可以隨時調整。
它的缺點,則是不能遺漏現今任何一種武防具儲存方式,以免玩
家將該武防具扔進去儲存後,再取出時會有屬性沒加到的情況,
不過這種算輕微的好處理,因為至少 refine_lv 有被儲存。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1592183730.A.634.html
→
06/15 09:16,
5年前
, 1F
06/15 09:16, 1F
→
06/15 09:16,
5年前
, 2F
06/15 09:16, 2F
→
06/23 06:54,
5年前
, 3F
06/23 06:54, 3F
→
06/23 06:55,
5年前
, 4F
06/23 06:55, 4F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
mud_sanc 近期熱門文章
2
2
PTT遊戲區 即時熱門文章
29
58
62
80
66
129