| | |
| | | |
| | | playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossTrialID % actNum) # 玩家身上的活动ID |
| | | |
| | | __CheckActItemRecycle(curPlayer) # 必须在活动ID更新之前处理 |
| | | # 活动ID 相同的话不处理 |
| | | if actID == playerActID: |
| | | GameWorld.DebugLog("Boss历练活动ID不变,不处理! actID=%s" % actID, curPlayer.GetPlayerID()) |
| | |
| | | |
| | | playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_BossTrialID) # 玩家身上的活动ID |
| | | |
| | | __CheckActItemRecycle(curPlayer) # 必须在活动ID更新之前处理 |
| | | # 活动ID 相同的话不处理 |
| | | if actID == playerActID: |
| | | GameWorld.DebugLog("跨服Boss历练活动ID不变,不处理!cfgID=%s,dayIndex=%s,actID=%s" % (cfgID, dayIndex, actID), playerID) |
| | |
| | | Sync_CrossActBossTrialActionInfo(curPlayer) |
| | | return True |
| | | |
| | | def __CheckActItemRecycle(curPlayer): |
| | | ## 检查活动物品回收,玩家所有参与过的活动ID都结束后才处理 |
| | | |
| | | if IsInActBossTrial(curPlayer): |
| | | # 还有活动中,标记待回收,如果一直有交替的活动开启中,则该状态一直为等待回收状态 |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossTrialRecycleState, 1) |
| | | return |
| | | |
| | | playerID = curPlayer.GetPlayerID() |
| | | recycleState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossTrialRecycleState) |
| | | if not recycleState: |
| | | # 这样可以兼容回收功能上线后,确保老玩家之前屯的活动物品不会被回收,至少可以参与一次 |
| | | GameWorld.DebugLog("Boss历练活动玩家没有标记过等待回收活动物品,不处理!", playerID) |
| | | return |
| | | |
| | | if recycleState == 2: |
| | | # 因为结束参与及活动结束都会触发检查,所以需要标记已处理过,防止一次活动多次回收 |
| | | GameWorld.DebugLog("Boss历练活动已回收过活动物品!", playerID) |
| | | return |
| | | |
| | | actItemID = IpyGameDataPY.GetFuncCfg("BossTrial", 1) |
| | | clearCountDict = ItemControler.ClearItemID(curPlayer, [actItemID]) |
| | | clearCount = clearCountDict.get(actItemID, 0) |
| | | GameWorld.Log("Boss历练活动回收活动物品! actItemID=%s,clearCount=%s" % (actItemID, clearCount), playerID) |
| | | if clearCount > 0: |
| | | addMoney = clearCount |
| | | PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_BossTrial, addMoney, "BossTrialRecycle") |
| | | paramList = [clearCount, actItemID, actItemID, addMoney] |
| | | PlayerControl.SendMailByKey("BossTrialRecycle", [playerID], [], paramList) |
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BossTrialRecycleState, 2) |
| | | return |
| | | |
| | | def CheckActItemAutoTransform(curPlayer, tagItem, itemID, tagItemCount): |
| | | ## 检查活动物品自动转化为对应积分,物品实例外部统一清理 |
| | | if itemID != IpyGameDataPY.GetFuncCfg("BossTrial", 1): |
| | | return False |
| | | if IsInActBossTrial(curPlayer): |
| | | return False |
| | | GameWorld.DebugLog("Boss历练活动非参与中,自动回收获得的活动物品! itemID=%s,itemCount=%s" % (itemID, tagItemCount)) |
| | | PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_BossTrial, tagItemCount, "BossTrialRecycle") |
| | | return True |
| | | |
| | | def IsInActBossTrial(curPlayer): |
| | | ## 是否有正在参与中的进行中活动 |
| | | return PlayerControl.IsInOperationAction(curPlayer, ShareDefine.OperationActionName_BossTrial, ChConfig.Def_PDict_BossTrialID, |
| | | ShareDefine.CrossActName_BossTrial, ChConfig.Def_PDict_CA_BossTrialID) |
| | | |
| | | def SendToGameServer_BossTrial(curPlayer, msgType, dataMsg=""): |
| | | playerID = curPlayer.GetPlayerID() |
| | | msgList = str([msgType, dataMsg]) |
| | |
| | | |
| | | crossActInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_BossTrial) |
| | | if crossActInfo.get(ShareDefine.ActKey_State, 0): |
| | | if not crossActInfo.get(ShareDefine.ActKey_StateJoin): |
| | | if crossActInfo.get(ShareDefine.ActKey_StateJoin) != ShareDefine.ActStateJoin_Start: |
| | | GameWorld.Log("跨服Boss历练非参与活动中: actNum=%s" % actNum, playerID) |
| | | return |
| | | else: |
| | | if not actInfo.get(ShareDefine.ActKey_StateJoin): |
| | | if actInfo.get(ShareDefine.ActKey_StateJoin) != ShareDefine.ActStateJoin_Start: |
| | | GameWorld.Log("Boss历练非参与活动中: actNum=%s" % actNum, playerID) |
| | | return |
| | | |