Quellcode durchsuchen

周活动-抽卡 和 寻星幸运奖励不重置

SCFC vor 1 Jahr
Ursprung
Commit
103e2e603d

+ 2 - 0
script/common/ProtoID.lua

@@ -1284,6 +1284,8 @@ _ENV[1283]="CG_WEEKLOOP_ACT_GUYUGETPRIZE"
 _ENV[1284]="CG_WEEKLOOP_ACT_CARDQUERY"
 _ENV[1285]="GC_WEEKLOOP_ACT_CARDQUERY"
 _ENV[1286]="CG_WEEKLOOP_ACT_CARDGETPRIZE"
+_ENV[1287]="CG_WEEKLOOP_ACT_RANK_QUERY"
+_ENV[1288]="GC_WEEKLOOP_ACT_RANK_QUERY"
 _ENV[1301]="CG_XIANZHI_SHOP_QUERY"
 _ENV[1302]="GC_XIANZHI_SHOP_QUERY"
 _ENV[1303]="CG_XIANZHI_SHOP_BUY"

+ 11 - 0
script/core/ObjHuman.lua

@@ -793,4 +793,15 @@ function refresh()
         --活动开启邮件提示
         RoleSystemLogic.checkMailTips(human)
 	end
+end
+
+-- GM角色立即存库
+function GM_SaveDB(human)
+	if not human then
+		return
+	end
+
+	local now = Timer.now
+	human.saveDBTime = now
+	local ret, err = pcall(save, human)
 end

+ 5 - 0
script/module/WeekendLoopActivity/Handler.lua

@@ -42,4 +42,9 @@ end
 
 function CG_WEEKLOOP_ACT_CARDGETPRIZE(human, msg)
     WeekLoopActCard.WeekActCard_GetPrize(human)
+end
+
+
+function CG_WEEKLOOP_ACT_RANK_QUERY(human, msg)
+   
 end

+ 36 - 1
script/module/WeekendLoopActivity/Proto.lua

@@ -110,4 +110,39 @@ GC_WEEKLOOP_ACT_CARDQUERY =
 }
 
 -- 请求领取抽卡奖励
-CG_WEEKLOOP_ACT_CARDGETPRIZE = {}
+CG_WEEKLOOP_ACT_CARDGETPRIZE = {}
+
+----------------------------------------- 累计充值相关协议开始 -------------------------------------
+WeekLoopActRankList = {
+    {"rank",                1,         "int"},      -- 名次(-1未上榜)
+    {"rankNeedValue",       1,         "int"},      -- 上榜条件值
+    {"items",               5,         ItemData},   -- 排行名次奖励列表    
+    {"uid",                 1,         "string"},   -- 用户id(未上榜为"")
+    {"name",                1,         "string"},   -- 角色名(未上榜为"")
+    {"head",                1,         "int"},      -- 头像(未上榜为-1)  
+    {"rankValue",           1,         "int"},      -- 当前排名值     
+    {"headFrame",           1,         "int"},      -- 头像框(未上榜为-1)     
+}
+
+WeekLoopActOnwerData = {
+    {"rank",             1,          "int"},        -- 名次(-1未上榜)
+    {"rankValue",        1,          "int"},        -- 当前排名值
+    {"items",            5,         ItemData},      -- 档位奖励列表(未上榜没有奖励) 
+}
+
+WeekLoopActRankPrizeList = {
+    {"minRank",             1,          "int"},     -- 最小排名
+    {"maxRank",             1,          "int"},     -- 最大排名
+    {"rankNeedValue",       1,          "int"},     -- 上榜条件值
+    {"items",               5,          ItemData},  -- 档位区间奖励列表
+} 
+
+-- 排行榜查询
+CG_WEEKLOOP_ACT_RANK_QUERY = {}
+
+-- 排行榜查询 - 回包
+GC_WEEKLOOP_ACT_RANK_QUERY = {                  
+    {"list",            10,         WeekLoopActRankList},            -- 排行名次列表
+    {"ownerData",       1,          WeekLoopActOnwerData},           -- 自己排名数据
+    {"list",            10,         WeekLoopActRankPrizeList},     -- 奖励详情列表
+}

