From 8a5cd920235eefda418bba0e949ba522cab72a4c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 11 八月 2022 16:18:29 +0800
Subject: [PATCH] 9685 【后台】开服时间整合(清档完毕后入库存档)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py | 82 +++++++++++++++++++++++++++++++++-------
1 files changed, 67 insertions(+), 15 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
index 79a64da..5de75dc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossBattlefield.py
@@ -4,12 +4,12 @@
#
##@package Player.PlayerCrossBattlefield
#
-# @todo:跨服战场
+# @todo:跨服战场/古神战场
# @author hxp
# @date 2022-01-06
# @version 1.0
#
-# 详细描述: 跨服战场
+# 详细描述: 跨服战场/古神战场
#
#-------------------------------------------------------------------------------
#"""Version = 2022-01-06 20:30"""
@@ -27,6 +27,7 @@
import NetPackCommon
import ItemControler
import PlayerActivity
+import PlayerSuccess
def DoPlayerLogin(curPlayer):
@@ -52,6 +53,7 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_EnterCountWeek, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_BuyOpenCountWeek, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_HighScoreTotalWeek, 0)
+ SyncCrossBattlefieldPlayerInfo(curPlayer)
return
#// C1 09 跨服战场购买开启场次 #tagCMCrossBattlefieldBuyOpen
@@ -62,6 +64,7 @@
# BYTE Hour; //战场开启时
# BYTE Minute; //战场开启分
# BYTE Faction; //阵营 1-红;2-蓝
+# BYTE ServerOnly; //是否仅本服玩家可加入,0-否,1-是
#};
def OnCrossBattlefieldBuyOpen(index, clientData, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
@@ -69,6 +72,7 @@
hour = clientData.Hour
minute = clientData.Minute
faction = clientData.Faction
+ serverOnly = clientData.ServerOnly
if GameWorld.IsCrossServer():
GameWorld.DebugLog("跨服服务器无法发起匹配!", playerID)
@@ -122,6 +126,7 @@
return
dataMsg = {"openHour":hour, "openMinute":minute, "faction":faction, "todayBuyOpenCount":todayBuyOpenCount,
+ "serverOnly":serverOnly,
"accID":curPlayer.GetAccID(),
"playerID":playerID,
"playerName":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
@@ -158,14 +163,14 @@
todayBuyOpenCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_BuyOpenCountToday)
updTodayBuyOpenCount = todayBuyOpenCount + 1
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_BuyOpenCountToday, updTodayBuyOpenCount)
- SyncCrossBattlefieldPlayerInfo(curPlayer)
isSameWeek = GameWorld.CheckTimeIsSameWeek(buyTime)
if isSameWeek:
weekBuyOpenCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_BuyOpenCountWeek)
updWeekBuyOpenCount = weekBuyOpenCount + 1
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_BuyOpenCountWeek, updWeekBuyOpenCount)
-
+ SyncCrossBattlefieldPlayerInfo(curPlayer)
+
GameWorld.Log("购买召集跨服战场结果: openHour=%s,openMinute=%s,faction=%s,updTodayBuyOpenCount=%s,updWeekBuyOpenCount=%s,buyTime=%s,isToday=%s,isSameWeek=%s"
% (openHour, openMinute, faction, updTodayBuyOpenCount, updWeekBuyOpenCount, GameWorld.ChangeTimeNumToStr(buyTime), isToday, isSameWeek), playerID)
@@ -192,41 +197,88 @@
# 固定礼包
buyAwardItemList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldBuyOpen", 3)
ItemControler.GivePlayerItemOrMail(curPlayer, buyAwardItemList)
+
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_CallOpen, 1)
return
def __DoBattlefieldOver(curPlayer, dataMsg):
playerID = curPlayer.GetPlayerID()
- overTime, highScoreToday, highScoreWeekTotal, enterCountWeek, isCallEnter = dataMsg
-
+ overTime, \
+ isWinner, faction, rank, score, highScoreToday, highScoreWeekTotal, enterCountWeek, \
+ isCallOpen, isCalled, killCnt, ckillCntInfo, killBossCnt, killScoreKing, killGuardCnt, auraScore, superItemAwardCnt, \
+ factionBuffCollCnt, personBuffCollCnt, crystalCollCnt, wallCollCnt = dataMsg
+
isToday = GameWorld.CheckTimeIsSameServerDayEx(overTime)
isSameWeek = GameWorld.CheckTimeIsSameWeek(overTime)
- GameWorld.Log("跨服战场结算玩家结果: highScoreToday=%s,highScoreWeekTotal=%s,enterCountWeek=%s,isCallEnter=%s,overTime=%s,isToday=%s,isSameWeek=%s"
- % (highScoreToday, highScoreWeekTotal, enterCountWeek, isCallEnter, GameWorld.ChangeTimeNumToStr(overTime), isToday, isSameWeek), playerID)
+ GameWorld.Log("跨服战场结算玩家结果: highScoreToday=%s,highScoreWeekTotal=%s,enterCountWeek=%s,overTime=%s,isToday=%s,isSameWeek=%s"
+ % (highScoreToday, highScoreWeekTotal, enterCountWeek, GameWorld.ChangeTimeNumToStr(overTime), isToday, isSameWeek), playerID)
+ GameWorld.Log(" isWinner=%s,faction=%s,rank=%s,score=%s,isCallOpen=%s,isCalled=%s" % (isWinner, faction, rank, score, isCallOpen, isCalled), playerID)
+ GameWorld.Log(" killCnt=%s,ckillCntInfo=%s,killBossCnt=%s,killScoreKing=%s,killGuardCnt=%s,auraScore=%s,superItemAwardCnt=%s"
+ % (killCnt, ckillCntInfo, killBossCnt, killScoreKing, killGuardCnt, auraScore, superItemAwardCnt), playerID)
+ GameWorld.Log(" factionBuffCollCnt=%s,personBuffCollCnt=%s,crystalCollCnt=%s,wallCollCnt=%s"
+ % (factionBuffCollCnt, personBuffCollCnt, crystalCollCnt, wallCollCnt), playerID)
if isToday:
addCnt = 1
- # 非召集进入的需要增加日常次数
- if not isCallEnter:
- PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossBattlefield, addCnt)
- # 召集进入由于是免费进入,不许要增加日常次数,直接增加日常活跃
- else:
+ # 召集进入由于是免费进入,不需要增加日常次数,直接增加日常活跃
+ if isCallOpen or isCalled:
activityNum = PlayerActivity.GetActivityNum(PlayerActivity.RelatedType_1, ShareDefine.DailyActionID_CrossBattlefield)
PlayerActivity.AddActivityFinishCnt(curPlayer, activityNum, None, addCnt)
+ # 非召集兑入进入的需要增加日常次数
+ else:
+ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossBattlefield, addCnt)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_HighScoreToday, highScoreToday)
- SyncCrossBattlefieldPlayerInfo(curPlayer)
if isSameWeek:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_EnterCountWeek, enterCountWeek)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Battlefield_HighScoreTotalWeek, highScoreWeekTotal)
-
+ SyncCrossBattlefieldPlayerInfo(curPlayer)
+
+ # 成就
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_Join, 1)
+ if isCalled:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_Called, 1)
+ if isWinner:
+ if faction == ShareDefine.CampType_Justice:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_WinJ, 1)
+ elif faction == ShareDefine.CampType_Evil:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_WinE, 1)
+ if killCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_KillCnt, killCnt)
+ for ckillCnt, addCnt in ckillCntInfo.items():
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_CKillCnt, addCnt, [ckillCnt])
+ if killBossCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_KillBoss, killBossCnt)
+ if killScoreKing > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_KillScoreKing, killScoreKing)
+ if killGuardCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_KillGuard, killGuardCnt)
+ if score > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_Score, score)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_ScoreMore, 1, [score])
+ if auraScore > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_AuraScore, auraScore)
+ if superItemAwardCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_SuperItem, superItemAwardCnt)
+ if factionBuffCollCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_FactionBuff, factionBuffCollCnt)
+ if personBuffCollCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_PersonBuff, personBuffCollCnt)
+ if crystalCollCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_Crystal, crystalCollCnt)
+ if wallCollCnt > 0:
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_Wall, wallCollCnt)
return
def SyncCrossBattlefieldPlayerInfo(curPlayer):
clientPack = ChPyNetSendPack.tagMCCrossBattlefieldPlayerInfo()
clientPack.BuyOpenCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_BuyOpenCountToday)
clientPack.HighScoreToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_HighScoreToday)
+ clientPack.EnterCountWeek = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_EnterCountWeek)
+ clientPack.BuyOpenCountWeek = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_BuyOpenCountWeek)
+ clientPack.HighScoreTotalWeek = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Battlefield_HighScoreTotalWeek)
NetPackCommon.SendFakePack(curPlayer, clientPack)
return
--
Gitblit v1.8.0