From c82bf80c543ddc6bada1e3085acb8ab9ee7b13db Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 28 十一月 2025 14:26:33 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(A340下发已完成的成就)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py | 69 +++++++++++++++++++++++++---------
1 files changed, 51 insertions(+), 18 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
index e2df3ab..e0ec257 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
@@ -21,11 +21,15 @@
import ShareDefine
import PlayerControl
import IpyGameDataPY
+import PlayerActivity
import PlayerBillboard
import PlayerZhanling
import ItemControler
+import PlayerBeauty
import PlayerArena
+import PlayerGubao
import PyGameData
+import PlayerTask
import FBCommon
import ChConfig
@@ -37,8 +41,8 @@
'''
playerID = curPlayer.GetPlayerID()
matchIDList = PyGameData.g_arenaPlayerMatchDict.get(playerID, [])
- #if tagPlayerID in matchIDList:
- # return matchIDList.index(tagPlayerID)
+ if tagPlayerID in matchIDList:
+ return matchIDList.index(tagPlayerID)
gameRecMgr = DBDataMgr.GetGameRecMgr()
atkRecMgr = gameRecMgr.GetRecTypeIDMgr(ShareDefine.Def_GameRecType_ArenaRecord, playerID)
@@ -65,7 +69,9 @@
if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_ArenaTicket, 1):
return
- return True
+ PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_ArenaBattle)
+
+ return True, funcLineID
def GetFBPlayerLineupID(curPlayer, mapID, funcLineID):
## 获取玩家使用的攻防阵容ID
@@ -122,24 +128,18 @@
atkAddScore, defDecScore = winScoreInfo
GameWorld.DebugLog("scoreIndex=%s,winScoreInfo=%s" % (scoreIndex, winScoreInfo), playerID)
- if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_ArenaTicket, 1):
- return
-
# 无论胜负,只要挑战都给固定奖励
- awardItemList = IpyGameDataPY.GetFuncEvalCfg("ArenaSet", 4)
- ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["Arena", False, {}], isNotifyAward=False)
-
- __updArenaBatRecord(curPlayer, turnFight, tagPlayerID, isWin, atkAddScore, defDecScore)
-
+ awardItemList = []
+ awardItemList += IpyGameDataPY.GetFuncEvalCfg("ArenaSet", 4)
+ exItemRate, exItemID = PlayerBeauty.GetBeautyEffInfo(curPlayer, PlayerBeauty.EffType_ArenaItemEx) # 概率额外获得1个物品
+ if exItemRate and exItemID:
+ 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,
FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(awardItemList)})
- PlayerArena.Sync_ArenaInfo(curPlayer)
-
- # 战斗结束系统强制刷新匹配
- PlayerArena.DoArenaMatchRefresh(curPlayer, True, isSys=True)
-
- PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_ArenaCnt, 1)
+ turnFight.awardData = [tagPlayerID, isWin, atkAddScore, defDecScore, awardItemList]
return
def __updArenaBatRecord(curPlayer, turnFight, tagPlayerID, isWin, atkAddScore, defDecScore):
@@ -152,6 +152,11 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ArenaScore, updScore)
GameWorld.DebugLog("score=%s,atkAddScore=%s,updScore=%s" % (score, atkAddScore, updScore), playerID)
+ if isWin:
+ 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
gameRecMgr = DBDataMgr.GetGameRecMgr()
atkRecMgr = gameRecMgr.GetRecTypeIDMgr(ShareDefine.Def_GameRecType_ArenaRecord, playerID)
@@ -174,7 +179,7 @@
# 被击方
if tagPlayerID < ShareDefine.RealPlayerIDStart:
- GameWorld.DebugLog("目标非真实玩家不处理! tagPlayerID=%s" % tagPlayerID, playerID)
+ #GameWorld.DebugLog("目标非真实玩家不处理! tagPlayerID=%s" % tagPlayerID, playerID)
return
# 以战斗记录作为最新积分的更新记录,支持离线玩家上线后更新最新积分
@@ -208,3 +213,31 @@
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
--
Gitblit v1.8.0