作者laechan (小太保)
看板mud_sanc
标题[wizs] 经验值改 % 事前准备
时间Sat Aug 20 20:01:04 2011
一、修正 add_exp 函数, 新增 "pexp" 栏位用来代表目前已经
赚了几 %。120级、99%、经验值已达上限时不再进%
int add_exp(int exp)
{
int a,b=(int)data["pexp"],c=data["level"];
a=(int)data["exp"];
if(b==99 && a==50000000) return 1;
if(!interactive(me)) return 1;
a=a+exp;
if(c==120 && b==99 && a>50000000)
a=50000000;
data["exp"]=a;
if( c < 120)
{
if( data["exp"] > data["lv_up_exp"] && b<100)
{
b=b+1; // %+1
a=a-(int)data["lv_up_exp"];
data["exp"]=a;
if(b>=100) // %数达到 100时升级, pexp 归零
{
USER_D->level_up(me);
data["pexp"]=0;
}
else
data["pexp"]=b;
}
}
return 1;
}
二、修改经验值显示
在 /std/user/living.c 加一个函数来 return pexp
这个函数我已经加了,norr 你可以参考。
然後让一些显示经验值的指令呼叫这个函数来做数值部份
的显示即可。
三、会消耗经验值的设定
一律最低改成至少消耗 1%。
这样就很简单了,例如换水晶改成要用 1% 的经验值去消耗
原本: if(ppl->query("exp")>n)
ppl->add_exp(-n);
改成: if(ppl->query("pexp")>0)
ppl->add("pexp",-1); // 扣 1%
相同的,我记得公会的 adv lv 好像也是用经验值? 这时就
可做底下的设定: 每升一个公会级数,需消耗 1% 经验值,
如此一来「先把等级练高然後才去 adv lv 就会比较不利」
的设定就会自己突显出来。
目前已知: 换水晶、公会 adv lv、pr?
(其中 pr 或许该换成别种消耗,或者乾脆就不要消耗)
四、所以重点就是 /adm/daemons/laechan.h 的重新订定,
比方 Lv119->Lv120 原本需要 1000 万经验值,之後就会变
成 新的值x100,比方新的值「仍是 1000 万」,那实际升级
需要的经验值就会变成 1000万x100 = 10亿。
(我个人是觉得 1~5 亿大概都可以)
然後改之前也有必要 grep -n exp *.c 一下,在一些关键
目录如 /adm 及 /std 确定一下修改范围。
我改的话大概 2 小时,包含确认没问题。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 122.117.3.82 (08/20 20:08)