瀏覽代碼

抽奖每日限制相关代码

gitxsm 1 年之前
父節點
當前提交
b18e2d5d73

+ 6 - 1
script/common/ProtoID.lua

@@ -1420,4 +1420,9 @@ _ENV[1463]="GC_REFRESH_ATTR"
 
 _ENV[1466]="CG_MAINTASK_QUERY"
 _ENV[1467]="GC_MAINTASK_QUERY"
-_ENV[1468]="CG_MAINTASK_GETREWARD"
+_ENV[1468]="CG_MAINTASK_GETREWARD"
+
+_ENV[1471]="CG_QUERY_DAY_LOTTERY_TIMES"
+_ENV[1472]="GC_QUERY_DAILYLOTTERYLIMIT"
+_ENV[1473]="CG_QUERY_DAY_ZHUANPAN_TIMES"
+_ENV[1474]="GC_QUERY_DAY_ZHUANPAN_TIMES"

+ 3 - 0
script/core/ObjHuman.lua

@@ -95,6 +95,7 @@ local RoleHeadLogic = require("role.RoleHeadLogic")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 local MainTask = require("dailyTask.MainTask")
+local ClutterDataLogic = require("clutter.ClutterDataLogic")
 
 local Json = require("common.Json")
 
@@ -773,6 +774,7 @@ function onLogin(human, isNew)
 	BuyLogic.onLogin(human)
 	GiftLogic.onLogin(human)
 	MainTask.onLogin(human)
+	ClutterDataLogic.onLogin(human)
 
     HeroLogLogic.finishTaskCB(human,HeroLogLogic.HERO_LOG_TYPE_1,1)
 	-- 红点 检测   需要放在通用的onLogin 后面  保持数据的正确性 再检测红点
@@ -854,6 +856,7 @@ function updateDaily(human, isGm)
 	JjcGodWarLogic.updateDaily(human)
 	RacialTrialLogic.updateDaily(human)
 	OnlineAwardLogic.NewUpdateDaily(human)
+	ClutterDataLogic.updateDaily(human)
 	-- 红点 发送  理论放最后
 	RoleSystemLogic.onLogin(human)
 end

+ 13 - 0
script/module/clutter/ClutterDataDefine.lua

@@ -0,0 +1,13 @@
+--服务器专用杂数据标识
+
+CLUTTER_TYPE1			= 1         -- 普通召唤
+
+CLUTTER_TYPE2			= 2         -- 高级召唤
+
+CLUTTER_TYPE3			= 3         -- 友情召唤
+
+CLUTTER_TYPE4			= 4         -- 天命召唤
+
+CLUTTER_TYPE5			= 5         -- 新英雄抽卡
+
+CLUTTER_TYPE6			= 6         -- 寻星

+ 152 - 0
script/module/clutter/ClutterDataLogic.lua

