作者laechan (挥泪斩马云)
看板mud_sanc
标题Re: [闲聊] 关於武防精链的做法评估
时间Mon Jun 15 09:15:27 2020
最近想到了一个不错的做法,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://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1592183730.A.634.html
1F:→ laechan : 程式段应该会再微调,目前已知玩家login、以及玩家在 06/15 09:16
2F:→ laechan : 天空城之家做 take 时会有动到 sdata 的情况 06/15 09:16
3F:→ laechan : 这个东西预计写成simul_efun让几个地方去呼叫 06/23 06:54
4F:→ laechan : 可能会使用 questing 因为这样比较能回传较多东西 06/23 06:55