| | |
| | | import ShareDefine
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | | import PlayerActivity
|
| | | import PlayerBillboard
|
| | | import PlayerViewCache
|
| | | import PlayerZhanling
|
| | | import ItemControler
|
| | | import PlayerBeauty
|
| | |
| | | return
|
| | |
|
| | | PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_ArenaBattle)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAArenaBattle, 1)
|
| | |
|
| | | return True, funcLineID
|
| | |
|
| | | def GetFBPlayerLineupID(curPlayer, mapID, funcLineID):
|
| | | ## 获取玩家使用的攻防阵容ID
|
| | | # @return: 攻击方阵容ID, 防守方阵容ID
|
| | | return ShareDefine.Lineup_Arena, ShareDefine.Lineup_ArenaDef
|
| | | return ShareDefine.Lineup_ArenaAtk, ShareDefine.Lineup_ArenaDef
|
| | |
|
| | | def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
|
| | | ## 回合战斗结束
|
| | | def OnTurnFightAward(curPlayer, guid, mapID, funcLineID, winFaction, statMsg, dateStr, reqData, awardDict):
|
| | | ## 回合战斗结算奖励
|
| | | if not curPlayer:
|
| | | return
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tagPlayerID = turnFight.tagPlayerID
|
| | | isWin = turnFight.isWin
|
| | | tagPlayerID = reqData[1]
|
| | | isWin = winFaction == ChConfig.Def_FactionA
|
| | |
|
| | | canAtkRet = __checkCanAtkTagPlayer(curPlayer, tagPlayerID)
|
| | | GameWorld.DebugLog("结算竞技场! isWin=%s,tagPlayerID=%s,canAtkRet=%s" % (isWin, tagPlayerID, canAtkRet), playerID)
|
| | |
| | | if GameWorld.CanHappen(exItemRate):
|
| | | awardItemList.append([exItemID, 1])
|
| | | GameWorld.DebugLog("红颜概率额外获得1个物品: exItemRate=%s, exItemID=%s, awardItemList=%s" % (exItemRate, exItemID, awardItemList))
|
| | | overMsg.update({"tagPlayerID":tagPlayerID, "atkAddScore":atkAddScore, "defDecScore":defDecScore,
|
| | | awardDict.update({"tagPlayerID":tagPlayerID, "atkAddScore":atkAddScore, "defDecScore":defDecScore,
|
| | | FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(awardItemList)})
|
| | |
|
| | | turnFight.awardData = [tagPlayerID, isWin, atkAddScore, defDecScore, awardItemList]
|
| | | GameWorld.DebugLog("竞技场结算奖励: tagPlayerID=%s,isWin=%s,atkAddScore=%s,defDecScore=%s,awardItemList=%s" % (tagPlayerID, isWin, atkAddScore, defDecScore, awardItemList))
|
| | | if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_ArenaTicket, 1):
|
| | | return
|
| | | |
| | | # 无论胜负,只要挑战都给固定奖励
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["Arena", False, {}], isNotifyAward=False)
|
| | | |
| | | __updArenaBatRecord(curPlayer, tagPlayerID, isWin, atkAddScore, defDecScore)
|
| | | |
| | | PlayerArena.Sync_ArenaInfo(curPlayer)
|
| | | |
| | | # 战斗结束系统强制刷新匹配
|
| | | PlayerArena.DoArenaMatchRefresh(curPlayer, True, isSys=True)
|
| | | |
| | | PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_ArenaCnt, 1)
|
| | | PlayerGubao.AddGubaoSpecEffLayer(curPlayer, PlayerGubao.GubaoEffType_Arena, 1)
|
| | | PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_Arena, 1)
|
| | | return
|
| | |
|
| | | def __updArenaBatRecord(curPlayer, turnFight, tagPlayerID, isWin, atkAddScore, defDecScore):
|
| | | def __updArenaBatRecord(curPlayer, tagPlayerID, isWin, atkAddScore, defDecScore):
|
| | | ## 更新战斗相关日志、榜单等
|
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
| | | winCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ArenaWinCnt)
|
| | | updWinCnt = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ArenaWinCnt, winCnt + 1)
|
| | | GameWorld.DebugLog("updWinCnt=%s" % (updWinCnt), playerID)
|
| | | |
| | | tagViewCache = turnFight.tagViewCache
|
| | | |
| | | tagViewCache = PlayerViewCache.FindViewCache(tagPlayerID)
|
| | | |
| | | gameRecMgr = DBDataMgr.GetGameRecMgr()
|
| | | atkRecMgr = gameRecMgr.GetRecTypeIDMgr(ShareDefine.Def_GameRecType_ArenaRecord, playerID)
|
| | | recData = atkRecMgr.AddRecData(maxCount)
|
| | |
| | | PlayerArena.SetRecAtkType(recData, PlayerArena.RecAtkType_Atk)
|
| | | PlayerArena.SetRecTagPlayerID(recData, tagPlayerID)
|
| | | PlayerArena.SetRecIsWin(recData, isWin)
|
| | | PlayerArena.SetRecFace(recData, tagViewCache.GetFace())
|
| | | PlayerArena.SetRecFacePic(recData, tagViewCache.GetFacePic())
|
| | | PlayerArena.SetRecRealmLV(recData, tagViewCache.GetRealmLV())
|
| | | PlayerArena.SetRecLV(recData, tagViewCache.GetLV())
|
| | | PlayerArena.SetRecFace(recData, tagViewCache.GetFace() if tagViewCache else 0)
|
| | | PlayerArena.SetRecFacePic(recData, tagViewCache.GetFacePic() if tagViewCache else 0)
|
| | | PlayerArena.SetRecRealmLV(recData, tagViewCache.GetRealmLV() if tagViewCache else 1)
|
| | | PlayerArena.SetRecLV(recData, tagViewCache.GetLV() if tagViewCache else 1)
|
| | | # 名字、变更积分 +-、战力
|
| | | # 战力统一记录防守阵容
|
| | | fightPower = TurnAttack.GetCacheLineupFightPower(tagViewCache, ShareDefine.Lineup_ArenaDef)
|
| | | recData.SetUserData({"Name":tagViewCache.GetPlayerName(), "AddScore":atkAddScore, "FightPower":fightPower})
|
| | | fightPower = TurnAttack.GetCacheLineupFightPower(tagViewCache, ShareDefine.Lineup_ArenaDef) if tagViewCache else 0
|
| | | tagPlayerName = tagViewCache.GetPlayerName() if tagViewCache else ""
|
| | | recData.SetUserData({"Name":tagPlayerName, "AddScore":atkAddScore, "FightPower":fightPower})
|
| | | # 攻击方仅在积分变更或者初始积分时更新榜单
|
| | | if atkAddScore or updScore == IpyGameDataPY.GetFuncCfg("ArenaSet", 1):
|
| | | PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_Arena, updScore)
|
| | |
| | | PlayerArena.SetRecRealmLV(recData, curPlayer.GetOfficialRank())
|
| | | PlayerArena.SetRecLV(recData, curPlayer.GetLV())
|
| | | # 名字、变更积分 +-、战力
|
| | | fightPower = TurnAttack.GetPlayerLineupFightPower(curPlayer, ShareDefine.Lineup_ArenaDef)
|
| | | fightPower = TurnAttack.GetPlayerLineupFightPower(curPlayer, ShareDefine.Lineup_ArenaAtk)
|
| | | recData.SetUserData({"Name":curPlayer.GetPlayerName(), "AddScore":-defDecScore, "FightPower":fightPower})
|
| | | if defDecScore: # 防守方仅变更时更新
|
| | | PlayerBillboard.UpdateBillboardByID(tagPlayerID, ShareDefine.Def_BT_Arena, updScore)
|
| | | return
|
| | |
|
| | | def OnTurnFightAward(curPlayer, turnFight, mapID, funcLineID, awardData):
|
| | | ## 回合战斗结算奖励
|
| | | if not curPlayer:
|
| | | return
|
| | | |
| | | if not awardData:
|
| | | return
|
| | | |
| | | tagPlayerID, isWin, atkAddScore, defDecScore, awardItemList = awardData
|
| | | GameWorld.DebugLog("竞技场结算奖励: tagPlayerID=%s,isWin=%s,atkAddScore=%s,defDecScore=%s,awardItemList=%s" % (tagPlayerID, isWin, atkAddScore, defDecScore, awardItemList))
|
| | | if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_ArenaTicket, 1):
|
| | | return
|
| | | |
| | | # 无论胜负,只要挑战都给固定奖励
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["Arena", False, {}], isNotifyAward=False)
|
| | | |
| | | __updArenaBatRecord(curPlayer, turnFight, tagPlayerID, isWin, atkAddScore, defDecScore)
|
| | | |
| | | PlayerArena.Sync_ArenaInfo(curPlayer)
|
| | | |
| | | # 战斗结束系统强制刷新匹配
|
| | | PlayerArena.DoArenaMatchRefresh(curPlayer, True, isSys=True)
|
| | | |
| | | PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_ArenaCnt, 1)
|
| | | PlayerGubao.AddGubaoSpecEffLayer(curPlayer, PlayerGubao.GubaoEffType_Arena, 1)
|
| | | PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_Arena, 1)
|
| | | return
|