@@ -0,0 +1,152 @@
+--杂数据处理模块
+
+--db
+--[=[
+    human.db.clutterData = {
+        [type] = value,
+    },
+
+]=]--
+
+
+local Msg = require("core.Msg")
+local Lang  = require("common.Lang")
+local Broadcast = require("broadcast.Broadcast")
+local ClutterDataDefine = require("clutter.ClutterDataDefine")
+
+
+local DAILY_LIMIT_TIMES = 99999 --抽奖和寻星每日最大次数
+
+
+
+local function initAllClutterData(human)
+    human.db.clutterData = {}
+
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE1] = DAILY_LIMIT_TIMES
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE2] = DAILY_LIMIT_TIMES
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE3] = DAILY_LIMIT_TIMES
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE4] = DAILY_LIMIT_TIMES
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE5] = DAILY_LIMIT_TIMES
+    human.db.clutterData[ClutterDataDefine.CLUTTER_TYPE6] = DAILY_LIMIT_TIMES
+end
+
+local function getAllClutterData(human)
+    return human.db.clutterData
+end
+
+--根据类型获取杂数据
+local function getDiffClutterData(human, clutteryType)
+    if not clutteryType then
+        return
+    end
+
+    local clutterData = getAllClutterData(human)
+
+    if not clutterData then
+        return
+    end
+
+    return clutterData[clutteryType]
+end
+
+--更新不同类型的杂数据
+local function updateDiffClutterData(human, clutteryType, newValue, isAdd)
+    if not clutteryType then
+        return
+    end
+
+    local clutterData = getAllClutterData(human)
+
+    if not clutterData then
+        return
+    end
+
+    if isAdd then
+        clutterData[clutteryType] = (clutterData[clutteryType] or 0) + newValue
+    else
+        clutterData[clutteryType] = (clutterData[clutteryType] or 0) - newValue
+    end
+end
+
+
+-- 获取不同类型的抽奖次数
+function GetDiffLotteryTimes(human, clutteryType)
+    return getDiffClutterData(human, clutteryType) or 0
+end
+
+-- 更新不同类型的抽奖次数
+function UpdateDiffLotteryTimes(human, clutteryType, val, type2)
+    updateDiffClutterData(human, clutteryType, val)
+
+    QueryDiffLotteryTimes(human, type2)
+end
+
+
+--寻星次数
+function GetZhuanPanTimes(human)
+    return getDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6) or 0
+end
+
+--更新寻星次数
+function UpdateZhuanPanTimes(human, val)
+    updateDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6, val)
+
+    QueryZhuanPanTimes(human)
+end
+
+--上线
+function onLogin(human)
+    local clutterData = getAllClutterData(human)
+    if not clutterData then
+        initAllClutterData(human)
+    end
+end
+
+
+--跨天
+function updateDaily(human)
+    initAllClutterData(human)
+end
+
+-------------------------------------------Respone----------------------------------
+
+--请求不同类型抽奖次数
+function QueryDiffLotteryTimes(human, lotteryType)
+    if not lotteryType then
+        return Broadcast.sendErr(human, Lang.COMMON_TYPE_ERROR)
+    end
+
+    --临时处理下, 后续再看看怎么把类型对应起来
+    local targetType = lotteryType
+    if lotteryType == 6 then
+    elseif lotteryType == 8 then
+        targetType = ClutterDataDefine.CLUTTER_TYPE5
+    end
+
+
+    local lotteryTimes = getDiffClutterData(human, targetType)
+    if not lotteryTimes then
+        return Broadcast.sendErr(human, Lang.COMMON_TYPE_ERROR)
+    end
+
+    local msgRet = Msg.gc.GC_QUERY_DAILYLOTTERYLIMIT
+    msgRet.lotteryType = lotteryType
+    msgRet.lotteryTimes = math.max(0, lotteryTimes)
+
+    Msg.send(msgRet, human.fd)
+end
+
+
+--请求寻星次数
+function QueryZhuanPanTimes(human)
+    local zhuanpanTimes = getDiffClutterData(human, ClutterDataDefine.CLUTTER_TYPE6) or 0
+
+    if not zhuanpanTimes then
+        return
+    end
+
+    local msgRet = Msg.gc.GC_QUERY_DAY_ZHUANPAN_TIMES
+    msgRet.zhuanpanTimes = math.max(0, zhuanpanTimes)
+
+    Msg.send(msgRet, human.fd)
+end

+ 12 - 0
script/module/clutter/Handler.lua

@@ -0,0 +1,12 @@
+local ClutterDataLogic = require("clutter.ClutterDataLogic")
+
+
+
+function CG_QUERY_DAY_LOTTERY_TIMES(human, msg)
+	ClutterDataLogic.QueryDiffLotteryTimes(human, msg.lotteryType)
+end
+
+
+function CG_QUERY_DAY_ZHUANPAN_TIMES(human, msg)
+	ClutterDataLogic.QueryZhuanPanTimes(human)
+end

+ 23 - 0
script/module/clutter/Proto.lua

@@ -0,0 +1,23 @@
+
+
+--请求杂数据-当日剩余可抽奖次数
+CG_QUERY_DAY_LOTTERY_TIMES = {
+	{"lotteryType",	 1,      "byte"},    -- 抽奖类型
+}
+
+
+GC_QUERY_DAILYLOTTERYLIMIT = {
+	{"lotteryType",	 1,      "byte"},    -- 抽奖类型
+	{"lotteryTimes",	 1,      "int"},    -- 当日剩余抽奖次数
+}
+
+
+
+--请求杂数据-当日剩余寻星次数
+CG_QUERY_DAY_ZHUANPAN_TIMES = {
+}
+
+
+GC_QUERY_DAY_ZHUANPAN_TIMES = {
+	{"zhuanpanTimes",	 1,      "int"},    -- 当日剩余寻星次数
+}

+ 48 - 11
script/module/drawCard/DrawCardLogic.lua

@@ -13,39 +13,39 @@ local Log = require("common.Log")
 local Grid = require("bag.Grid")
 local Broadcast = require("broadcast.Broadcast")
 local Lang = require("common.Lang")
-local CommonDefine = require("common.CommonDefine")
+-- local CommonDefine = require("common.CommonDefine")
 local HeroDefine = require("hero.HeroDefine")
 local ItemDefine = require("bag.ItemDefine")
 local HeroLogic = require("hero.HeroLogic")
 local BagLogic = require("bag.BagLogic")
 local HeroGrid = require("hero.HeroGrid")
 local DrawCardExcel = require("excel.drawCard").drawCard
