183 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
| -- module("ActivityLuckyTree", package.seeall)
 | ||
| math.randomseed(System.getCurrMiniTime())
 | ||
| --[[
 | ||
|    
 | ||
|     摇钱树
 | ||
|     
 | ||
|     个人数据:treedata
 | ||
|     {
 | ||
|         dailyTimes --每日要钱次数 
 | ||
|         lastLoginTime --登录时间
 | ||
|         nowVip --当前vip
 | ||
|     }
 | ||
| ]]--
 | ||
| TreeConstConfig = MoneytreeconstConfig
 | ||
| MoneytreeRewardConfig = MoneytreeRewardConfig
 | ||
| --对应的活动配置
 | ||
| function getLuckyTreeData(pActor)
 | ||
|     local var = Actor.getStaticVar(pActor)
 | ||
|     if var.treeData== nil then
 | ||
|         var.treeData = {}
 | ||
|     end
 | ||
|     return var.treeData
 | ||
| end
 | ||
| 
 | ||
| function SendLuckyTreeData(pActor)
 | ||
|     local npack = DataPack.allocPacket(pActor, enMiscSystemID, sLuckyTree)
 | ||
|     if npack then
 | ||
|         local data = getLuckyTreeData(pActor)
 | ||
|         DataPack.writeUInt(npack, (data.dailyTimes or 0))--礼包的领取标记 32 位
 | ||
|         DataPack.flush(npack)
 | ||
|     end
 | ||
| end
 | ||
| 
 | ||
| --------------------------------------------------------------------
 | ||
| -- 客户端请求协议回调
 | ||
| -------------------------------------------------------------------
 | ||
| function OnLuckyTreeLogin(pActor) 
 | ||
|     --print("[ActivityLuckyTree:OnLuckyTreeLogin-----------1------------874--------------------2213----------------23------------ ")
 | ||
|     local data = getLuckyTreeData(pActor);
 | ||
|     if data.lastLoginTime == nil then
 | ||
|         data.lastLoginTime = System.getCurrMiniTime()
 | ||
|         if TreeConstConfig and TreeConstConfig.times then
 | ||
|             local vip = Actor.GetMaxColorCardLevel(pActor);
 | ||
|             data.dailyTimes = TreeConstConfig.times[vip+1];
 | ||
|             data.nowVip = vip+1;
 | ||
|         end
 | ||
|         
 | ||
|         --print("第一天")
 | ||
|     end
 | ||
|     SendLuckyTreeData(pActor);
 | ||
| end
 | ||
| 
 | ||
| function getMoneyTreeAward()
 | ||
|     local openDay = System.getDaysSinceOpenServer()
 | ||
|     local awardCfgs = {};
 | ||
|     local nMinDay = 0;
 | ||
|     if MoneytreeRewardConfig == nil then
 | ||
|         return nil
 | ||
|     end
 | ||
|     for _, awardCfg in pairs(MoneytreeRewardConfig) do
 | ||
|         if awardCfg.Opendaylimit <= openDay and awardCfg.Opendaylimit > nMinDay then
 | ||
|             nMinDay = awardCfg.Opendaylimit
 | ||
|         end
 | ||
|     end
 | ||
| 
 | ||
|     local nMaxRand = 0;
 | ||
|     for _, awardCfg in pairs(MoneytreeRewardConfig) do
 | ||
|         if awardCfg.Opendaylimit == nMinDay then
 | ||
|             nMaxRand = nMaxRand + awardCfg.rate;
 | ||
|             table.insert(awardCfgs, awardCfg)
 | ||
|         end
 | ||
|     end
 | ||
| 
 | ||
|     local value = math.random(nMaxRand);
 | ||
|     local nRandValue = 0;
 | ||
|     for _, cfg in pairs(awardCfgs) do
 | ||
|         nRandValue = nRandValue + cfg.rate 
 | ||
|         if value <= nRandValue then
 | ||
|             return cfg
 | ||
|         end
 | ||
|     end
 | ||
|     return nil
 | ||
| end
 | ||
| 
 | ||
| function OnRockLuckyTree(pActor, packet)
 | ||
|     --print("[ActivityLuckyTree:OnRockLuckyTree----------3253------------23274--------------------123213---------------123------------ ")
 | ||
|     local data = getLuckyTreeData(pActor)
 | ||
|     if data == nil then
 | ||
|         return
 | ||
|     end
 | ||
|     if (not data.dailyTimes) or (data.dailyTimes <= 0) then
 | ||
|         -- Actor.sendTipmsgWithId(pActor, tmMoneyTreeNoTimes, tstUI);
 | ||
|         return;
 | ||
|     end
 | ||
| 
 | ||
|     if TreeConstConfig.limit then
 | ||
|         if Actor.checkCommonLimit(pActor,
 | ||
|                                 (TreeConstConfig.limit.level or 0), 
 | ||
|                                 (TreeConstConfig.limit.zsLevel or 0),
 | ||
|                                 (TreeConstConfig.limit.vip or 0), 
 | ||
|                                 (TreeConstConfig.limit.office or 0) ) == false then
 | ||
