Bladeren bron

Merge branch '360test' of http://43.226.57.217:3000/yishanyou/GongFuServer into 360test

# Conflicts:
#	script/common/ProtoID.lua
pig flower 3 maanden geleden
bovenliggende
commit
be5c07682a

+ 1 - 1
script/common/CommonDefine.lua

@@ -15,7 +15,7 @@ CHANNEL_TAG_FT = 18             -- 繁体
 
 
 
-SEA_CHANNEL_ARR = {13}  -- 海外渠道
+SEA_CHANNEL_ARR = {13, 18}  -- 海外渠道
 
 ----------------------------------------------------------------------------
 

+ 1 - 0
script/common/Lang.lua

@@ -845,6 +845,7 @@ AB_OCCUPY_POINT_MAX = [[当前占据的据点已达上限]]
 AB_HERO_IN_OTHER_POINT= [[英雄在其他据点上阵了]]
 AB_UPDATE_LINEUP_SUCC= [[更换防守阵容成功]]
 AB_POINT_CHALLENGING= [[已有玩家在进攻该据点]]
+AB_CHALLENGING_TIMES_NOT_ENOUGH= [[行动力不足]]
 
 AB_MIYAO_NOT_ENOUG = [[秘钥不足]]
 

+ 2 - 0
script/common/LogDefine.lua

@@ -272,6 +272,8 @@ DEFINE = {
 	UnlimitDrawCard			= 275,			 -- 无限高抽
 	OpenServerGiftPackage   = 276,			 -- 开服礼包
 	item_hecheng  			= 277,			 -- 物品合成
+	CommonActLoginGift		= 278,			 -- 通用节日活动 - 登录豪礼
+	CommonActMoneyTree		= 279,			 -- 通用节日活动 - 摇钱树
 
 	abs_totalReach          = 500,           -- 周期性活动累计
     abs_singleReach         = 501,           -- 周期性活动单次

+ 7 - 0
script/common/ProtoID.lua

@@ -1775,3 +1775,10 @@ _ENV[1808]="GC_BREATHROUGHTHEME_REDDOT"
 _ENV[1809]="CG_BREATHROUGHTHEME_SHOW_TIPS"
 _ENV[1810]="GC_BREATHROUGHTHEME_SHOW_TIPS"
 
+_ENV[1811]="CG_ABS_COMONACT_LOGINGIFT_QUERY"
+_ENV[1812]="GC_ABS_COMONACT_LOGINGIFT_QUERY"
+_ENV[1813]="CG_ABS_COMONACT_LOGINGIFT_GET_REWARD"
+
+_ENV[1814]="GC_COMBAT_JiBan_DESC"
+
+

+ 1 - 1
script/merge/MergeServerCS.lua

@@ -67,7 +67,7 @@ function AfterStart()
     end
 
     local updateTb, removeTb = generateArray()
-    if (not updateTb or not next(updateTb)) and (not removeTb or not next(removeTb)) then
+    if (not updateTb and not removeTb) or (not next(updateTb) and not next(removeTb)) then
         return
     end
 

+ 54 - 56
script/merge/MergeServerDefine.lua

@@ -74,6 +74,7 @@ CHANNEL_ID_SANLI_4399 = 6
 CHANNEL_ID_SANLI_360 = 7
 
 CHANNEL_ID_SANLI_SHIYOU = 10
+CHANNEL_ID_TAP_WX = 11
 
 -- 数据库名中字符串部分的格式
 DB_NAME_STR = "ckwy_fy_S"
@@ -98,6 +99,9 @@ CHANNEL_2_DBNUMBER = {
 
     -- 三狸视游
     [CHANNEL_ID_SANLI_SHIYOU] = 750001,
+
+    -- 微信/抖音小游戏
+    [CHANNEL_ID_TAP_WX] = 1150001,
 }
 
 -- 要进行合并的数据库所属渠道ID, 用于检测合错数据库的情况, 与下面的 MERGE_DB_TB 的值一一对应
@@ -105,50 +109,38 @@ CHANNEL_2_DBNUMBER = {
 MERGE_CHECK_TB = {
     -- 木子/Tap
     [CHANNEL_ID_TAP] = {
-        { {CHANNEL_ID_TAP, 101, 0},  {CHANNEL_ID_TAP, 111, 1} },
-        { {CHANNEL_ID_TAP, 103, 0},  {CHANNEL_ID_TAP, 113, 1} },
-        { {CHANNEL_ID_TAP, 105, 0},  {CHANNEL_ID_TAP, 115, 1} },
-        { {CHANNEL_ID_TAP, 107, 0},  {CHANNEL_ID_TAP, 117, 1} },
-        { {CHANNEL_ID_TAP, 109, 0},  {CHANNEL_ID_TAP, 119, 1} },
-
-        { {CHANNEL_ID_TAP, 121, 0},  {CHANNEL_ID_TAP, 131, 1} },
-        { {CHANNEL_ID_TAP, 123, 0},  {CHANNEL_ID_TAP, 133, 1} },
-        { {CHANNEL_ID_TAP, 125, 0},  {CHANNEL_ID_TAP, 135, 1} },
-        { {CHANNEL_ID_TAP, 127, 0},  {CHANNEL_ID_TAP, 137, 1} },
-        { {CHANNEL_ID_TAP, 129, 0},  {CHANNEL_ID_TAP, 139, 1} },
-
-        { {CHANNEL_ID_TAP, 141, 0},  {CHANNEL_ID_TAP, 151, 1} },
-        { {CHANNEL_ID_TAP, 143, 0},  {CHANNEL_ID_TAP, 153, 1} },
-        { {CHANNEL_ID_TAP, 145, 0},  {CHANNEL_ID_TAP, 155, 1} },
-        { {CHANNEL_ID_TAP, 147, 0},  {CHANNEL_ID_TAP, 157, 1} },
-        { {CHANNEL_ID_TAP, 149, 0},  {CHANNEL_ID_TAP, 159, 1} },
-
-        { {CHANNEL_ID_TAP, 201, 0},  {CHANNEL_ID_TAP, 202, 1} },
-        { {CHANNEL_ID_TAP, 203, 0},  {CHANNEL_ID_TAP, 204, 1} },
-        { {CHANNEL_ID_TAP, 205, 0},  {CHANNEL_ID_TAP, 206, 1} },
-        { {CHANNEL_ID_TAP, 207, 0},  {CHANNEL_ID_TAP, 208, 1} },
-        { {CHANNEL_ID_TAP, 209, 0},  {CHANNEL_ID_TAP, 210, 1} },
+        { {CHANNEL_ID_TAP, 161, 0},  {CHANNEL_ID_TAP, 171, 1} },
+        { {CHANNEL_ID_TAP, 163, 0},  {CHANNEL_ID_TAP, 173, 1} },
+        { {CHANNEL_ID_TAP, 165, 0},  {CHANNEL_ID_TAP, 175, 1} },
+        { {CHANNEL_ID_TAP, 167, 0},  {CHANNEL_ID_TAP, 177, 1} },
+        { {CHANNEL_ID_TAP, 169, 0},  {CHANNEL_ID_TAP, 179, 1} },
+
+        { {CHANNEL_ID_TAP, 211, 0},  {CHANNEL_ID_TAP, 212, 1} },
+        { {CHANNEL_ID_TAP, 213, 0},  {CHANNEL_ID_TAP, 214, 1} },
+        { {CHANNEL_ID_TAP, 215, 0},  {CHANNEL_ID_TAP, 216, 1} },
+        { {CHANNEL_ID_TAP, 217, 0},  {CHANNEL_ID_TAP, 218, 1} },
+        { {CHANNEL_ID_TAP, 219, 0},  {CHANNEL_ID_TAP, 220, 1} },
 
     },
 
     -- 三狸功夫
-    [CHANNEL_ID_SANLI_ANDOIRD] = {
-        { {CHANNEL_ID_SANLI_ANDOIRD, 121, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 123, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 125, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 127, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 129, 1} },
+    -- [CHANNEL_ID_SANLI_ANDOIRD] = {
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 121, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 123, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 125, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 127, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 129, 1} },
 
-        { {CHANNEL_ID_SANLI_ANDOIRD, 131, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 133, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 135, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 137, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 139, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 131, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 133, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 135, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 137, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 139, 1} },
 
-        { {CHANNEL_ID_SANLI_ANDOIRD, 141, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 143, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 145, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 147, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 149, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 141, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 143, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 145, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 147, 1}, {CHANNEL_ID_SANLI_ANDOIRD, 149, 1} },
 
-        { {CHANNEL_ID_SANLI_ANDOIRD, 191, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 192, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 193, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 194, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 195, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 196, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 197, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 198, 1} },
-        { {CHANNEL_ID_SANLI_ANDOIRD, 199, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 200, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 191, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 192, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 193, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 194, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 195, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 196, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 197, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 198, 1} },
+    --     { {CHANNEL_ID_SANLI_ANDOIRD, 199, 0}, {CHANNEL_ID_SANLI_ANDOIRD, 200, 1} },
         
-    },
+    -- },
 
 
     -- 三狸H5
@@ -171,26 +163,32 @@ MERGE_CHECK_TB = {
 
 
     -- 三狸视游
-    [CHANNEL_ID_SANLI_SHIYOU] = {
-        { {CHANNEL_ID_SANLI_SHIYOU, 1, 0},  {CHANNEL_ID_SANLI_SHIYOU, 3, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 5, 0},  {CHANNEL_ID_SANLI_SHIYOU, 7, 1}, {CHANNEL_ID_SANLI_SHIYOU, 9, 1} },
-
-        { {CHANNEL_ID_SANLI_SHIYOU, 11, 0},  {CHANNEL_ID_SANLI_SHIYOU, 12, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 13, 0},  {CHANNEL_ID_SANLI_SHIYOU, 14, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 15, 0},  {CHANNEL_ID_SANLI_SHIYOU, 16, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 17, 0},  {CHANNEL_ID_SANLI_SHIYOU, 18, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 19, 0},  {CHANNEL_ID_SANLI_SHIYOU, 20, 1} },
-
-        { {CHANNEL_ID_SANLI_SHIYOU, 81, 0},  {CHANNEL_ID_SANLI_SHIYOU, 82, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 83, 0},  {CHANNEL_ID_SANLI_SHIYOU, 84, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 85, 0},  {CHANNEL_ID_SANLI_SHIYOU, 86, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 87, 0},  {CHANNEL_ID_SANLI_SHIYOU, 88, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 89, 0},  {CHANNEL_ID_SANLI_SHIYOU, 90, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 91, 0},  {CHANNEL_ID_SANLI_SHIYOU, 92, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 93, 0},  {CHANNEL_ID_SANLI_SHIYOU, 94, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 95, 0},  {CHANNEL_ID_SANLI_SHIYOU, 96, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 97, 0},  {CHANNEL_ID_SANLI_SHIYOU, 98, 1} },
-        { {CHANNEL_ID_SANLI_SHIYOU, 99, 0},  {CHANNEL_ID_SANLI_SHIYOU, 100, 1} },
+    -- [CHANNEL_ID_SANLI_SHIYOU] = {
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 1, 0},  {CHANNEL_ID_SANLI_SHIYOU, 3, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 5, 0},  {CHANNEL_ID_SANLI_SHIYOU, 7, 1}, {CHANNEL_ID_SANLI_SHIYOU, 9, 1} },
+
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 11, 0},  {CHANNEL_ID_SANLI_SHIYOU, 12, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 13, 0},  {CHANNEL_ID_SANLI_SHIYOU, 14, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 15, 0},  {CHANNEL_ID_SANLI_SHIYOU, 16, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 17, 0},  {CHANNEL_ID_SANLI_SHIYOU, 18, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 19, 0},  {CHANNEL_ID_SANLI_SHIYOU, 20, 1} },
+
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 81, 0},  {CHANNEL_ID_SANLI_SHIYOU, 82, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 83, 0},  {CHANNEL_ID_SANLI_SHIYOU, 84, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 85, 0},  {CHANNEL_ID_SANLI_SHIYOU, 86, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 87, 0},  {CHANNEL_ID_SANLI_SHIYOU, 88, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 89, 0},  {CHANNEL_ID_SANLI_SHIYOU, 90, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 91, 0},  {CHANNEL_ID_SANLI_SHIYOU, 92, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 93, 0},  {CHANNEL_ID_SANLI_SHIYOU, 94, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 95, 0},  {CHANNEL_ID_SANLI_SHIYOU, 96, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 97, 0},  {CHANNEL_ID_SANLI_SHIYOU, 98, 1} },
+    --     { {CHANNEL_ID_SANLI_SHIYOU, 99, 0},  {CHANNEL_ID_SANLI_SHIYOU, 100, 1} },
+    -- },
+
+    -- 微信/抖音小游戏
+    [CHANNEL_ID_TAP_WX] = {
+        { {CHANNEL_ID_TAP_WX, 1, 0},  {CHANNEL_ID_TAP_WX, 2, 1}, {CHANNEL_ID_TAP_WX, 3, 1}, {CHANNEL_ID_TAP_WX, 4, 1}, {CHANNEL_ID_TAP_WX, 5, 1}},
+        { {CHANNEL_ID_TAP_WX, 6, 0},  {CHANNEL_ID_TAP_WX, 7, 1}, {CHANNEL_ID_TAP_WX, 8, 1}, {CHANNEL_ID_TAP_WX, 9, 1}, {CHANNEL_ID_TAP_WX, 10, 1}},
     },
 }
 

