Bladeren bron

修改日常任务,萌新好礼活动领取方式为一键领取

gitxsm 1 jaar geleden
bovenliggende
commit
e4e5142c36
2 gewijzigde bestanden met toevoegingen van 221 en 82 verwijderingen
  1. 162 60
      script/module/dailyTask/DailyTaskLogic.lua
  2. 59 22
      script/module/present/MengxinLogic.lua

+ 162 - 60
script/module/dailyTask/DailyTaskLogic.lua

@@ -97,53 +97,98 @@ function dailyTaskQuery(human, isOnLogin)
 	Msg.send(msgRet, human.fd)
 end
 
+--统计奖励
+local function calcReward(human, awardCfg)
+	for i = 1, #awardCfg do
+		local itemId = awardCfg[i][1]
+		local itemCnt = awardCfg[i][2]
+        if itemId == ItemDefine.ITME_HUOYUE_ID then
+            onDailyTaskHuoYue(human,itemCnt)
+        else
+			local newCnt = math.ceil(itemCnt)
+			--BagLogic.updateMomentItem(2, itemId, itemCnt)
+			BagLogic.updateMomentItem(2, itemId, newCnt)
+        end
+	end
+end
+
+
 -- 领取每日任务奖励
 function dailyTaskGetReward(human, taskID)
 	if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_801) ~= true then
 		return
 	end
 
-	local dailyTaskConfig = DailyTaskExcel.dailyTask[taskID]
-	if not dailyTaskConfig then return end
+	-- local dailyTaskConfig = DailyTaskExcel.dailyTask[taskID]
+	-- if not dailyTaskConfig then return end
 
 	-- 每日更新
 	ObjHuman.updateDaily(human)
 	
-	if human.db.dailyTask == nil or human.db.dailyTask.task == nil or human.db.dailyTask.task[taskID] == nil then
-		return
-	end
-
-	-- 判断上限	
-	if human.db.dailyTask.task[taskID].isGet then 
-		return
-	end
+	-- if human.db.dailyTask == nil or human.db.dailyTask.task == nil or human.db.dailyTask.task[taskID] == nil then
+	-- 	return
+	-- end
+
+	-- --判断上限	
+	-- if human.db.dailyTask.task[taskID].isGet then
+	-- 	return
+	-- end
 		
-	if human.db.dailyTask.task[taskID].finishCnt == nil or human.db.dailyTask.task[taskID].finishCnt < dailyTaskConfig.taskCnt then
+	-- if human.db.dailyTask.task[taskID].finishCnt == nil or human.db.dailyTask.task[taskID].finishCnt < dailyTaskConfig.taskCnt then
+	-- 	return
+	-- end
+	
+	-- --改db
+	-- human.db.dailyTask.task[taskID].isGet = true
+
+
+    -- --奖励倍数
+	-- BagLogic.cleanMomentItemList()
+	-- for i = 1, #dailyTaskConfig.reward do 
+	-- 	local itemId = dailyTaskConfig.reward[i][1]
+	-- 	local itemCnt = dailyTaskConfig.reward[i][2]
+    --     if itemId == ItemDefine.ITME_HUOYUE_ID then
+    --         onDailyTaskHuoYue(human,itemCnt)
+    --     else
+	-- 		local newCnt = math.ceil(itemCnt) 
+	-- 		BagLogic.updateMomentItem(2, itemId, itemCnt)
+    --     end
+	-- end
+    -- BagLogic.addMomentItemList(human, "daily_task")
+--	ChatPaoMaLogic.trigger(human, ChatPaoMaLogic.TRIGGER_TYPE_2, rewardID, rewardCnt)
+	-- 通知客户端
+	-- dailyTaskQuery(human)
+	
+	-- RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
+
+
+	------------------------------------新改为: 一键领取所有能领取的奖励---------------------------------------------
+	if human.db.dailyTask == nil or human.db.dailyTask.task == nil then
 		return
 	end
-	
-	-- 改db
-	human.db.dailyTask.task[taskID].isGet = true
 
+	local isClean = false
+	local taskData = human.db.dailyTask.task
 