| 
 | ||
|             return;
 | ||
|         end
 | ||
|     end
 | ||
|     local costYb = 0;
 | ||
|     if CommonFunc.Consumes.CheckActorSources(pActor, TreeConstConfig.cost1, 0) ~= true then
 | ||
|         --print("[ActivityLuckyTree:return--------&&&&&&&&&&&&&&&&&----------- costYb:"..tostring(costYb))
 | ||
|         if CommonFunc.Consumes.CheckActorSources(pActor, TreeConstConfig.cost2, tstUI) ~= true then
 | ||
|             return;
 | ||
|         end
 | ||
|         costYb = 1;
 | ||
|     end 
 | ||
|     --print("[ActivityLuckyTree:return--------&&&&&&&&&&&&&&&&&1111-------------------- costYb:"..tostring(costYb))
 | ||
|     --return;
 | ||
|     -- if CommonFunc.Awards.CheckBagIsEnough(pActor,8,tmLeftBagNumNotEnough,tstUI) ~= true then
 | ||
|     --     print("4444")
 | ||
|     --     return
 | ||
|     -- end
 | ||
|     
 | ||
|     if costYb == 1 then
 | ||
|         CommonFunc.Consumes.Remove(pActor, TreeConstConfig.cost2, GameLog.Log_MoneyTree, "摇钱树")
 | ||
|     else
 | ||
|         CommonFunc.Consumes.Remove(pActor, TreeConstConfig.cost1, GameLog.Log_MoneyTree, "摇钱树")
 | ||
|     end
 | ||
|     local AwardCfg = getMoneyTreeAward();
 | ||
|     if AwardCfg then
 | ||
|         if AwardCfg.tips then
 | ||
|             local name = Actor.getName(pActor);
 | ||
|             System.broadTipmsgWithParams(AwardCfg.tips ,tstKillDrop, name)
 | ||
|             System.broadTipmsgWithParams(AwardCfg.tips ,tstChatSystem, name)
 | ||
|         end
 | ||
|         CommonFunc.Awards.Give(pActor, AwardCfg.reward, GameLog.Log_MoneyTree)
 | ||
|         if AwardCfg.Uitips then
 | ||
|             Actor.sendTipmsg(pActor, AwardCfg.Uitips, tstUI);
 | ||
|         end
 | ||
|         
 | ||
|     end
 | ||
|     data.dailyTimes = data.dailyTimes - 1;
 | ||
|     SendLuckyTreeData(pActor)
 | ||
| end
 | ||
| 
 | ||
| 
 | ||
| function UpdateTreeTimes(pActor)
 | ||
|     local currMiniTime = System.getCurrMiniTime()
 | ||
|     local data = getLuckyTreeData(pActor)
 | ||
|     local vip = Actor.GetMaxColorCardLevel(pActor);
 | ||
|     local times = TreeConstConfig.times[vip+1];
 | ||
|     if data.nowVip then
 | ||
|         times = times - (TreeConstConfig.times[data.nowVip] or 0)
 | ||
|     end
 | ||
|     data.dailyTimes = (data.dailyTimes or 0) + times;
 | ||
|     data.nowVip = vip+1
 | ||
| 
 | ||
|     SendLuckyTreeData(pActor)
 | ||
| end
 | ||
| --------------------------------------------------------------------
 | ||
| -- 玩家 回调注册
 | ||
| --------------------------------------------------------------------
 | ||
| -- 跨天
 | ||
| function OnNewDayArrive(pActor,ndiffday)
 | ||
|     local currMiniTime = System.getCurrMiniTime()
 | ||
|     local data = getLuckyTreeData(pActor)
 | ||
|     if data.lastLoginTime then
 | ||
|         if not System.isSameDay(data.lastLoginTime, System.getCurrMiniTime()) then
 | ||
|             data.lastLoginTime = System.getCurrMiniTime()
 | ||
|             if TreeConstConfig and TreeConstConfig.times then
 | ||
|                 local vip = Actor.GetMaxColorCardLevel(pActor);
 | ||
|                 data.dailyTimes = TreeConstConfig.times[vip+1];
 | ||
|                 data.nowVip = vip+1
 | ||
|             end
 | ||
|         end
 | ||
| 
 | ||
|         SendLuckyTreeData(pActor)
 | ||
|     end
 | ||
| end
 | ||
| 
 | ||
| 
 | ||
| ActorEventDispatcher.Reg(aeNewDayArrive, OnNewDayArrive, "ActivityLuckyTree.lua")
 | ||
| 
 | ||
| 
 | ||
| NetmsgDispatcher.Reg(enMiscSystemID, cLuckyTree, OnLuckyTreeLogin)
 | ||
| NetmsgDispatcher.Reg(enMiscSystemID, cGetLuckyMoney, OnRockLuckyTree) |