实战游戏宠物,坐骑获取经验升级算法----lua脚本
项目需求:坐骑获取一定的经验值,计算在原有的经验和等级的基础上,获取经验后可以达到的等级,以及当前的经验。输出剩余经验池经验,使用的经验
表格:expTable 升级经验表
表格结构:expTable={[lv]={exp = xxx,lv=x}}
expTable={ [1] = {exp = 1632,lv=1,}, [2] = {exp = 2448,lv=2,}, [3] = {exp = 3264,lv=3,}, [4] = {exp = 4080,lv=4,}, [5] = {exp = 4896,lv=5,}, [6] = {exp = 5712,lv=6,}, [7] = {exp = 6528,lv=7,}, [8] = {exp = 7344,lv=8,}, [9] = {exp = 8160,lv=9,}, } local nHasExp = 10000 -- 当前获取的经验(经验池) local nTotalExp = 1000 --当前拥有的经验 local nLestExp = nHasExp --剩余拥有的经验(经验池) local nCanUse = 0 --最终有效可使用经验 local nLv = 1 --当前等级 if nLv >= #expTable then --已经是最大等级不需要升级了 return end nLestExp = nTotalExp + nHasExp - expTable[nLv].exp if nLestExp >= 0 then --要增加的经验与当前经验相加满足升级经验--至少可以升一级 while(nLestExp >= 0) do local nCnt = expTable[nLv].exp - nTotalExp if nCnt < 0 then nCnt = expTable[nLv].exp end nCanUse = nCanUse + nCnt if nLv >= #expTable then --升级到最大等级了 break end nLv = nLv + 1 nTotalExp = nLestExp --更新剩余经验池经验 nLestExp = nTotalExp - expTable[nLv].exp if nLestExp < 0 then nCanUse = nCanUse + nTotalExp end end else nTotalExp = nTotalExp + nHasExp --更新当前拥有经验 nCanUse = nCanUse + nHasExp --可以被使用的经验 end print("nHasExp,nTotalExp,nLestExp,nCanUse,nLv ",nHasExp,nTotalExp,(nHasExp-nCanUse),nCanUse,nLv)
输出结果:
nHasExp, nTotalExp , nLestExp , nCanUse , nLv 10000 3656 0 10000 4
留言评论
暂无留言