-local DrawCardActivityExcel = require("excel.drawCard").activity
+-- local DrawCardActivityExcel = require("excel.drawCard").activity
 local DailyTaskLogic = require("dailyTask.DailyTaskLogic")
 local ChengjiuLogic = require("chengjiu.ChengjiuLogic")
 local ChengjiuDefine = require("chengjiu.ChengjiuDefine")
 local HeroExcel = require("excel.hero").hero
-local MailExcel = require("excel.mail")
-local MailManager = require("mail.MailManager")
+-- local MailExcel = require("excel.mail")
+-- local MailManager = require("mail.MailManager")
 local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")
-local MonthSummon = require("monthAct.MonthSummon")  
+-- local MonthSummon = require("monthAct.MonthSummon")  
 local HeroBook = require("hero.HeroBook")
-local RoleDefine = require("role.RoleDefine")
+-- local RoleDefine = require("role.RoleDefine")
 local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
 local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
 local GuideLogic = require("guide.GuideLogic")
 local RandomLogic = require("common.RandomLogic")
-local TuiSongLiBao = require("present.TuiSongLiBao")
-local MoshouLogic = require("moshou.MoshouLogic")
+-- local TuiSongLiBao = require("present.TuiSongLiBao")
+-- local MoshouLogic = require("moshou.MoshouLogic")
 local LiLianLogic = require("dailyTask.LiLianLogic")
-local ProjectLogic = require("platform.ProjectLogic")
+-- local ProjectLogic = require("platform.ProjectLogic")
 local SysParameter = require("common.SysParameter")
 local AbsActLogic = require("absAct.AbsActLogic")
 local AbsActDefine = require("absAct.AbsActDefine")
-local HeroUpLogic = require("absAct.HeroUpLogic")
+-- local HeroUpLogic = require("absAct.HeroUpLogic")
 local PerpleHeroLogic = require("absAct.PerpleHeroLogic")
 local YunYingLogic = require("yunying.YunYingLogic")
-local PanelDefine = require("broadcast.PanelDefine")
+-- local PanelDefine = require("broadcast.PanelDefine")
 local VipLogic = require("vip.VipLogic")
 local MengxinLogic = require("present.MengxinLogic")
 local LimitPerpleHeroLogic = require("present.LimitPerpleHeroLogic")
@@ -58,6 +58,8 @@ local MaiDianDefine = require("MaiDian.MaiDianDefine")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 local WeekTaskLogic = require("dailyTask.WeekTaskLogic")
+local ClutterDataLogic = require("clutter.ClutterDataLogic")
+local ClutterDataDefine = require("clutter.ClutterDataDefine")
 
 DRAWCARD_ID0 = 0	-- 积分召唤
 DRAWCARD_ID1 = 1	-- 基础召唤