+ 30 - 7
script/module/WeekendLoopActivity/WeekendLoopActCard.lua

@@ -74,7 +74,7 @@ end
 -- 获取抽卡类型
 local function WeekActCard_GetCardType(human)
     if not human then
-        print("[WeekActCard_SetHeroID] 参数不正确")
+        print("[WeekActCard_GetCardType] 参数不正确")
         return -1
     end
 
@@ -111,7 +111,7 @@ local function WeekActCard_ResetPrize(human)
         return false
     end
 
-    local nNowType = WeekActCard_GetCardType()
+    local nNowType = WeekActCard_GetCardType(human)
     if -1 >= nNowType then
         print("[WeekActCard_ResetPrize] 获取抽卡类型失败")
         return false
@@ -139,11 +139,11 @@ local function WeekActCard_GetDBPrize(human)
         return nil
     end
 
-    if not human.db.tWeekGuYuPrize then
+    if not human.db.tWeekCardPrize then
         return nil
     end
     
-    return human.db.tWeekGuYuPrize
+    return human.db.tWeekCardPrize
 end
 
 -- 获取奖励ID状态
@@ -168,6 +168,7 @@ local function WeekActCard_SetPrizeStatus(human, nID, nStatus)
 
     local tPrize = WeekActCard_GetDBPrize(human)
     if not tPrize or not tPrize[nID] then
+        print("[WeekActCard_SetPrizeStatus] 获取不到对应的奖励表 "..nID.." nStatus = "..nStatus)
         return false
     end
 
@@ -191,7 +192,7 @@ end
 -- 获取抽卡数量
 local function WeekActCard_GetCardNum(human)
     if not human then
-        print("[WeekActCard_SetHeroID] 参数不正确")
+        print("[WeekActCard_GetCardNum] 参数不正确")
         return -1
     end
 
@@ -296,6 +297,7 @@ function WeekActCard_UseCard(human, nAddNum, nType)
     end
 
     local nNowType = WeekActCard_GetCardType(human)
+    print("[WeekActCard_UseCard] nNowType = "..nNowType.." nType = "..nType)
     if nNowType ~= nType then
         return
     end
@@ -322,7 +324,10 @@ function WeekActCard_UseCard(human, nAddNum, nType)
         local nStatus = WeekActCard_GetPrizeStatus(human, nID)
         if nNowCard >= v.nNum and WeekLoopActDef.WEEKACT_STATE_NONE == nStatus then
             bChange = true
-            WeekActCard_SetPrizeStatus(human, nID, WeekLoopActDef.WEEKACT_STATE_CANGET)
+            local bRet = WeekActCard_SetPrizeStatus(human, nID, WeekLoopActDef.WEEKACT_STATE_CANGET)
+            if false == bRet then
+                print("[WeekActCard_UseCard] 设置失败 nID = "..nID.." nStatus = "..nStatus.." num = "..v.nNum)
+            end
         end
     end
 
@@ -332,6 +337,24 @@ function WeekActCard_UseCard(human, nAddNum, nType)
     end
 end
 
+-- 获取名称
+function GetName(human)
+    if not human then
+        return WeekLoopActDef.TWEEKACT_CARD_PANELID_NAME[1]
+    end
+
+    local nNowCardType = WeekActCard_GetCardType(human)
+    if -1 >= nNowCardType then
+        return WeekLoopActDef.TWEEKACT_CARD_PANELID_NAME[1]
+    end
+
+    if not WeekLoopActDef.TWEEKACT_CARD_PANELID_NAME[nNowCardType] then
+        return WeekLoopActDef.TWEEKACT_CARD_PANELID_NAME[1]
+    end
+
+    return WeekLoopActDef.TWEEKACT_CARD_PANELID_NAME[nNowCardType]
+end
+
 ----------------------------------------- 客户端请求 -------------------------------------
 -- 客户端请求-抽卡信息
 function WeekActCard_Query(human)
@@ -383,7 +406,7 @@ function WeekActCard_GetPrize(human)
     local DBID = human.db._id
     local szName = human.db.name
 
