[wizs] 經驗值改 % 事前準備

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/08/20 20:01), 編輯推噓0(000)
留言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)
文章代碼(AID): #1EJw85lh (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1EJw85lh (mud_sanc)