@@ -362,6 +364,7 @@ function sendDrawOp(human, id, op, heroList, items, heroNewList, heroIndexList,i
             Grid.makeItem(dataNet.items[dataNet.items[0]], itemID, itemCnt)
         end
     end
+
     fontDrawCardNet(msgRet.drawData, id, human)
     Msg.send(msgRet, human.fd)
 end
@@ -564,6 +567,33 @@ function randHeroID(human, id, op, config, actConfig, randomIndex, isAct)
     return heroID
 end
 
+--每日可抽取次数检测   新改为只是做个形式上的扣除
+local function dayLotteryTimesCheck(human, lotteryType, lotteryTimes)
+    local cnt = 0
+    local clutterType = 0
+    if lotteryType == DRAWCARD_ID1 then
+        clutterType = ClutterDataDefine.CLUTTER_TYPE1
+    elseif lotteryType == DRAWCARD_ID2 then
+        clutterType = ClutterDataDefine.CLUTTER_TYPE2
+    elseif lotteryType == DRAWCARD_ID3 then
+        clutterType = ClutterDataDefine.CLUTTER_TYPE3
+    elseif lotteryType == DRAWCARD_ID8 then
+        clutterType = ClutterDataDefine.CLUTTER_TYPE5
+    end
+
+    -- cnt = ClutterDataLogic.GetDiffLotteryTimes(human, clutterType)
+    -- if cnt < lotteryTimes then
+    --     return Broadcast.sendErr(human, Lang.JINBI_EXCHANGE_ERR_CNT)
+    -- end
+
+    ClutterDataLogic.UpdateDiffLotteryTimes(human, clutterType, lotteryTimes, lotteryType)
+
+    -- return cnt, clutterType
+end
+
+
+
+
 -- 基础,高级,友情召唤,活动召唤
 local function draw(human, id, op, actConfig, skip,isAct)
     if isAct == AbsActDefine.ABS_ACT_TYPE_4 then
@@ -595,15 +625,21 @@ local function draw(human, id, op, actConfig, skip,isAct)
         return
     end
 
+
     if HeroLogic.getEmptyCnt(human) < heroCnt then
         return Broadcast.sendErr(human, Lang.HERO_BAG_FULL)
     end
 
+
     if not checkUseItem(human, id, op, config,isAct) then
         print("checkUseItem false")
         return
     end
 
+
+    dayLotteryTimesCheck(human, id, heroCnt)
+
+
     if id == DRAWCARD_ID2 then
         MainDianLogic.MaiDian_Begin(human, MaiDianDefine.MAIDIAN_TYPE_ADV_SUMMON,{nValue = heroCnt})  
     end
@@ -711,6 +747,7 @@ local function draw(human, id, op, actConfig, skip,isAct)
         end
     end
 
+
     if id ~= DRAWCARD_ID8 then
         updateJifen(human, config.jifen * heroCnt)
     end

+ 6 - 1
script/module/xianzhi/XianzhiLogic.lua

@@ -17,7 +17,7 @@ local ChengjiuLogic = require("chengjiu.ChengjiuLogic")
 local ChengjiuDefine = require("chengjiu.ChengjiuDefine")
 local Util = require("common.Util")
 local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")
-local DrawCardLogic = require("drawCard.DrawCardLogic")
+-- local DrawCardLogic = require("drawCard.DrawCardLogic")
 local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
 local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
 local HeroGrowUp = require("absAct.HeroGrowUp")
@@ -25,6 +25,8 @@ local YunYingLogic = require("yunying.YunYingLogic")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 local WeekTaskLogic = require("dailyTask.WeekTaskLogic")
+local ClutterDataLogic = require("clutter.ClutterDataLogic")
+local ClutterDataDefine = require("clutter.ClutterDataDefine")
 
 local xianzhiOutPutId = 126
 local xianzhiDelitem_Normal = 100
@@ -119,6 +121,9 @@ function zhaohuanDo(human, camp, cnt, skip)
     human.db.drawCard.skip = skip or 0
 	-- 扣消耗
 	BagLogic.delItem(human, needItemID, needItemCnt, "xianzhi_zhaohuan")
+
+
+	ClutterDataLogic.UpdateDiffLotteryTimes(human, ClutterDataDefine.CLUTTER_TYPE4, cnt, ClutterDataDefine.CLUTTER_TYPE4)
 	
 	-- 增加物品
 	local msgRet = Msg.gc.GC_XIANZHI_ZHAOHUAN_DO

+ 19 - 2
script/module/zhuanpan/ZhuanpanLogic.lua

@@ -17,8 +17,10 @@ local EquipLogic = require("equip.EquipLogic")
 local YunYingLogic = require("yunying.YunYingLogic")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
-
 local WeekTaskLogic = require("dailyTask.WeekTaskLogic")
+local ClutterDataLogic = require("clutter.ClutterDataLogic")
+local ClutterDataDefine = require("clutter.ClutterDataDefine")
+
 
 DEFAULT_ZHUANPAN_TYPE_NORMAL 		= 1     -- 基础转盘
 DEFAULT_ZHUANPAN_TYPE_GAOJI  		= 2     -- 高级转盘
@@ -321,9 +323,24 @@ function getReward(human, mainType, cnt)
 	local zhuanpan = human.db.zhuanpan[mainType]
 	if not BagLogic.checkItemCnt(human, needItemID, needItemCnt) then
 		return
-	end	
+	end
+
+	-- 每日可抽取次数检测
+	-- local dayTimes = ClutterDataLogic.GetZhuanPanTimes(human)
+	-- if dayTimes < cnt then
+	-- 	return Broadcast.sendErr(human, Lang.JINBI_EXCHANGE_ERR_CNT)
+	-- end
+
+	-- --更新每次抽取次数
+	-- dayTimes = dayTimes - cnt
+
+	-- 改为只更新次数
+	ClutterDataLogic.UpdateZhuanPanTimes(human, cnt)
+
+
 	-- 扣消耗
 	BagLogic.delItem(human, needItemID, needItemCnt, "zhuanpan_get")
+
 	
 	local msgRet = Msg.gc.GC_ZHUANPAN_GET_REWARD
 	msgRet.type = mainType