--翅膀系统 --#include "data\config\AlmirahSystem\WingCfg.txt" once --#include "data\functions\Common\CommonMisc.txt" once --直接下一级的概率获取 function getNextWingRand(nLv, nLuck) local cfg = WingCfg.directLv[nLv] if(cfg == nil or type(nLuck) ~= 'number')then print("getNextWingRand", cfg, nLuck) return 0 end for k,v in pairs(cfg)do if( nLuck <= v[1] )then return v[2] end end return 0 end --直接本次提升增加的幸运值 function getLuckWingRand(nLv) local cfg = WingCfg.level[nLv] if(cfg == nil or cfg.LuckRand == nil)then print("getLuckWingRand", nLv) return 0 end local nMinRand = cfg.LuckRand[1] local nMaxRand = cfg.LuckRand[2] - nMinRand local randNum = System.getRandomNumber(nMaxRand) + nMinRand return randNum, cfg.LuckValue end --先检查够不够 function ItemWingLogicCheck(sysarg, consumes) --消耗检查 for k,v in pairs(consumes) do local bCheck = Actor.checkConsume(sysarg, v.type, v.id, v.count, v.quality or 0, v.strong or 0, -1 , 0) if bCheck ~= true then Actor.sendAwardNotEnough(sysarg, v.type, v.id, v.count) return false end end return true end --翅膀吞噬 function WingDevour(sysarg, ...) local nModelId = arg[1] local btType = arg[2] --元宝替代 --BaseFuc_Print("Enter WingDevour",nModelId) if(Actor.getActivation(sysarg, nModelId) == true)then return Actor.sendTipmsg(sysarg,OldLang.Script.WingActivation02,ttFlyTip) end local logId = 180 local logStr = OldLang.Log.LogWingActivation local nLv = Actor.getIntProperty( sysarg, PROP_ACTOR_WING_LV ) + 1 if(nLv < 1 or #WingCfg.consumes < nLv)then --等级条件检测 return BaseFuc_Print(#WingCfg.consumes,nLv) end local consumes = WingCfg.consumes[nLv] local nPrice = WingCfg.level[nLv].Yb local consumesList = {} for k,v in pairs(consumes)do local csm = {type = v.type, id = v.id, count = v.count, quality = qualitytem, strong = v.strong, bind = v.bind} if(v.type == 0)then --道具 if(btType == 1)then --元宝替代 local myCount = Actor.getItemCount(sysarg, v.id) if(myCount < v.count )then local money = {type = 10, id = 0, count = (v.count-myCount)*nPrice , quality = 0, strong = 0, bind = -1} csm.count = myCount table.insert(consumesList,money) end end table.insert(consumesList,csm) else table.insert(consumesList,csm) end end if(SubBatchItemByType(sysarg, consumesList, logId, logStr) ~= true)then return print("btType",btType) end --[[ if ItemWingLogicCheck(sysarg, consumesList)~= true then return print("ItemWingLogicCheck") end if CommonFunc.Consumes.Remove(sysarg, consumesList, logId,logStr) ~= true then return print("Remove") end ]] local nLuckPoint = Actor.getIntProperty( sysarg, PROP_ACTOR_WINGPOINT ) local nRand = getNextWingRand(nLv, nLuckPoint) local randNum = System.getRandomNumber(WingCfg.nMaxRand)+1 local bLevel = false if(randNum <= nRand )then --随机升级 bLevel = true end local nAddLuck,LuckValue = getLuckWingRand(nLv) nLuckPoint = nLuckPoint + nAddLuck if(LuckValue <= nLuckPoint)then --最大幸运值升级 bLevel = true end --BaseFuc_Print("nLuckPoint,LuckValue",nLuckPoint,LuckValue) if(bLevel == true)then Actor.setUIntProperty(sysarg, PROP_ACTOR_WING_LV, nLv) WingActivation(sysarg, nModelId) Actor.setUIntProperty(sysarg, PROP_ACTOR_WINGPOINT, 0) WingDayMatch(sysarg,nLv) --每日竞技,进阶翅膀 else Actor.setUIntProperty(sysarg, PROP_ACTOR_WINGPOINT, nLuckPoint) end Actor.collectOperate(sysarg,0) --刷新属性 --OnOpenServerActWingAct(sysarg, nLv) --开服活动激活翅膀 --BaseFuc_Print("nLv",nLv) end --获得当前等级配置和进度百分比 function getWingCfgAndPercent(nLevel) local cfg,percent for i,curCfg in ipairs(WingCfg.level) do if curCfg.WingLevel > nLevel then cfg = curCfg local preWingLevel = 0 local preWcfg = WingCfg.level[i-1] if preWcfg then preWingLevel = preWcfg.WingLevel end percent = math.floor(100/(curCfg.WingLevel - preWingLevel))* (nLevel - preWingLevel) break end end return cfg,percent end --激活翅膀 function WingActivation(sysarg, nModelId) --BaseFuc_Print("Enter WingActivation") if(Actor.getActivation(sysarg, nModelId) == true)then return Actor.sendTipmsg(sysarg,OldLang.Script.WingActivation02,ttFlyTip) end local cfg = WingCfg.level[nModelId] if(cfg == nil)then return end local strNotice = cfg.strNotice Actor.setActivation(sysarg,nModelId) if(strNotice)then local sNotice = string.format(strNotice,Actor.getName(sysarg)) System.broadcastTipmsg(sNotice, ttScreenCenter + ttChatWindow) end --BaseFuc_Print("Sucess") end function ClearActorWingDailyData(sysarg) local nLv = Actor.getIntProperty( sysarg, PROP_ACTOR_WING_LV ) + 1 if(WingCfg.ClearLv <= nLv)then Actor.setUIntProperty(sysarg, PROP_ACTOR_WINGPOINT, 0) end end -- @DebugLua 1001 1 1 function GMTestWing(sysarg,arg1,arg2) --BaseFuc_Print(arg1,arg2) if(arg1 == 0)then --GM 激活一个翅膀 Actor.setActivation(sysarg,arg2) end if(arg1 == 1)then --GM 升级一个翅膀 WingDevour(sysarg,arg2, 1) end end