-    local tConfig = WeekActCard_GetConfigByHuman()
+    local tConfig = WeekActCard_GetConfigByHuman(human)
     if not tConfig then
         print("[WeekActCard_GetPrize] 获取不到配置 DBID = "..DBID.." name = "..szName)
         return

+ 9 - 2
script/module/WeekendLoopActivity/WeekendLoopActDefine.lua

@@ -37,5 +37,12 @@ WEEKACT_CARD_TYPE_LEN = 3   -- 抽卡轮询长度
 WEEKACT_CARD_PRIZEID_LEN = 10   -- 抽卡ID长度
 
 WEEKACT_CARD_TYPE_HIGH = 1      -- 高级召唤
-WEEKACT_CARD_TYPE_TIANMING = 2  -- 天命召唤
-WEEKACT_CARD_TYPE_FINDSTAR = 3  -- 寻星
+WEEKACT_CARD_TYPE_FINDSTAR = 2  -- 寻星
+WEEKACT_CARD_TYPE_TIANMING = 3  -- 天命召唤
+
+WEEKACT_CARD_PANELID = 9103
+TWEEKACT_CARD_PANELID_NAME = {
+    [1] = "限时高级召唤",
+    [2] = "限时寻星",
+    [3] = "限时天命召唤",
+}

+ 12 - 1
script/module/WeekendLoopActivity/WeekendLoopActManager.lua

@@ -69,8 +69,14 @@ function WeekLoopACT_SendActInfo(human)
         local bRed = false
         if tWeekActModuel[id] and tWeekActModuel[id].isRed then
             bRed = tWeekActModuel[id].isRed(human)
-        end
 
+        end
+        
+        -- 特殊处理的命名
+        if WeekLoopActDef.WEEKACT_CARD_PANELID == v.panelID and tWeekActModuel[id] and tWeekActModuel[id].GetName then
+            tActData.name = tWeekActModuel[id].GetName(human)
+        end
+        
         tActData.nRed = bRed and 1 or 0
     end
 
@@ -425,6 +431,7 @@ function onDrawCard(human, funcID, parameter, parameter2)
         return
     end
 
+    print("[onDrawCard] 高级召唤回调 parameter = "..parameter)
     weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_HIGH)
 end
 
@@ -438,6 +445,8 @@ function onTMDrawCard(human, funcID, parameter, parameter2)
         return
     end
 
+    print("[onDrawCard] 天命召唤回调 parameter = "..parameter)
+
     weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_TIANMING)
 end
 
@@ -450,6 +459,8 @@ function onFindStar(human, funcID, parameter, parameter2)
     if false == WeekLoopACT_IsRun() then
         return
     end
+    
+    print("[onDrawCard] 寻星回调 parameter = "..parameter)
 
     weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_FINDSTAR)
 end

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

@@ -1842,4 +1842,8 @@ end
 
 function d3.resetweek(human)
 	WeekendLoopActManger.GMResetWeekAct(human)
+end
+
+function d3.savedb(human)
+	ObjHuman.GM_SaveDB(human)
 end

+ 1 - 1
script/module/zhuanpan/Handler.lua

@@ -7,7 +7,7 @@ end
 
 -- 刷新
 function CG_ZHUANPAN_REFRESH(human, msg)
-	ZhuanpanLogic.refresh(human, msg.type, true)
+	ZhuanpanLogic.refresh(human, msg.type, true, true)
 end
 
 -- 抽奖

+ 35 - 9
script/module/zhuanpan/ZhuanpanLogic.lua

@@ -79,14 +79,19 @@ function query(human, mainType)
 	local oldCnt = getCntByType(human, mainType)
 
 	local oldLuck 
+	local tOldStatus = nil
 	if	human.db.zhuanpan and human.db.zhuanpan[mainType] then 
 		oldLuck = human.db.zhuanpan[mainType].luck
+		if human.db.zhuanpan[mainType].luckStatus then
+			tOldStatus = Util.copyTable(human.db.zhuanpan[mainType].luckStatus)			
+		end
 	end
+
 	-- 更新 
 	update(human, mainType)
 	
 	-- 初始化
-	initDB(human, mainType, oldCnt,oldLuck)
+	initDB(human, mainType, oldCnt,oldLuck, tOldStatus)
 
     local zuanpan = human.db.zhuanpan[mainType]	
 	
