[wizs] 經驗值改 % 事前準備
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間14年前 (2011/08/20 20:01)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1/2 (看更多)
一、修正 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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
10
16