-    -- 奖励倍数
-	BagLogic.cleanMomentItemList()
-	for i = 1, #dailyTaskConfig.reward do 
-		local itemId = dailyTaskConfig.reward[i][1]
-		local itemCnt = dailyTaskConfig.reward[i][2]
-        if itemId == ItemDefine.ITME_HUOYUE_ID then
-            onDailyTaskHuoYue(human,itemCnt)
-        else
-			local newCnt = math.ceil(itemCnt) 
-			BagLogic.updateMomentItem(2, itemId, itemCnt)
-        end
+	for taskId, data in pairs(taskData) do
+		if not data.isGet then
+			local dailyTaskConfig = DailyTaskExcel.dailyTask[taskId]
+			if data.finishCnt and data.finishCnt >= dailyTaskConfig.taskCnt then
+				if not isClean then
+					BagLogic.cleanMomentItemList()
+					isClean = true
+				end
+				calcReward(human, dailyTaskConfig.reward)
+				data.isGet = true
+			end
+		end
+	end
+
+	if isClean then
+		BagLogic.addMomentItemList(human, "daily_task")
+		dailyTaskQuery(human)
+		RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
 	end
-    BagLogic.addMomentItemList(human, "daily_task")
---	ChatPaoMaLogic.trigger(human, ChatPaoMaLogic.TRIGGER_TYPE_2, rewardID, rewardCnt)
-	-- 通知客户端
-	dailyTaskQuery(human)
-	
-	RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
 end
 
 -- 记录每个任务的完成次数
@@ -198,43 +243,100 @@ local function huoYueBoxCanGet(human,boxID)
 end
 
 function CG_DAILYTASK_GET_HUOYUEBOX(human,boxID)
-	local huoYueBoxConfig = DailyTaskExcel.huoYueBox[boxID]
-	if not huoYueBoxConfig then return end
+	-- local huoYueBoxConfig = DailyTaskExcel.huoYueBox[boxID]
+	-- if not huoYueBoxConfig then return end
 
-	if not huoYueBoxCanGet(human,boxID) then return end
+	-- if not huoYueBoxCanGet(human,boxID) then return end
 
-	human.db.dailyTask.huoYueBox = human.db.dailyTask.huoYueBox or {}
-	human.db.dailyTask.huoYueBox[boxID] = 1
+	-- human.db.dailyTask.huoYueBox = human.db.dailyTask.huoYueBox or {}
+	-- human.db.dailyTask.huoYueBox[boxID] = 1
     
-    local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_801)
+    -- local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_801)
+    -- local rewardCnt = double and 2 or 1
+    -- local cjPrivilege = ChengjiuLogic.checkPrivilege(human,ChengjiuDefine.PRIVILEGE_TYPE_2)
+    -- local item = Util.copyTable(huoYueBoxConfig.reward)
+    -- if cjPrivilege then
+    --     local random = math.random(1,100)
+    --     if random <= 1 then
+    --         local len = #item
+    --         for i = 1,len do
+    --             item[i][2] = item[i][2] * 2
+    --         end
+    --     end
+
+       
+    -- end
+
+	-- if double then
+	-- 	local len = #item
+    --     for i = 1,len do
+    --         item[i][2] = item[i][2] * rewardCnt
+    --     end
+	-- end
+	
+	-- local msgRet = Msg.gc.GC_DAILYTASK_GET_HUOYUEBOX
+	-- msgRet.boxID = boxID
+    -- msgRet.double = double and 1 or 0
+	-- Msg.send(msgRet,human.fd)
+    -- BagLogic.addItemList(human, item, "daily_task")
+	-- RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
+
+	-------------------------------新修改为:一键领取所有能领取的宝箱奖励------------------------------------
+
+	local dailyTaskDB = human.db.dailyTask
+	if not dailyTaskDB then
+		return
+	end
+
+	local nowHuoYue = dailyTaskDB.nowHuoYue
+	if not nowHuoYue then
+		return
+	end
+
+
+	local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_801)
     local rewardCnt = double and 2 or 1
     local cjPrivilege = ChengjiuLogic.checkPrivilege(human,ChengjiuDefine.PRIVILEGE_TYPE_2)
-    local item = Util.copyTable(huoYueBoxConfig.reward)
-    if cjPrivilege then
-        local random = math.random(1,100)
-        if random <= 1 then
-            local len = #item
-            for i = 1,len do
-                item[i][2] = item[i][2] * 2
-            end
-        end
 
-       
-    end
+	local len = 0
+	local randRate = 1
+	local awardList = {}
+	local boxData = dailyTaskDB.huoYueBox
+	local boxConfig = DailyTaskExcel.huoYueBox
 
