442 lines
15 KiB
Lua
Executable File
442 lines
15 KiB
Lua
Executable File
module("ActivityQQHall", package.seeall)
|
||
|
||
--[[
|
||
|
||
QQ大厅特权
|
||
|
||
个人数据:qqHallData
|
||
{
|
||
activeGift = 0/1 是否领取活跃礼包(0否,1是)
|
||
registerGift = 0/1 是否领取注册礼包(0否,1是)
|
||
lastLoginTime = 0 上一次通过YY大厅登录的时间戳
|
||
loginDay = 1 通过YY大厅登录的累计天数
|
||
levelGift = 00000000 32位 是否领取某天的登录礼包
|
||
|
||
--蓝钻
|
||
newPlayerGift //新手礼包
|
||
growupgift //成长礼包
|
||
dailyGift //每日礼包
|
||
blueDimandGift //蓝钻等级
|
||
BlueLv //蓝钻等级
|
||
Blue //蓝钻
|
||
BlueYear //年费
|
||
}
|
||
]]--
|
||
PlatformConfig = PlatformQQConfig
|
||
LoginConfig = LoginQQConfig
|
||
|
||
local PfId = System.getPfId()
|
||
--对应的活动配置
|
||
function getQQHallData(pActor)
|
||
local var = Actor.getStaticVar(pActor)
|
||
if var.qqHallData== nil then
|
||
var.qqHallData = {}
|
||
end
|
||
return var.qqHallData
|
||
end
|
||
|
||
function SendQQHallData(pActor)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] SendQQHallData ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
local npack = DataPack.allocPacket(pActor, enPlatforMwelfareID, sGetQQhallInfos)
|
||
if npack then
|
||
-- print("1111")
|
||
local data = getQQHallData(pActor)
|
||
DataPack.writeByte(npack, (data.activeGift or 0)) --是否领取活跃礼包(0否,1是)
|
||
DataPack.writeByte(npack, (data.registerGift or 0)) --是否领取认证礼包(0否,1是)
|
||
DataPack.writeUInt(npack, (data.levelGift or 0))--礼包的领取标记 32 位
|
||
DataPack.flush(npack)
|
||
end
|
||
end
|
||
|
||
|
||
--------------------------------------------------------------------
|
||
-- CPP回调
|
||
--------------------------------------------------------------------
|
||
|
||
function OnQQHallLogin(pActor)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnQQHallLogin ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
-- 当天初始化
|
||
local data = getQQHallData(pActor)
|
||
if data.lastLoginTime == nil then
|
||
data.lastLoginTime = System.getCurrMiniTime()
|
||
--print("第一天")
|
||
end
|
||
-- print("1111")
|
||
SendQQHallData(pActor);
|
||
end
|
||
|
||
--------------------------------------------------------------------
|
||
-- 客户端请求协议回调
|
||
-------------------------------------------------------------------
|
||
--登录
|
||
function OnReqQQHallLevelGift(pActor, packet)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnReqQQHallLevelGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local idx = DataPack.readByte(packet)
|
||
if idx > #LoginConfig then
|
||
return
|
||
end
|
||
local conf = PlatformConfig
|
||
local Cfg = LoginQQConfig[idx]
|
||
idx = idx - 1
|
||
local data = getQQHallData(pActor)
|
||
if Cfg then
|
||
-- 领取检查data.levelGift
|
||
if not data.levelGift then
|
||
data.levelGift = 0
|
||
end
|
||
local flag = System.getIntBit(data.levelGift, idx)
|
||
--print("loginGift="..data.levelGift.." flag="..flag)
|
||
if flag == 1 then
|
||
return
|
||
end
|
||
local lv = Actor.getIntProperty( pActor, PROP_CREATURE_LEVEL )
|
||
|
||
if Cfg.level and ( lv < Cfg.level ) then
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:等级不足|", tstUI)
|
||
return
|
||
end
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
-- 天数检查
|
||
data.levelGift = System.setIntBit(data.levelGift, idx, true)
|
||
CommonFunc.Awards.Give(pActor, Cfg.reward, GameLog.Log_QQhallLevel)
|
||
SendQQHallData(pActor)
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
end
|
||
end
|
||
|
||
--注册
|
||
function OnReqQQHallRegisteGift(pActor, packet)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnReqQQHallRegisteGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local data = getQQHallData(pActor)
|
||
if data.registerGift then
|
||
return
|
||
end
|
||
local conf = PlatformConfig
|
||
local awards = conf.reward1
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
CommonFunc.Awards.Give(pActor, awards, GameLog.Log_QQhallRegiste)
|
||
data.registerGift = 1;
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
SendQQHallData(pActor)
|
||
end
|
||
--认证
|
||
function OnReqQQHallIdActiveGift(pActor, packet)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnReqQQHallIdActiveGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local conf = PlatformConfig
|
||
local awards = conf.reward2
|
||
local data = getQQHallData(pActor)
|
||
if data.activeGift == 1 then
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:重复领取|", tstUI)
|
||
return
|
||
end
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
CommonFunc.Awards.Give(pActor, awards, GameLog.Log_QQhallActive)
|
||
data.activeGift = 1;
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
SendQQHallData(pActor)
|
||
end
|
||
|
||
|
||
|
||
|
||
NetmsgDispatcher.Reg(enPlatforMwelfareID, cGetQQHallInfos, OnQQHallLogin)
|
||
NetmsgDispatcher.Reg(enPlatforMwelfareID, cGetQQqHallLevelAward, OnReqQQHallLevelGift)
|
||
NetmsgDispatcher.Reg(enPlatforMwelfareID, cGetQQHallRegisteAward, OnReqQQHallRegisteGift)
|
||
NetmsgDispatcher.Reg(enPlatforMwelfareID, cGetQQqHallActiveAward, OnReqQQHallIdActiveGift)
|
||
--------------------------------------------------------------------
|
||
-- 玩家 回调注册
|
||
--------------------------------------------------------------------
|
||
|
||
-- 跨天
|
||
function OnNewDayArrive(pActor,ndiffday)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnNewDayArrive ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-001--")
|
||
local currMiniTime = System.getCurrMiniTime()
|
||
local data = getQQHallData(pActor)
|
||
--print("[ActivityTypeQQHall:OnNewDayArrive-101--".. tostring(data.lastLoginTime))
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-123--".. tostring(data.dailyGift))
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-111--".. tostring(data.activeGift))
|
||
--if data.lastLoginTime then
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-002--")
|
||
if not System.isSameDay(data.lastLoginTime, System.getCurrMiniTime()) then
|
||
data.lastLoginTime = System.getCurrMiniTime()
|
||
-- data.loginDay = data.loginDay + 1
|
||
data.activeGift = 0
|
||
data.dailyGift = 0;
|
||
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-9123--".. tostring(data.dailyGift))
|
||
print("[ActivityTypeQQHall:OnNewDayArrive-9111--".. tostring(data.activeGift))
|
||
end
|
||
|
||
SendQQHallData(pActor)
|
||
--end
|
||
end
|
||
|
||
ActorEventDispatcher.Reg(aeNewDayArrive, OnNewDayArrive, "ActivityQQHall.lua")
|
||
|
||
|
||
-----------
|
||
--蓝钻
|
||
-----------
|
||
function OnSetQQBlueDiamond(pActor, packet)
|
||
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] OnSetQQBlueDiamond ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local data = getQQHallData(pActor)
|
||
local nBlue =DataPack.readByte(packet);
|
||
local nBlueYear =DataPack.readByte(packet);
|
||
local nBluelv =DataPack.readByte(packet);
|
||
local nVip = 0;
|
||
nVip = System.getValueMAKELONG(nBluelv, nBlueYear, nBlue);
|
||
data.Blue = nBlue;
|
||
data.BlueLv = nBluelv;
|
||
data.BlueYear = nBlueYear;
|
||
Actor.setUIntProperty(pActor,PROP_ACTOR_SUPPER_PLAY_LVL,nVip)
|
||
end
|
||
|
||
|
||
function SendQQBlueDiamondData(pActor)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] SendQQBlueDiamondData ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local npack = DataPack.allocPacket(pActor, enMiscSystemID, sGetQQBlueDiamond)
|
||
if npack then
|
||
local data = getQQHallData(pActor)
|
||
DataPack.writeByte(npack, (data.newPlayerGift or 0)) --
|
||
DataPack.writeUInt(npack, (data.growupgift or 0)) --
|
||
DataPack.writeUInt(npack, (data.dailyGift or 0))--
|
||
DataPack.writeUInt(npack, (data.blueDimandGift or 0))--
|
||
DataPack.flush(npack)
|
||
end
|
||
end
|
||
|
||
|
||
function GetQQBlueDiamonGift(pActor, packet)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] GetQQBlueDiamonGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local type = DataPack.readByte(packet)
|
||
local idx = DataPack.readByte(packet)
|
||
if type == 1 then --新手礼包
|
||
GetQQBlueNewPlayerGift(pActor, idx)
|
||
elseif type == 2 then --成长礼包
|
||
GetQQBlueGrowUpGift(pActor, idx)
|
||
elseif type == 3 then --每日礼包
|
||
GetQQblueDailyGift(pActor, idx)
|
||
elseif type == 4 then --蓝砖战神
|
||
GetQQBlueFightGift(pActor, idx)
|
||
end
|
||
end
|
||
|
||
function GetQQBlueNewPlayerGift(pActor, idx)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] GetQQBlueNewPlayerGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
|
||
local conf = PlatformConfig
|
||
local awards = conf.reward3
|
||
local data = getQQHallData(pActor)
|
||
if data.newPlayerGift then
|
||
return
|
||
end
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
CommonFunc.Awards.Give(pActor, awards, GameLog.Log_QQBlueNewPlayer)
|
||
data.newPlayerGift = 1;
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
SendQQBlueDiamondData(pActor)
|
||
end
|
||
|
||
function GetQQBlueGrowUpGift(pActor, idx)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] GetQQBlueGrowUpGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
|
||
if idx > #LoginConfig then
|
||
return
|
||
end
|
||
local conf = PlatformConfig
|
||
local Cfg = LevelBlueDiamondConfig[idx]
|
||
idx = idx - 1
|
||
local data = getQQHallData(pActor)
|
||
if Cfg then
|
||
-- 领取检查data.levelGift
|
||
if not data.growupgift then
|
||
data.growupgift = 0
|
||
end
|
||
local flag = System.getIntBit(data.growupgift, idx)
|
||
--print("loginGift="..data.levelGift.." flag="..flag)
|
||
if flag == 1 then
|
||
return
|
||
end
|
||
local lv = Actor.getIntProperty( pActor, PROP_CREATURE_LEVEL )
|
||
|
||
if Cfg.level and ( lv < Cfg.level ) then
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:等级不足|", tstUI)
|
||
return
|
||
end
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
-- 天数检查
|
||
data.growupgift = System.setIntBit(data.growupgift, idx, true)
|
||
CommonFunc.Awards.Give(pActor, Cfg.reward, GameLog.Log_QQBlueGrowUp)
|
||
SendQQBlueDiamondData(pActor)
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
end
|
||
end
|
||
|
||
function GetQQblueDailyGift(pActor, idx)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil then
|
||
--print("[Tip] [PlatformQQ] GetQQblueDailyGift ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
if tostring(PfId) ~= tostring(PlatformConfig.SPID) then
|
||
|
||
print("[Tip] [PlatformQQ] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local conf = PlatformConfig
|
||
idx = idx - 1
|
||
local data = getQQHallData(pActor)
|
||
if not data.dailyGift then
|
||
data.dailyGift = 0
|
||
end
|
||
local flag = System.getIntBit(data.dailyGift, idx)
|
||
--print("loginGift="..data.levelGift.." flag="..flag)
|
||
if flag == 1 then
|
||
return
|
||
end
|
||
|
||
if data.Blue == nil then
|
||
data.Blue = 0;
|
||
end
|
||
if data.BlueYear == nil then
|
||
data.BlueYear = 0;
|
||
end
|
||
local Cfg = BlueDiamondDailyConfig[data.BlueLv]
|
||
if Cfg then
|
||
local awards = nil;
|
||
if idx == 0 then
|
||
awards = Cfg.reward1
|
||
elseif idx == 1 then
|
||
if data.Blue == 2 then
|
||
awards = Cfg.reward2
|
||
end
|
||
elseif idx == 2 then
|
||
if data.BlueYear == 1 then
|
||
awards = Cfg.reward3
|
||
end
|
||
else
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:不满足条件|", tstUI)
|
||
return
|
||
end
|
||
if awards then
|
||
if CommonFunc.Awards.CheckBagIsEnough(pActor,conf.bagtype,tmLeftBagNumNotEnough,tstUI) ~= true then
|
||
return
|
||
end
|
||
-- 天数检查
|
||
data.dailyGift = System.setIntBit(data.dailyGift, idx, true)
|
||
CommonFunc.Awards.Give(pActor, awards, GameLog.Log_QQBlueGrowUp)
|
||
SendQQBlueDiamondData(pActor)
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
end
|
||
end
|
||
end
|
||
|
||
function GetQQBlueFightGift(pActor, idx)
|
||
end
|
||
|
||
NetmsgDispatcher.Reg(enMiscSystemID, CSetQQBlueDiamond, OnSetQQBlueDiamond)
|
||
NetmsgDispatcher.Reg(enMiscSystemID, CGetQQBlueDiamond, SendQQBlueDiamondData)
|
||
NetmsgDispatcher.Reg(enMiscSystemID, CGetQQBlueDiamondGift, GetQQBlueDiamonGift) |