@@ -204,21 +209,26 @@ function query(human, mainType)
 	Msg.send(msgRet, human.fd)
 end
 
-function refresh(human, mainType, needTime)
+function refresh(human, mainType, needTime, bRefreshLuck)
 	if not ZhuanpanExcel[mainType] then
 		return
 	end	
 	
     local oldCnt = getCntByType(human, mainType)
 	local oldLuck 
+	local tOldStatus = nil
 	if	human.db.zhuanpan and human.db.zhuanpan[mainType] then 
 		oldLuck = human.db.zhuanpan[mainType].luck
+		if human.db.zhuanpan[mainType].luckStatus and not bRefreshLuck then
+			tOldStatus = Util.copyTable(human.db.zhuanpan[mainType].luckStatus)			
+		end
 	end
+
     -- 更新 
 	update(human, mainType)
 	
 	-- 初始化
-	initDB(human, mainType, oldCnt,oldLuck)
+	initDB(human, mainType, oldCnt,oldLuck,tOldStatus)
 	
 	-- 判断是否免费
     if needTime then
@@ -290,14 +300,19 @@ function getReward(human, mainType, cnt)
 	
 	local oldCnt = getCntByType(human, mainType)
 	local oldLuck 
-	if	human.db.zhuanpan and human.db.zhuanpan[mainType] then 
+	local tOldStatus = nil
+	if human.db.zhuanpan and human.db.zhuanpan[mainType] then 
 		oldLuck = human.db.zhuanpan[mainType].luck
+		if human.db.zhuanpan[mainType].luckStatus then
+			tOldStatus = Util.copyTable(human.db.zhuanpan[mainType].luckStatus)			
+		end
 	end
+
 	-- 更新 
 	update(human, mainType)
 	
 	-- 初始化
-	initDB(human, mainType, oldCnt,oldLuck)
+	initDB(human, mainType, oldCnt,oldLuck, tOldStatus)
 	
 	local zhuanpan = human.db.zhuanpan[mainType]
 	if not BagLogic.checkItemCnt(human, needItemID, needItemCnt) then
@@ -504,21 +519,28 @@ function getLuckDrawSingle(human, mainType)
 	end	
 end
 
-function initDB(human, mainType, cnt,oldluck)
+function initDB(human, mainType, cnt, oldluck, tOldStatus)
 	if human.db.zhuanpan ~= nil and 
        human.db.zhuanpan[mainType] ~= nil then 
 		return 
 	end 
     local now = os.time()
+
 	human.db.zhuanpan = human.db.zhuanpan or {}
 	human.db.zhuanpan[mainType] = {}
+
     local dayStartTime = Util.getDayStartTime(now)
 	human.db.zhuanpan[mainType].ts1 = dayStartTime
 	human.db.zhuanpan[mainType].ts2 = now - DEFAULT_FREE_REFRESH_TIME
 	human.db.zhuanpan[mainType].cnt = cnt
 	human.db.zhuanpan[mainType].luck = oldluck
 	human.db.zhuanpan[mainType].free = 1
-	human.db.zhuanpan[mainType].luckStatus = {}
+	if tOldStatus then
+		human.db.zhuanpan[mainType].luckStatus = tOldStatus
+	else
+		human.db.zhuanpan[mainType].luckStatus = {}
+	end
+	
 	addRandomReward(human, mainType)
 end
 
@@ -647,10 +669,14 @@ end
 
 function getFree(human)
 	local oldLuck 
-	if	human.db.zhuanpan and human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL] then 
+	local tOldStatus = nil
+	if human.db.zhuanpan and human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL] then 
 		oldLuck = human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL].luck
+		if human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL].luckStatus then
+			tOldStatus = Util.copyTable(human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL].luckStatus)			
+		end
 	end
-    initDB(human,DEFAULT_ZHUANPAN_TYPE_NORMAL,nil,oldLuck)
+    initDB(human,DEFAULT_ZHUANPAN_TYPE_NORMAL,nil, oldLuck,tOldStatus)
     if human.db.zhuanpan[DEFAULT_ZHUANPAN_TYPE_NORMAL].free ~= 1 then
         return
     end