[公會] adv lv 用到的程式段

看板mud_sanc (Sanctuary - 聖殿)作者 (打死不投馬冏,李系咩安抓)時間18年前 (2007/07/13 12:04), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串1/1
adv lv 的關鍵程式碼部份如下... mixed skill_check(object user,object guild) { mixed names; string gname; int i,j,lv,max_lv,tot_have,tot_need,max; gname=guild->query("guild"); // slasher lv=user->query("guild/"+gname); // 玩家的 slasher 級數 max_lv=RANK_D->query_max_lv(gname); // slasher 最大工會級數: 25 names=keys(get_table(gname)); // 讀出該公會技能表存成陣列 for(i=0,j=sizeof(names);i<j;i++) { tot_need=user->query("skill/"+names[i]); // 玩家 slasher 某技能的技能值 if(tot_need>0) tot_have+=tot_need; // 做玩家身上所學 slasher 公會技能的累加 max+=max_skill(lv,(mixed)get_skinfo(gname,names[i])); // 同時做 slasher 公會各技能在公會技能表的上限值的累加 } // 簡單的說假設該公會只有 sword, swordmaster, swordray 三個技能 // tot_have 就是玩家有學這三個技能的話, 技能值總和 // max 就是設定在公會裡面這三個技能的最大值, 假設是 600/600/600 // 那 max 就是 1800 tot_need=max*(50+max_lv*lv/(1+max_lv))/100; // 然後 tot_need = 最大級數 x (50+最大級數x現有級數/(1+最大級數))/100 // = 至少技能要練滿 (50+某值)% 的意思 // 這個某值比方劍士練了 10 級, 10/25 = 40/100, 就是說 10 級的劍士要升 // 11 級, 需練滿劍士公會 50+40 = 90% 的技能 return ({tot_have,tot_need,max}); } // 升公會級數時的一般性判別 int general_limit(object user,object guild) { mixed tmp; string gname; int tot_have,tot_need,max,t,lv; tmp=skill_check(user,guild); // tmp = ({tot_have, tot_need, max}) gname=guild->query("guild"); tot_have=tmp[0]; tot_need=tmp[1]; max=tmp[2]; // 升公會級數時是否有將公會技能鍛練到一定程度的判別 if(tot_have<tot_need) { write(HIC"你的所有"+HIY+to_chinese(gname)+"公會技能"HIC"只學了"+ tot_have*100/max+"%,至少要學滿"+(1+tot_need*100/max)+ "%才能升公會級數歐!\n"NOR); return 1; } return 0; // 代表通過檢查 } hlead 你可自行檢查一下。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.221.223

07/13 13:07, , 1F
會不會是氣劍指的影響啊? swordray
07/13 13:07, 1F

07/13 13:12, , 2F
if(tot_have<tot_need) <--這個比得很怪就是了= =
07/13 13:12, 2F

07/13 13:34, , 3F
(1+tot_need*100/max)這行不是寫tot_need就了嗎?
07/13 13:34, 3F
文章代碼(AID): #16bldOjJ (mud_sanc)
文章代碼(AID): #16bldOjJ (mud_sanc)