+ 2 - 2
script/merge/MergeServerLogic.lua

@@ -1,7 +1,7 @@
 --合服逻辑
 
 --[=[
-    0.一般在跨服上进行合服, 所以需要把merge目录下用到文件更新到跨服上
+    0.一般在跨服上进行合服, 所以需要把merge目录下所有文件更新到跨服上
 
     1.更新MergeServerDefine.MERGE_DB_TB中要合并的数据库, 并备份数据库, 方法见 MergeServerDefine
 
@@ -14,7 +14,7 @@
 
     5.查看日志oss_merge, 是否有报错, 如果有报错则还原数据, 恢复见方法见 MergeServerDefine
 
-    6.修改mysql区服列表的 port, dbName, megre_server字段, 被合服的 port 和 dbname 要改为目标服一样, 被合服的 megre_server字段更新为宿主服的sid
+    6.修改mysql区服列表的 port, dbName, megre_server字段, 被合服的 port 和 dbname 要改为目标服一样, 被合服的 megre_server字段更新为1
         sql见sdk数据库下查询中的updateMergeServerData(需要修改数据库范围)
 
     7.修改linux上被合服的bin*文件名, 防止 start.sh 启动时会把被合服也启动起来。脚本见/server/changebinName.sh  (需要修改脚本中范围)

+ 7 - 1
script/module/absAct/AbsActLogic.lua

@@ -85,7 +85,7 @@ function onLogin(human)
     end
     -- 是否有新增活动
     for k,v in pairs(absActConfig) do 
-        local ok,realEndTime = isStarted(human,k)
+        local ok,realEndTime, realStartTime = isStarted(human,k)
         if ok and  human.db.absAct[k] then
             --- 同步结束时间
             local nowTime = os.time()
@@ -93,6 +93,10 @@ function onLogin(human)
             if  finishTime >= nowTime and  finishTime ~= realEndTime then
                 human.db.absAct[k].finish = realEndTime
             end
+
+            if not human.db.absAct[k].realStartTime or human.db.absAct[k].realStartTime ~= realStartTime then
+                human.db.absAct[k].realStartTime = realStartTime
+            end
         end
         if ok and not human.db.absAct[k] then 
             human.db.absAct[k] = {}
@@ -101,6 +105,8 @@ function onLogin(human)
                 human.db.absAct[k] = f.genAbsActData(v)
             end
             human.db.absAct[k].finish = realEndTime -- 记录活动结束时间
+
+            human.db.absAct[k].realStartTime = realStartTime
         end
     end
     -- 登录奖励重置

+ 274 - 0
script/module/absAct/CommonActLoginGift.lua

@@ -0,0 +1,274 @@
+-- 通用节日活动 - 登录豪礼
+-- db
+--[=[
+    human.db.absAct[actId] = {
+        getRecordData = {
+            [gitftType] = {
+                [day1] = true,
+                [day3] = true,
+            },
+        },
+
+        buyGiftType = nil, -- 已经购买的礼包类型
+    }   
+]=]--
+
+local Msg = require("core.Msg")
+local Grid = require("bag.Grid")
+local BagLogic = require("bag.BagLogic")
+local AbsActLogic = require("absAct.AbsActLogic")
+local Broadcast = require("broadcast.Broadcast")
+local Lang = require("common.Lang")
+local LoginGiftConfig = require("excel.commonact").loginreward
+local CommonDefine = require("common.CommonDefine")
+local Util = require("common.Util")
+local YunYingLogic = require("yunying.YunYingLogic")
+local AbsActExcel = require("excel.absAct")
+local BuyLogic = require("topup.BuyLogic")
+
+local LOGTYPE = "CommonActLoginGift"
+local COMMONACT_LOGINGIFT_ID = 7505
+
+
+local function getActData(human)
+    return human.db.absAct[COMMONACT_LOGINGIFT_ID]
+end
+
+local function updateGetRecordData(human, giftType, dayIdx)
+    human.db.absAct[COMMONACT_LOGINGIFT_ID].getRecordData = human.db.absAct[COMMONACT_LOGINGIFT_ID].getRecordData or {}
+    human.db.absAct[COMMONACT_LOGINGIFT_ID].getRecordData[giftType] = human.db.absAct[COMMONACT_LOGINGIFT_ID].getRecordData[giftType] or {}
+    human.db.absAct[COMMONACT_LOGINGIFT_ID].getRecordData[giftType][dayIdx] = true
+end
+
+local function updateBuyGiftType(human, giftType)
+    human.db.absAct[COMMONACT_LOGINGIFT_ID].buyGiftType = giftType
+end
+
+
+
+local function isOpenAct(human, funcID)
+    return AbsActLogic.isStarted(human, funcID)
+end
+
+local function transformCfg()
+    local tb = {}
+    for _, giftCfg in ipairs(LoginGiftConfig) do
+        if not tb[giftCfg.giftType] then
+            tb[giftCfg.giftType] = {}
+        end
+        local t = tb[giftCfg.giftType]
+        t[#t+1] = giftCfg
+    end
+
+    return tb
+end
+
+local function getAwardState(human, giftType, dayIdx)
+    local actData = getActData(human)
+    local diffDays = Util.diffDay(actData.realStartTime) + 1
+    local getRecordData = actData and actData.getRecordData or {}
+    local nowGiftTypeGetRecord = getRecordData[giftType] or {}
+    local buyGiftType = actData and actData.buyGiftType
+
+    local isBuy = true
+    local state = CommonDefine.COMMON_PRIZE_STATE_CANGET
+
+    if giftType ~= 1 and (not buyGiftType or buyGiftType ~= giftType) then -- 需要充值的礼包类型
+        state = CommonDefine.COMMON_PRIZE_STATE_NOGET
+        isBuy = false
+    end
+
+    if isBuy and diffDays >= dayIdx and nowGiftTypeGetRecord[dayIdx] then
+        state = CommonDefine.COMMON_PRIZE_STATE_GET
+    end
+
+    return state
+end
+
+-- 检查是否有可领取的奖励
+local function isCanGet(human)
+    local type_2_cfg = transformCfg()
+
+    for giftType, giftCfgArr in pairs(type_2_cfg) do
+        for _, giftCfg in ipairs(giftCfgArr) do
+            local state = getAwardState(human, giftType, giftCfg.dayIdx)
+            if state == CommonDefine.COMMON_PRIZE_STATE_CANGET then
+                return true
+            end
+        end
+    end
+
+    return false
+end
+-- 填充协议结构
+local function populateGiftMsg(human, net, giftCfg, nowGiftType)
+    net.reward[0] = #giftCfg.reward
+    for i, itemInfo in ipairs(giftCfg.reward) do
+        Grid.makeItem(net.reward[i], itemInfo[1], itemInfo[2])
+    end
+
+    net.reallyDays = giftCfg.dayIdx
+    net.rewardState = getAwardState(human, nowGiftType, giftCfg.dayIdx)
+    BuyLogic.fontBuyItem(human, net.buyMsg, giftCfg.buyId)
+    net.giftType = nowGiftType
+end
+-- 主动刷新一次红点
+local function updateRedDot(human)
+    YunYingLogic.sendBanner(human)
+    local config = AbsActExcel.absActivity[COMMONACT_LOGINGIFT_ID]
+    YunYingLogic.sendGroupUpdate(YYInfo[COMMONACT_LOGINGIFT_ID], human, config.panelID)
+end
+
+
+
+
+function isRed(human, funcConfig)
+    local state = isOpenAct(human, funcConfig and funcConfig.funcID)
+    if not state then
+        return false
+    end
+
+    return isCanGet(human)
+end
+
+function isOpen(human, YYInfo, funcConfig)
+    return isOpenAct(human, funcConfig and funcConfig.funcID)
+end
+
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function onCharge(human, price, funcID, buyID, buyNum)
+    local actData = getActData(human)
+    local buyGiftType = actData and actData.buyGiftType
+    if buyGiftType then
+        return
+    end
+
+    local type_2_cfg = transformCfg()
+
+    for giftType, giftCfgArr in pairs(type_2_cfg) do
+        local singleCfg = giftCfgArr[1]
+        if singleCfg.buyId == buyID then
+            updateBuyGiftType(human, giftType)
+            updateRedDot(human)
+            CommonActLoginGift_Query(human)
+            break
+        end
+    end
+end
+
+function updateDaily(human, funcID)
+    if isOpenAct(human, COMMONACT_LOGINGIFT_ID) then
+        return
+    end
+
+    updateRedDot(human)
+end
+
+
+
+
+-- 查询
+function CommonActLoginGift_Query(human)
+    local msgRet = Msg.gc.GC_ABS_COMONACT_LOGINGIFT_QUERY
+    msgRet.giftDatafree[0] = 0
+    msgRet.giftData68[0] = 0
+    msgRet.giftData128[0] = 0
+    msgRet.giftData328[0] = 0
+    msgRet.giftData648[0] = 0
+    msgRet.isEnd = 0
+    msgRet.isStart = 1
+
+    local len, msgOnceLen = 0, 5
+    local type_2_cfg = transformCfg()
+    local configNum = type_2_cfg[1] and #type_2_cfg[1] or 0
+
+    for i=1, configNum do
+        len = len + 1
+
+        if type_2_cfg[1] then
+            msgRet.giftDatafree[0] = len
+            populateGiftMsg(human, msgRet.giftDatafree[len], type_2_cfg[1][i], 1)
+        end
+
+        if type_2_cfg[2] then
+            msgRet.giftData68[0] = len
+            populateGiftMsg(human, msgRet.giftData68[len], type_2_cfg[2][i], 2)
+        end
+
+        if type_2_cfg[3] then
+            msgRet.giftData128[0] = len
+            populateGiftMsg(human, msgRet.giftData128[len], type_2_cfg[3][i], 3)
+        end
+
+        if type_2_cfg[4] then
+            msgRet.giftData328[0] = len
+            populateGiftMsg(human, msgRet.giftData328[len], type_2_cfg[4][i], 4)
+        end
+
+        if type_2_cfg[5] then
+            msgRet.giftData648[0] = len
+            populateGiftMsg(human, msgRet.giftData648[len], type_2_cfg[5][i], 5)
+        end
+
+        if len >= msgOnceLen then
+            configNum = configNum - len
+            if configNum <= 0 then
+                msgRet.isEnd = 1
+                return Msg.send(msgRet, human.fd)
+            end
+
+            Msg.send(msgRet, human.fd)
+            len = 0
+            msgRet.isStart = 0
+        end
+    end
+
+    if len > 0 then
+        msgRet.isEnd = 1
+        Msg.send(msgRet, human.fd)
+    end
+end
+
+-- 领取奖励
+function CommonActLoginGift_GetReward(human, targetGiftType)
+    local type_2_cfg = transformCfg()
+    local giftArr = type_2_cfg[targetGiftType]
+    if not giftArr then
+        return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
+    end
+
+    local actData = getActData(human)
+    local buyGiftType = actData and actData.buyGiftType
+    if targetGiftType ~= 1 and (not buyGiftType or buyGiftType ~= targetGiftType) then
+        return Broadcast.sendErr(human, Lang.YUNYING_GET_ERR_CONDITION)
+    end
+
+    local itemArr = {}
+    for _, giftCfg in ipairs(giftArr) do
+        local state = getAwardState(human, targetGiftType, giftCfg.dayIdx)
+        if state == CommonDefine.COMMON_PRIZE_STATE_CANGET then
+            for _, itemInfo in ipairs(giftCfg.reward) do
+                itemArr[#itemArr+1] = { itemInfo[1], itemInfo[2] }
+            end
+
+            -- 记录领取
+            updateGetRecordData(human, targetGiftType, giftCfg.dayIdx)
+        end
+    end
+
+    if #itemArr == 0 then
+        return Broadcast.sendErr(human, Lang.HO_NO_CAN_GET)
+    end
+
+    -- 发放道具
+    BagLogic.addItemList(human, itemArr, LOGTYPE)
+
+    -- 更红点
+    updateRedDot(human)
+
+    -- 推送最新数给客户端
+    CommonActLoginGift_Query(human)
+end

+ 17 - 0
script/module/absAct/CommonActMoneyTree.lua

@@ -0,0 +1,17 @@
+-- 通用节日活动 - 摇钱树
+
+local Msg = require("core.Msg")
+local Grid = require("bag.Grid")
+local BagLogic = require("bag.BagLogic")
+local AbsActLogic = require("absAct.AbsActLogic")
+local Broadcast = require("broadcast.Broadcast")
+local Lang = require("common.Lang")
+local LoginGiftConfig = require("excel.commonact").loginreward
+local CommonDefine = require("common.CommonDefine")
+local Util = require("common.Util")
+local YunYingLogic = require("yunying.YunYingLogic")
+local AbsActExcel = require("excel.absAct")
+local BuyLogic = require("topup.BuyLogic")
+
+
+local LOGTYPE = "CommonActMoneyTree"

+ 13 - 0
script/module/absAct/Handler.lua

@@ -50,6 +50,8 @@ local CommonActBoss = require("absAct.CommonActBoss")
 local CommonActShop = require("absAct.CommonActShop")
 local CommonActCharge = require("absAct.CommonActCharge")
 local CommonActFindTreasure = require("absAct.CommonActFindTreasure")
+local CommonActLoginGift = require("absAct.CommonActLoginGift")
+local CommonActMoneyTree = require("absAct.CommonActMoneyTree")
 
 function CG_ABS_ACT_DETAIL_QUERY(human, msg)
     -- local Log = require("common.Log")
@@ -505,4 +507,15 @@ end
 
 function CG_ABS_FESTIVAL_SEVENDAY_CARD_DO(human, msg)
     CommonActFindTreasure.CommonActFindTreasure_Do(human, msg.nType)
+end
+
+
+----------------------------------------------------通用节日活动 — 登录豪礼 --------------------------------------------------
+
+function CG_ABS_COMONACT_LOGINGIFT_QUERY(human, msg)
+    CommonActLoginGift.CommonActLoginGift_Query(human)
+end
+
+function CG_ABS_COMONACT_LOGINGIFT_GET_REWARD(human, msg)
+    CommonActLoginGift.CommonActLoginGift_GetReward(human, msg.giftType)
 end

+ 32 - 4
script/module/absAct/Proto.lua

@@ -625,7 +625,7 @@ NdCustomNet = {
     {"id",1,"int"},            -- id
     {"fixed",2,ItemData},       -- 固定道具
     {"buyItem",2,BuyItem},      -- 购买信息  由于需求文档中表示有可购买和免费两种,故用数组,方便不填数据
-    {"first",10,ItemData},      -- 道具库1
+    {"first",15,ItemData},      -- 道具库1
     {"second",10,ItemData},     -- 道具库2
     {"third",10,ItemData},      -- 道具库3
     {"one",2,ItemData},         -- 道具1
@@ -1571,7 +1571,7 @@ CG_ABS_FESTIVAL_BOSS_REWARD = {}
 
 -- 回复奖励信息
 GC_ABS_FESTIVAL_BOSS_REWARD = {
-    {"tPrize",      25,     BOSSPRIZEINFO},      -- 奖励信息
+    {"tPrize",      30,     BOSSPRIZEINFO},      -- 奖励信息
 }
 
 -- 领取奖励
@@ -1583,7 +1583,7 @@ CG_ABS_FESTIVAL_SHOP_QUERY = {}
 
 -- 回复商店数据
 GC_ABS_FESTIVAL_SHOP_QUERY = {
-    {"tGoodInfo",   20,      GOODS},         -- 物品信息
+    {"tGoodInfo",   45,      GOODS},         -- 物品信息
 }
 
 -- 购买物品
@@ -1606,7 +1606,7 @@ CG_ABS_FESTIVAL_RECHARGE_QUERY = {}
 -- 回复累充数据
 GC_ABS_FESTIVAL_RECHARGE_QUERY = {
     {"nNowCharge",  1,      "int"},         -- 当前充值金额
-    {"tPrize",      25,     FESTIVALRECHARGEINFO},      -- 奖励信息
+    {"tPrize",      30,     FESTIVALRECHARGEINFO},      -- 奖励信息
 }
 
 -- 领取奖励
@@ -1636,4 +1636,32 @@ GC_ABS_FESTIVAL_SEVENDAY_CARD_QUERY = {
 -- 抽取
 CG_ABS_FESTIVAL_SEVENDAY_CARD_DO = {
     {"nType",       1,      "byte"},        -- 抽取类型 1-单抽 2-十连
+}
+
+
+---------------------节日活动 - 登录豪礼 -------------------
+
+COMONACT_LOGINGIFT_INFO = {
+    {"reward",          2,      ItemData},      -- 奖励信息
+    {"reallyDays",      1,      "short"},       -- 第几天
+    {"rewardState",     1,      "byte"},        -- 奖励状态, 0-不可领, 1-可领, 2-已领
+    {"buyMsg",	        1,      BuyItem},       -- buyID
+    {"giftType",        1,      "byte"},        -- 礼包类型, 1-登录豪礼, 2-68礼包, 3-128礼包, 4-328礼包, 5-648礼包
+}
+
+-- 查询
+CG_ABS_COMONACT_LOGINGIFT_QUERY = {}
+GC_ABS_COMONACT_LOGINGIFT_QUERY = {
+    {"giftDatafree",    5,     COMONACT_LOGINGIFT_INFO},      -- 奖励信息
+    {"giftData68",      5,     COMONACT_LOGINGIFT_INFO},      -- 奖励信息
+    {"giftData128",     5,     COMONACT_LOGINGIFT_INFO},      -- 奖励信息
+    {"giftData328",     5,     COMONACT_LOGINGIFT_INFO},      -- 奖励信息
+    {"giftData648",     5,     COMONACT_LOGINGIFT_INFO},      -- 奖励信息
+    {"isEnd",           1,      "byte"},                      -- 是否发完数据, 0-否, 1-是
+    {"isStart",         1,      "byte"},                      -- 是否是第一段数据, 0-否, 1-是
+}
+
+-- 领奖
+CG_ABS_COMONACT_LOGINGIFT_GET_REWARD= {
+    {"giftType",        1,      "byte"},        -- 礼包类型, 1-登录豪礼, 2-68礼包, 3-128礼包, 4-328礼包, 5-648礼包
 }

+ 9 - 4
script/module/anotherWorldBattle/AnotherWorldBattleCS.lua

@@ -1342,6 +1342,11 @@ function N2C_TryChallengdePoint_Req(msg)
     local targetCityId = msg.targetCityId
     local targetPointIdx = msg.targetPointIdx
 
+    local pChallengeTimes = getPlayerChallengeTimesInfo(playerUuid)
+    if pChallengeTimes <= 0 then
+        return errTips(msg.sourceServerId, playerUuid, AnotherWorldBattleDefine.ERR_CODE_12)
+    end
+
     local state = isCanChallengePoint(targetCityId, msg.targetPointIdx, msg.myUnionId, playerUuid)
     if state ~= 1 then
         return
@@ -1521,8 +1526,8 @@ local function challenge_Win(msg)
     -- end
     local pChallengeTimes, pLastTime = getPlayerChallengeTimesInfo(playerUuid)
     atkPlayerData.challengeTimes = pChallengeTimes - 1
-    if pLastTime == 0 then
-        pLastTime=  os.time()
+    if pLastTime <= 0 then
+        pLastTime = os.time()
     end
     atkPlayerData.lastTime = pLastTime
 
@@ -1597,8 +1602,8 @@ local function challenge_Fail(msg)
     -- end
     local pChallengeTimes, pLastTime = getPlayerChallengeTimesInfo(playerUuid)
     playerData.challengeTimes = pChallengeTimes - 1
-    if pLastTime == 0 then
-        pLastTime=  os.time()
+    if pLastTime <= 0 then
+        pLastTime = os.time()
     end
     playerData.lastTime = pLastTime
 

+ 4 - 1
script/module/anotherWorldBattle/AnotherWorldBattleDefine.lua

@@ -19,7 +19,7 @@ AB_OPEN_DAYS = 6                -- 每轮活动天数
 AB_JOIN_WDAY_AREA = {7, 1}      -- 报名时间范围, 周六 ~ 周日
 
 -- AB_BATTLE_WDAY_AREA = {2, 4}    -- 战斗时间范围, 周一 ~ 周三
-AB_BATTLE_WDAY_AREA = {2, 5}    -- 战斗时间范围, 周一 ~ 周四。(修改后需要同步修改 AB_BATTLE_DAYS )
+AB_BATTLE_WDAY_AREA = {2, 5}    -- 战斗时间范围, 周一 ~ 周四。(修改后需要同步修改 AB_BATTLE_DAYS, calcRewardNow() )
 
 AB_BATTLE_DAYS = 4              -- 战斗阶段天数
 
@@ -51,6 +51,8 @@ AB_POINT_BATTLE_TIME = 30        -- 挑战据点从发起战斗 ~ 结束时间,
 
 AB_MORALE_DURATION = 7200       -- 士气加成持续时间
 
+AB_MIN_ITEM_MAX_NUM = 800       -- 公会每分钟获得道具数量最大值
+
 
 AB_LOSE_POINT_MAIL_ID = 7031          -- 玩家失去据点后通知邮件Id
 
@@ -78,6 +80,7 @@ ERR_CODE_8 = 8      -- 公会已报名
 ERR_CODE_9 = 9      -- 没有在本城池发起集结
 ERR_CODE_10 = 10    -- 当前占据的据点已达上限
 ERR_CODE_11 = 11    -- 当前据点被挑战中, 请稍后再试
+ERR_CODE_12 = 12    -- 行动力不足
 
 
 

+ 53 - 4
script/module/anotherWorldBattle/AnotherWorldBattleNS.lua

@@ -200,7 +200,7 @@ local function calcPointAward(cityIdArr)
         end
     end
 
-    return myUnionAwardNum
+    return math.min(myUnionAwardNum, AnotherWorldBattleDefine.AB_MIN_ITEM_MAX_NUM)
 end
 
 -- 获取展示部位的固定Id
@@ -440,6 +440,32 @@ local function getRankAward(rankRewardList, rankType, targetRank)
     end
 end
 
+-- 计算整个战斗阶段占据据点的最大产出数量
+local function calcRewardMax()
+    local totalSec = AnotherWorldBattleDefine.AB_BATTLE_DAYS * 86400
+    totalSec = totalSec - AnotherWorldBattleDefine.AB_START_SEC -- 第一天0:10分才开始
+    totalSec = totalSec - (86400 - AnotherWorldBattleDefine.AB_BATTLE_END_SEC) -- 最后一天只到23点
+
+    local itemCntMax = math.floor(totalSec / 60) * AnotherWorldBattleDefine.AB_MIN_ITEM_MAX_NUM
+    return itemCntMax
+end
+
+-- 计算当前占领的据点最大产出数量
+local function calcRewardNow()
+    local now = os.time()
+    local toDayStartTime = Util.getDayStartTime(now)
+
+    local wDay = getWDay()
+    local subDay = wDay - AnotherWorldBattleDefine.AB_BATTLE_WDAY_AREA[1]
+
+    local battleStageStartTime = toDayStartTime - (subDay * 86400)
+    battleStageStartTime = battleStageStartTime + AnotherWorldBattleDefine.AB_START_SEC
+
+    local subSec = now - battleStageStartTime
+    local itemCntMax = math.floor(subSec / 60) * AnotherWorldBattleDefine.AB_MIN_ITEM_MAX_NUM
+    return itemCntMax
+end
+
 -- 生成奖励发放对象列表
 local function genAwardObjArr(unionOccupyInfo)
     local function calcMinute(timeArr)
@@ -493,6 +519,8 @@ local function genAwardObjArr(unionOccupyInfo)
     end
 
     -- 占领据点每分钟的奖励
+    local minuteAwardId, minuteAwardNum = 0, 0
+
     for _, pointInfo in ipairs(unionOccupyInfo.point2CityIdArr) do
         local cityId = pointInfo[1]
         local occupyTimeArr = pointInfo[2]
@@ -501,10 +529,18 @@ local function genAwardObjArr(unionOccupyInfo)
         local totalMinVal = calcMinute(occupyTimeArr)
         if totalMinVal > 0 then
             local itemId, itemNum = cityCfg.cityAward[1], cityCfg.cityAward[2]
-            itemList[itemId] = (itemList[itemId] or 0) + totalMinVal * itemNum
+            minuteAwardId = itemId
+            minuteAwardNum = minuteAwardNum + totalMinVal * itemNum
+            -- itemList[itemId] = (itemList[itemId] or 0) + totalMinVal * itemNum
         end
     end
 
+    local maxNum = calcRewardMax()
+    if maxNum > 0 then
+        minuteAwardNum = math.min(minuteAwardNum, maxNum)
+    end
+    itemList[minuteAwardId] = (itemList[minuteAwardId] or 0) + minuteAwardNum
+
 
     if item_185_Num > 0 then
         itemList[item_185_Id] = item_185_Num
@@ -1221,6 +1257,8 @@ function C2N_ErrTips(msg)
         tips = Lang.AB_OCCUPY_POINT_MAX
     elseif errCode == AnotherWorldBattleDefine.ERR_CODE_11 then
         tips = Lang.AB_POINT_CHALLENGING
+    elseif errCode == AnotherWorldBattleDefine.ERR_CODE_12 then
+        tips = Lang.AB_CHALLENGING_TIMES_NOT_ENOUGH
     end
 
     Broadcast.sendErr(human, tips)
@@ -1323,7 +1361,7 @@ function C2N_AllCity_Response(msg)
     end
 
 
-    -- 据点每分钟的奖励
+    -- 占领据点奖励
     local itemId, itemNum = 0, 0
     local cityCfg = AnotherWorldBattleConfig.city[1]
     itemId = cityCfg.cityAward[1]
@@ -1345,6 +1383,17 @@ function C2N_AllCity_Response(msg)
 
         itemNum = itemNum + minuteVal * cityCfg.cityAward[2]
     end
+
+    local itemNumMax = calcRewardMax()
+    local isRun = actStartTimeCheck()
+    local isBattle = isBattleStage()
+    if isRun and isBattle then
+        itemNumMax = calcRewardNow()
+    end
+    if itemNumMax > 0 then
+        itemNum = math.min(itemNum, itemNumMax)
+    end
+
     Grid.makeItem(msgRet.myUnionAward, itemId, itemNum)
 
     Msg.send(msgRet, human.fd)
@@ -1485,7 +1534,7 @@ function C2N_BaseCity_Response(msg)
     local myUnionAwardNum = calcPointAward(baseCityInfo.myUnionOccupyArr)
     Grid.makeItem(msgRet.myUnionAward, cityCfg.cityAward[1], myUnionAwardNum)
 
-    msgRet.cityIconId = baseCityInfo.occupyPointNum
+    -- msgRet.cityIconId = baseCityInfo.occupyPointNum
     msgRet.occupyPointNum = baseCityInfo.occupyPointNum
     msgRet.occupyCityLv2Num = baseCityInfo.occupyCityLv2Num
     msgRet.occupyCityLv3Num = baseCityInfo.occupyCityLv3Num

+ 1 - 1
script/module/anotherWorldBattle/Proto.lua

@@ -133,7 +133,7 @@ GC_AB_BASECITY_QUERY = {
     {"cityIconId",      1,      "int"},     -- 城池造型 Id
     {"cityAward",       1,      ItemData},  -- 当前城池每分钟产出道具信息
     {"myUnionAward",    1,      ItemData},  -- 本公会每分钟产出道具信息
-    {"occupyPointNum",  1,      "byte"},    -- 占领据点数量
+    {"occupyPointNum",  1,      "short"},   -- 占领据点数量
     {"occupyCityLv2Num",1,      "byte"},    -- 占领2级城池数量
     {"occupyCityLv3Num",1,      "byte"},    -- 占领3级城池数量
     {"occupyCityLv4Num",1,      "byte"},    -- 占领4级城池数量

+ 4 - 0
script/module/chat/Gm.lua

@@ -26,6 +26,7 @@ local FestivalSevenDayCardLogic = require("absAct.FestivalSevenDayCardLogic")
 local TreasureChestLogic = require("treasurechest.TreasureChestLogic")
 local MaiDianLogic = require("MaiDian.MaiDianLogic")
 local CommerceManger = require("serverCommerce.ServerCommerceManager")
+local CommonDefine = require("common.CommonDefine")
 
 local winner = require("winnerRelic.WinnerRelicLogic")
 local day = require("dailyTask.DailyTaskLogic")
@@ -756,6 +757,9 @@ function d3.buy(human,val)
 	end	
 	
 	local checkMoney = buyConf["CN"]
+	if human.phpChanelID and table.find(CommonDefine.SEA_CHANNEL_ARR, human.phpChanelID) then
+		checkMoney = buyConf["US"]
+	end
 	
 	local msg = {}
 	msg.logintype = 2

+ 17 - 8
script/module/combat/CombatLogic.lua

@@ -876,19 +876,19 @@ local function sendCombatBegin(human, combatInfo, isLogin)
 	msgRet.defUuid = combatInfo.defender and combatInfo.defender.uuid or ""
 	msgRet.maxRound = combatInfo.maxRound
  
-	msgRet.petCD = CombatDefine.PET_CD
+	-- msgRet.petCD = CombatDefine.PET_CD
 	msgRet.heros[0] = 0
     msgRet.atkFormation = combatInfo.atkFormation
     msgRet.defFormation = combatInfo.defFormation
-    msgRet.backup[0] = 2
+    -- msgRet.backup[0] = 2
 	for i = 1, CombatDefine.COMBAT_HERO_ALL_CNT do
 		local obj = combatInfo.objList[i]
 		if fontCombatHeroNet(msgRet.heros[msgRet.heros[0] + 1], obj) then
 			msgRet.heros[0] = msgRet.heros[0] + 1
 		end
-		if i % CombatDefine.COMBAT_HERO_CNT == 0 then
-			msgRet.backup[i/CombatDefine.COMBAT_HERO_CNT] = obj and obj.backupPos or 0
-		end
+		-- if i % CombatDefine.COMBAT_HERO_CNT == 0 then
+		-- 	msgRet.backup[i/CombatDefine.COMBAT_HERO_CNT] = obj and obj.backupPos or 0
+		-- end
 	end
 	msgRet.helps[0] = 0
 
@@ -924,10 +924,18 @@ local function sendCombatBegin(human, combatInfo, isLogin)
 			msgRet.bufferList[0] = msgRet.bufferList[0] + 1
 		end
 	end	
-	fontCombatPosAttr(msgRet.attrsAtk, combatInfo.posAttr[1])
-	fontCombatPosAttr(msgRet.attrsDef, combatInfo.posAttr[2])	
+	-- fontCombatPosAttr(msgRet.attrsAtk, combatInfo.posAttr[1])
+	-- fontCombatPosAttr(msgRet.attrsDef, combatInfo.posAttr[2])	
+	-- msgRet.atkJibanDesc = JibanLogic.getDesc(combatInfo.jiban[CombatDefine.ATTACK_SIDE])
+	-- msgRet.defJibanDesc = JibanLogic.getDesc(combatInfo.jiban[CombatDefine.DEFEND_SIDE])
+	Msg.send(msgRet, human.fd)
+end
+
+-- 发送羁绊描述
+local function sendJibanDesc(human, combatInfo)
+	local msgRet = Msg.gc.GC_COMBAT_JiBan_DESC
 	msgRet.atkJibanDesc = JibanLogic.getDesc(combatInfo.jiban[CombatDefine.ATTACK_SIDE])
-	msgRet.defJibanDesc = JibanLogic.getDesc(combatInfo.jiban[CombatDefine.DEFEND_SIDE]) 
+	msgRet.defJibanDesc = JibanLogic.getDesc(combatInfo.jiban[CombatDefine.DEFEND_SIDE])
 	Msg.send(msgRet, human.fd)
 end
 
@@ -1079,6 +1087,7 @@ end
 -- 发送战斗开始
 function sendCombatData(human, combatInfo, isLogin)
 	sendCombatBegin(human, combatInfo, isLogin)
+	sendJibanDesc(human, combatInfo)
 	sendCombatFrame(human, combatInfo, isLogin)
 end
 

+ 12 - 6
script/module/combat/Proto.lua

@@ -210,24 +210,30 @@ GC_COMBAT_BEGIN = {
 	{"cmdList",			16,		CombatCmdConf},	    -- 战斗中使用过的作用
 	{"bufferList",		60,	    CombatBufferConf},	-- 战斗中使用过的技能
 	{"speed",			1,		"byte"},
-	{"attrsAtk",	    10,	     Attr},
-	{"attrsDef",	    10,	     Attr},
+	-- {"attrsAtk",	    10,	     Attr},
+	-- {"attrsDef",	    10,	     Attr},
 	{"atkName",		    1,	     "string"},
 	{"defName",		    1,	     "string"},
     {"atkUuid",		    1,	     "string"},
 	{"defUuid",		    1,	     "string"},
 	{"maxRound",		1,		"short"},
     {"isVideo",		    1,		"byte"},
-	{"petCD",		    1,		"short"},
-	{"atkJibanDesc",	1,		"string"},
-	{"defJibanDesc",	1,		"string"},
+	-- {"petCD",		    1,		"short"},
+	-- {"atkJibanDesc",	1,		"string"},
+	-- {"defJibanDesc",	1,		"string"},
     {"atkFormation",	1,		"short"},
     {"defFormation",	1,		"short"},
     {"isQuick",	        1,		"byte"},
-	{"backup",			2,		"byte"},	--第一个是攻方援军的站位,第二个是守方援军的站位。0值表示援军还没上
+	-- {"backup",			2,		"byte"},	--第一个是攻方援军的站位,第二个是守方援军的站位。0值表示援军还没上
 	--{"isBoss",			1,		"byte"},		-- 敌方是否是boss
 }
 
+GC_COMBAT_JiBan_DESC = {
+	{"atkJibanDesc",	1,		"string"},
+	{"defJibanDesc",	1,		"string"},
+}
+
+
 CombatHitNet = {
 	{"pos",			1,		"byte"},
 	{"flag",		1,		"byte"},

+ 2 - 2
script/module/copy/CopyLogic.lua

@@ -570,7 +570,7 @@ function checkCombatPos(human, args)
 	    	human.db.copy[copyType].buyCnt = human.db.copy[copyType].buyCnt + 1
 	    end
     else
-		if leftCnt < 1 then
+		--if leftCnt < 1 then
 			local canBuy = getCanBuyCnt(human, copyType)
 			if canBuy < 1 then
 				return Broadcast.sendErr(human, Lang.COPY_FIGHT_ERR_NO_CNT) 
@@ -588,7 +588,7 @@ function checkCombatPos(human, args)
 			human.db.copy[copyType] = human.db.copy[copyType] or {}
 			human.db.copy[copyType].buyCnt =  human.db.copy[copyType].buyCnt or 0
 			human.db.copy[copyType].buyCnt = human.db.copy[copyType].buyCnt + canBuy
-		end
+		--end
     end
 
 	return true, id, copyConfig

+ 30 - 30
script/module/drill/DrillLogic.lua

@@ -111,8 +111,8 @@ local CHALLENGE_DIAMONS = 500  -- 使用钻石通过当前关卡需要的钻石
 
 --秘宝加成
 local function getTalismanAdd(human)
-	local jinbiAdd = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
-	return jinbiAdd
+	local heroExpMul = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_HERO_EXP) or 0) / 100
+	return heroExpMul
 end
 
 
@@ -308,7 +308,7 @@ function checkSaoDang(human, diff, lastDiff, lastId)
     local rewardCnt = double and 2 or 1
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 
 	if lastDiff and lastDiff == diff and lastId > 10 then
 		id = lastId - 10
@@ -320,8 +320,8 @@ function checkSaoDang(human, diff, lastDiff, lastId)
 			for _, item in ipairs(drillItems) do
 				local itemID = item[1]
 				local itemCnt = item[2] * rewardCnt
-				if itemID == ItemDefine.ITEM_JINBI_ID then
-					itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+				if itemID == ItemDefine.ITEM_GREEN_EXP_ID then
+					itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 				end
 
 				drillDB.dayGet = drillDB.dayGet or {}
@@ -479,7 +479,7 @@ function queryDrillId(human, drillData, openPanel)
 	local boxCount = math.min(#DrillExcel.box, 5)
 	msgRet.box[0] = boxCount
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 	for k = 1, boxCount do
 		local config = DrillExcel.box[k]
 		local net = msgRet.box[k]	
@@ -496,14 +496,14 @@ function queryDrillId(human, drillData, openPanel)
 		net.state = getBoxState(drill,  k)
 		local itemID1  = config["items"..diff][1][1]
 		local itemCnt1 = config["items"..diff][1][2]
-		if itemID1 == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			itemCnt1 = itemCnt1 + math.ceil(itemCnt1 * talismanAdd_jinbi)
+		if itemID1 == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+			itemCnt1 = itemCnt1 + math.ceil(itemCnt1 * heroExpMul)
 		end
 
 		local itemID2  = config["items"..diff][2][1]
 		local itemCnt2 = config["items"..diff][2][2]
-		if itemID2 == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			itemCnt2 = itemCnt1 + math.ceil(itemCnt2 * talismanAdd_jinbi)
+		if itemID2 == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+			itemCnt2 = itemCnt1 + math.ceil(itemCnt2 * heroExpMul)
 		end
 
 		Grid.makeItem(net.reward[1], itemID1,  itemCnt1 )
@@ -513,8 +513,8 @@ function queryDrillId(human, drillData, openPanel)
 		if config["items"..diff][3] then
 			local itemID3  = config["items"..diff][3][1]
 			local itemCnt3 = config["items"..diff][3][2]
-			if itemID3 == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-				itemCnt3 = itemCnt1 + math.ceil(itemCnt3 * talismanAdd_jinbi)
+			if itemID3 == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+				itemCnt3 = itemCnt1 + math.ceil(itemCnt3 * heroExpMul)
 			end
 
 			Grid.makeItem(net.reward[3], itemID3,  itemCnt3 )
@@ -614,7 +614,7 @@ function query(human, drillId)
 	end
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 
 	local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_1204)
 	local rewardCnt = double and 2 or 1
@@ -636,8 +636,8 @@ function query(human, drillId)
 	for _, item in pairs(itemConfig) do
 		msgRet.reward[0] = msgRet.reward[0] + 1
 		local itemCnt = item[2] * rewardCnt
-		if item[1] == ItemDefine.ITEM_JINBI_ID then
-			itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+		if item[1] == ItemDefine.ITEM_GREEN_EXP_ID then
+			itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 		end
 		Grid.makeItem(msgRet.reward[msgRet.reward[0]], item[1], itemCnt)
 		--Grid.makeItem(msgRet.reward[msgRet.reward[0]], item[1], item[2] * rewardCnt)
@@ -786,13 +786,13 @@ function drillBoxGet(human, index)
 	end
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 	local awardVec = {}
 	for i, v in ipairs(itemConfig) do
 		local itemID = v[1]
 		local itemCnt = v[2]
-		if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+		if itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+			itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 		end
 		awardVec[i]= {itemID, itemCnt}
 	end
@@ -813,7 +813,7 @@ function rewardPreview(human)
     msgRet.list[0] = 0
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 
     for drillId, cf in pairs(DrillExcel.drill) do 
     	msgRet.list[0] = msgRet.list[0] + 1
@@ -823,8 +823,8 @@ function rewardPreview(human)
 		for i, item in ipairs(cf.items) do
 		    local itemID = item[1]
 		    local itemCnt = item[2]
-			if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-				itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+			if itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+				itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 			end
 	        Grid.makeItem(net.items[i], itemID, itemCnt)
 		end
@@ -1609,15 +1609,15 @@ function onFightEnd(human, result, combatType, cbParam, combatInfo)
 	combatInfo.double = double and 2 or 0
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 
 	-- 关卡奖励		
 	local itemList = {}
 	for k, item in ipairs(drillItems) do
 		local itemID = item[1]
 		local itemCnt = item[2] * rewardCnt
-		if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+		if itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+			itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 		end
 
 		itemList[k] = {}
@@ -1766,15 +1766,15 @@ function ChallengeLevelByDiamond(human, levelId)
 	local rewardCnt = double and 2 or 1
 
 	--秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 
 	-- 关卡奖励		
 	local itemArray = {}
 	for k, item in ipairs(drillItems) do
 		local itemID = item[1]
 		local itemCnt = item[2] * rewardCnt
-		if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+		if itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpMul > 0 then
+			itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 		end
 
 		itemArray[k] = {itemID, itemCnt}
@@ -1903,7 +1903,7 @@ function oneClickSaodang(human)
 	local rewardCnt = double and 2 or 1
 	
 	-- 秘宝加成
-	local talismanAdd_jinbi = getTalismanAdd(human)
+	local heroExpMul = getTalismanAdd(human)
 	
 	-- 初始化今日奖励
 	drill.dayGet = drill.dayGet or {}
@@ -1918,8 +1918,8 @@ function oneClickSaodang(human)
 			for _, item in ipairs(drillItems) do
 				local itemID = item[1]
 				local itemCnt = item[2] * rewardCnt
-				if itemID == ItemDefine.ITEM_JINBI_ID then
-					itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
+				if itemID == ItemDefine.ITEM_GREEN_EXP_ID then
+					itemCnt = itemCnt + math.ceil(itemCnt * heroExpMul)
 				end
 				
 				-- 累加奖励到列表

+ 5 - 0
script/module/hero/HeroSeed.lua

@@ -11,6 +11,7 @@ local Broadcast = require("broadcast.Broadcast")
 local RoleDefine = require("role.RoleDefine")
 local TalismanLogic = require("talisman.TalismanLogic")
 
+local GiftLogic
 
 local LOGTAG = "HeroSeed" --日志标识
 local HAVE_SEED_HERO_MIN_STAR = 10 --英雄获得种子的最低星级要求
@@ -342,4 +343,8 @@ function HeroSeed_UpGrade(human, heroID, heroIndex, seedIdx, opType)
     HeroLogic.sendHeroBagDynamic(human, heroID, heroIndex)
     ObjHuman.sendAttr(human, RoleDefine.ZHANDOULI)
     HeroLogic.refreshDot(human, heroGrid.uuid)
+
+    -- 弹窗礼包
+    GiftLogic = GiftLogic or require("topup.GiftLogic")
+    GiftLogic.trigger(human, GiftLogic.GIFT_HEROSEED_UPGRADE_STAR, {currentVal = heroGrid.seedData[seedIdx]}, GiftLogic.GIFT_SEC_TYPE3)
 end

+ 5 - 0
script/module/hero/HeroTianYuan.lua

@@ -11,6 +11,7 @@ local HeroTianYuanCfg = require("excel.heroTianYuan")
 local Broadcast = require("broadcast.Broadcast")
 local RoleDefine = require("role.RoleDefine")
 
+local GiftLogic
 
 local LOGTAG = "HeroTianYuan" --日志标识
 
@@ -403,4 +404,8 @@ function HeroTianYuan_StageUpGrade(human, heroID, heroIndex)
 
     -- 刷新红点
     HeroLogic.refreshDot(human, heroGrid.uuid)
+
+    -- 弹窗礼包
+    GiftLogic = GiftLogic or require("topup.GiftLogic")
+    GiftLogic.trigger(human, GiftLogic.GIFT_HEROTIANYUAN_UPGRADE_STAR, {currentVal = nextStage}, GiftLogic.GIFT_SEC_TYPE1)
 end

+ 2 - 2
script/module/hero/Proto.lua

@@ -1005,10 +1005,10 @@ GC_HEROTY_QUERY = {
 	{"pointIdx",	1,		"short"}, 	-- 当前已点亮的天元点索引
 	{"stageIdx",	1,		"short"}, 	-- 当前已突破的重数
 	{"stageMax",	1,		"short"}, 	-- 最大可突破重数
-	{"attrs",		6,		Attr}, 		-- 总加成属性
+	{"attrs",		8,		Attr}, 		-- 总加成属性
 	{"cost", 		1,     ItemData},	-- 点亮/突破消耗的道具,没法升级后数量为0
 	{"maxPoint",	1,		"short"}, 	-- 最大可点亮天元点数量
-	{"nextAttrs",	6,		Attr}, 		-- 下一次提升的属性
+	{"nextAttrs",	8,		Attr}, 		-- 下一次提升的属性
 }
 
 -- 点亮天元

+ 2 - 2
script/module/role/CreateRole.lua

@@ -34,7 +34,7 @@ local ROLE_NAME_LEN_MIN = 5
 local OP_RET_SUCC = 1
 local OP_RET_FAIL = 0
 
-
+local GodsAreaNS
 local AnotherWorldBattleNS
 
 -- 特定渠道用户创角时发送的邮件ID
@@ -192,7 +192,7 @@ function changeName(human, roleName)
 
 	TriggerLogic.PublishEvent(TriggerDefine.CHANGE_NAME, human.db._id, 1)
 
-	local GodsAreaNS = require("godsArea.GodsAreaNS")
+	GodsAreaNS = GodsAreaNS or require("godsArea.GodsAreaNS")
 	GodsAreaNS.UpdateShowData(human, 1)
 
 	AnotherWorldBattleNS = AnotherWorldBattleNS or require("anotherWorldBattle.AnotherWorldBattleNS")

+ 1 - 1
script/module/talisman/TalismanLogic.lua

@@ -42,7 +42,7 @@ OTHER_EFFECT_TBL = {
     ["NW_JB"] = "NW_JB",                            --女巫森林金币类型
     ["NW_HERO_EXP"] = "NW_HERO_EXP",                --女巫森林英雄经验类型
     ["NW_LHS"] = "NW_LHS",                          --女巫森林龙魂石
-    ["DRILL_JINBI"] = "DRILL_JINBI",                --勇者试炼金币类型
+    ["DRILL_HERO_EXP"] = "DRILL_HERO_EXP",          --勇者试炼英雄经验
     ["ZHANBU_MAX_POINTS"] = "ZHANBU_MAX_POINTS",    --占卜最大积分类型
     ["JYZH_LOTTERY10"] = "JYZH_LOTTERY10",          --精英召唤10连类型
     ["NW_FWJH"] = "NW_FWJH",                        --女巫森林符文精华

+ 17 - 0
script/module/topup/GiftLogic.lua

@@ -17,6 +17,7 @@ local GC_QUERY_GIFT = 51
 -- 次类型
 GIFT_SEC_TYPE1 = 1
 GIFT_SEC_TYPE2 = 2
+GIFT_SEC_TYPE3 = 3
 
 -- 礼包触发事件
 local PRINCIPAL_LINE_EVNET = 1 -- 主线推图
@@ -29,6 +30,9 @@ GIFT_WINNERRELIC_UPGRADE_STAR = 6   -- 圣遗物升星
 GIFT_ELF_UPGRADE_STAR = 7           -- 精灵升星
 GIFT_HERO_UPGRADE_STAR_DAILY = 8    -- 英雄升星, 每日只可触发一次, 可与 Upgrade_HERO_EVENT 同时触发
 
+GIFT_HEROSEED_UPGRADE_STAR = 9      -- 英雄种子
+GIFT_HEROTIANYUAN_UPGRADE_STAR = 10 -- 英雄天元
+
 GIFT_TALISMAN_OPEN = 15           -- 开启秘宝玩法
 GIFT_WINNERRELIC_OPEN = 16        -- 开启圣遗物玩法
 GIFT_ELF_OPEN = 17                -- 开启精灵玩法
@@ -272,6 +276,19 @@ local handler2 = {
             end
         end
     end,
+
+    [GIFT_SEC_TYPE3] = function (human, param, eventType)
+        for id,cfg in pairs(GiftExcel) do
+            -- 触发新礼包
+            if cfg.trigger == eventType and cfg.param[1] <= param.currentVal and (not dailyEventList[eventType] or dailyEventCheck(human, id)) then
+                genGift(human,id)
+
+                if dailyEventList[eventType] then
+                    updateDailyEventRecord(human, id)
+                end
+            end
+        end
+    end,
 }
 
 ---------------------------------------------------------------

+ 7 - 1
script/module/voucher/VoucherShopLogic.lua

@@ -26,6 +26,7 @@ local TopupLogic =require("topup.TopupLogic")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 local VouchProConf = require("excel.voucherPro").probability
+local CommonDefine = require("common.CommonDefine")
 
 -- 商店配置
 local tVoucherShopCof = nil
@@ -423,11 +424,16 @@ function VoucherShop_BuyItem(human, nBuyID, nBuyNum)
     -- 删物品
     BagLogic.delItem(human, VoucherShopDefine.VOUCHERITME_ID, nDelVoucherNum, "voucher_use")
 
+    local reallyPrice = tTrueBuyConfig.CN
+    if human.phpChanelID and table.find(CommonDefine.SEA_CHANNEL_ARR, human.phpChanelID) then
+		reallyPrice = tTrueBuyConfig.US
+	end
+
     -- 发道具
     local tBuyInfo = 
     {
         buyID = nBuyID,
-        price = tTrueBuyConfig.CN,
+        price = reallyPrice,
         buyNum = nBuyNum,
     }