-	if double then
-		local len = #item
-        for i = 1,len do
-            item[i][2] = item[i][2] * rewardCnt
-        end
+
+	for boxId, v in ipairs(boxConfig) do
+		if nowHuoYue >= v.needHuoYue and (not boxData or not boxData[boxId]) then
+			dailyTaskDB.huoYueBox = dailyTaskDB.huoYueBox or {}
+			boxData = dailyTaskDB.huoYueBox
+			boxData[boxId] = 1
+
+			randRate = 1
+			if cjPrivilege then
+				local random = math.random(1,100)
+				if random <= 1 then
+					randRate = 2
+				end
+			end
+
+			for _, itemInfo in ipairs(v.reward) do
+				len = len + 1
+				awardList[len] = {itemInfo[1], itemInfo[2] * randRate * rewardCnt}
+			end
+
+			--更新
+			local msgRet = Msg.gc.GC_DAILYTASK_GET_HUOYUEBOX
+			msgRet.boxID = boxId
+			msgRet.double = double and 1 or 0
+			Msg.send(msgRet,human.fd)
+		end
 	end
-	
-	local msgRet = Msg.gc.GC_DAILYTASK_GET_HUOYUEBOX
-	msgRet.boxID = boxID
-    msgRet.double = double and 1 or 0
-	Msg.send(msgRet,human.fd)
-    BagLogic.addItemList(human, item, "daily_task")
-	RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
+
+	if len > 0 then
+		BagLogic.addItemList(human, awardList, "daily_task")
+		RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
+	end
+
 end
 
 function isDot(human)

+ 59 - 22
script/module/present/MengxinLogic.lua

@@ -241,6 +241,45 @@ end
 
 -- 领取任务奖励
 function getTaskReward(human,day,id)
+    -- 开服超过7天 活动已结束
+    -- if not isOpen(human) then
+    --     return
+    -- end
+
+    -- -- 日期传入错误
+    -- if not day or day > 7 or day <= 0 then
+    --     return
+    -- end
+
+    -- -- 任务校验错误
+    -- local config = OpenActExcel.mxTask[id]
+    -- if not config or config.days ~= day then
+    --     return
+    -- end
+
+    -- -- 任务状态未完成
+    -- local state = getTaskState(human,id)
+    -- if state ~= 1 then
+    --     return
+    -- end
+
+    -- -- 设置状态
+    -- setTaskState(human,id,2)
+
+    -- -- 获得积分
+    -- addJifen(human,1)
+
+    -- -- 发奖励
+    -- BagLogic.addItemList(human,config.item,"mengxin_opact")
+
+	-- for k, v in pairs(funcID) do
+	--     YunYingLogic.updateIcon(YYInfo[k], human)
+	--     YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3605)
+    --     break
+    -- end
+    -- query(human,day)
+
+    --------------------------新改为一键领取所有能领取的奖励-----------------------------
     -- 开服超过7天 活动已结束
     if not isOpen(human) then
         return
@@ -248,36 +287,34 @@ function getTaskReward(human,day,id)
 
     -- 日期传入错误
     if not day or day > 7 or day <= 0 then
-        return 
-    end
-
-    -- 任务校验错误
-    local config = OpenActExcel.mxTask[id]
-    if not config or config.days ~= day then
         return
     end
 
-    -- 任务状态未完成
-    local state = getTaskState(human,id)
-    if state ~= 1 then
-        return
-    end
+    local len = 0
+    local awardList = {}
 
-    -- 设置状态
-    setTaskState(human,id,2)
+    for taskId, cfg in pairs(OpenActExcel.mxTask) do
+        if cfg.days == day and getTaskState(human, taskId) == 1 then
+            addJifen(human,1)
+            setTaskState(human,taskId,2)
 
-    -- 获得积分
-    addJifen(human,1)
+            for _, itemInfo in ipairs(cfg.item) do
+                len = len + 1
+                awardList[len] = {itemInfo[1], itemInfo[2]}
+            end
+        end
+    end
 
-    -- 发奖励
-    BagLogic.addItemList(human,config.item,"mengxin_opact")
+    if len > 0 then
+        BagLogic.addItemList(human,awardList,"mengxin_opact")
 
-	for k, v in pairs(funcID) do
-	    YunYingLogic.updateIcon(YYInfo[k], human)
-	    YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3605)
-        break
+        for k, v in pairs(funcID) do
+            YunYingLogic.updateIcon(YYInfo[k], human)
+            YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3605)
+            break
+        end
+        query(human,day)
     end
-    query(human,day)
 end
 
 function addJifen(human,jifen)