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) |