From 9c5f7ba286ee8fa87f9e348624fee2127b3fe85a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 04 十二月 2025 15:45:44 +0800
Subject: [PATCH] 369 【活动内容】开服冲榜-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py | 35 ------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py | 22 +++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 11 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 18 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py | 99 +++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py | 47 +++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 1
12 files changed, 201 insertions(+), 45 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index cc573b3..dd38543 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3084,7 +3084,6 @@
Def_PlayerKey_Frist_Lock = "Frist_Lock" # 是否接受了任务1
Def_PlayerKey_TaskExpRewardMultiple = "TaskExpRewardMultiple" # 任务经验奖励倍值
Def_PlayerKey_BuyItemCnt = "BuyItemCnt" # 购买物品数量
-Def_PlayerKey_QueryOpenServerAwardState = "QueryOpenServerAwardState" # 查询开服奖励状态
Def_PlayerKey_QueryMarkIdCardIndex = 'QueryMarkIdCardIndex' # 指定账号生成卡类型
Def_PlayerKey_QueryNewGuyCardType = 'QueryNewGuyCardType' # 查询的新手卡类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
index 8ff5db8..309a4f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Billboard.py
@@ -26,7 +26,7 @@
GameWorld.DebugAnswer(curPlayer, errInfo)
GameWorld.DebugAnswer(curPlayer, "新增榜单假数据: Billboard 类型 分组值1 分组值2 条数 比较值1可选参数(比较值2 常规值1~5)")
GameWorld.DebugAnswer(curPlayer, "删除榜单假数据: Billboard 类型 分组值1 分组值2")
- GameWorld.DebugAnswer(curPlayer, "输出排行榜数据: Billboard p 类型 分组值1 分组值2")
+ GameWorld.DebugAnswer(curPlayer, "输出排行榜数据: Billboard p 类型 [分组值1 值2 从x名 到x名]")
GameWorld.DebugAnswer(curPlayer, "注:如果没有特殊说明,本服榜单分组值均为0,跨服榜单分组值1为分区ID,分组2为0")
nameTypeList = ShareDefine.BillboardNameDict.keys()
@@ -137,7 +137,7 @@
return
def __GetBillTypeSign(billboardType, groupValue1, groupValue2):
- billTypeSign = "Type:%s" % billboardType
+ billTypeSign = "%s" % billboardType
if groupValue1:
billTypeSign = "%s-%s" % (billTypeSign, groupValue1)
if groupValue2:
@@ -145,7 +145,7 @@
return billTypeSign
def __logFackData(curPlayer, gmList):
- ## 输出排行榜数据: Billboard p 类型 分组值1 分组值2
+ ## 输出排行榜数据: Billboard p 类型 分组值1 分组值2 名次A 到B
if len(gmList) <= 1:
GameWorld.DebugAnswer(curPlayer, "榜单数据条数总览")
billboardMgr = DBDataMgr.GetBillboardMgr()
@@ -164,6 +164,8 @@
billboardType = gmList[1]
groupValue1 = gmList[2] if len(gmList) > 2 else 0
groupValue2 = gmList[3] if len(gmList) > 3 else 0
+ fromRank = gmList[4] if len(gmList) > 4 else 0
+ toRank = gmList[5] if len(gmList) > 5 else 0
billboardMgr = DBDataMgr.GetBillboardMgr()
billboardObj = billboardMgr.GetBillboard(billboardType, groupValue1, groupValue2)
billboardObj.SortDelayDo()
@@ -171,16 +173,24 @@
maxDataCount = billboardObj.GetMaxCount()
idOrderDict = billboardObj.GetIDOrderDict()
+ printDebugCnt = 0
billTypeSign = __GetBillTypeSign(billboardType, groupValue1, groupValue2)
- GameWorld.DebugAnswer(curPlayer, "榜单数据(%s)条数: %s/%s 详见日志" % (billTypeSign, curDataCount, maxDataCount))
+ bName = ShareDefine.BillboardNameDict[billboardType]
+ GameWorld.DebugAnswer(curPlayer, "%s(%s)条数: %s/%s 详见日志" % (bName, billTypeSign, curDataCount, maxDataCount))
for index in range(curDataCount):
bbData = billboardObj.At(index)
dataID = bbData.GetID()
rank = idOrderDict.get(dataID, 0)
+ if (fromRank and rank < fromRank) or (toRank and rank > toRank):
+ continue
+ cmpValues = [bbData.GetCmpValue(), bbData.GetCmpValue2(), bbData.GetCmpValue3()]
valueList = [getattr(bbData, "GetValue%s" % num)() for num in range(1, 9)]
- GameWorld.DebugLog("%s,rank=%s,ID=%s,CmpValue=%s,CmpValue2=%s,Value=%s"
- % (index, rank, dataID, bbData.GetCmpValue(), bbData.GetCmpValue2(), valueList), curPlayer.GetPlayerID())
+ if printDebugCnt < 20:
+ printDebugCnt += 1
+ GameWorld.DebugAnswer(curPlayer, "%s,ID:%s,榜值:%s" % (rank, dataID, cmpValues))
+ GameWorld.DebugLog("%s,rank=%s,ID=%s,CmpValues=%s,Value=%s"
+ % (index, rank, dataID, cmpValues, valueList), curPlayer.GetPlayerID())
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py
index cbe9b1e..90ee62e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearOpenServerDay.py
@@ -15,40 +15,9 @@
#"""Version = 2025-05-15 10:35"""
#-------------------------------------------------------------------------------
-import GameWorld
-import ShareDefine
-import GameWorldEvent
-import PlayerSignDay
-import DBDataMgr
-import ChPlayer
+import ServerDay
-import time
-
-#---------------------------------------------------------------------
-## 执行逻辑
-# @param curPlayer 当前玩家
-# @param cmdList 参数
-# @return None
-# @remarks 函数详细说明.
def OnExec(curPlayer, cmdList):
- #重置开服天,设置非合服
- DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerWeek, 0)
- DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerDay, 0)
- DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_IsMixServer, 0)
- DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_MixServerDay, 0)
-
- curTime = int(time.time())
- GameWorldEvent.SetInitOpenServerTime(curTime)
-
- if curPlayer:
- ChPlayer.Sync_OpenServerDay(curPlayer)
- ServerDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
- IsMixServer = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_IsMixServer)
- MixDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_MixServerDay) + 1
- OpenWeekday = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OpenServerWeekday)
- GameWorld.DebugAnswer(curPlayer, '开服星期%s, 天数:%s 是否合服:%s, 合服天数:%s' % (OpenWeekday, ServerDay, IsMixServer, MixDay))
- PlayerSignDay.ResetDaySign(curPlayer)
-
- # 暂时同步GameServer,之后可去除
+ ServerDay.OnExec(curPlayer, [1])
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
index 57cea70..84e07aa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ServerDay.py
@@ -60,6 +60,7 @@
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_ServerDay, 0)
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_IsMixServer, 0)
DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_MixServerDay, 0)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OSAAwardState, 0)
curTime = int(time.time())
GameWorldEvent.SetInitOpenServerTime(curTime)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py
index 2b7b51c..1c3f017 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnDay.py
@@ -18,10 +18,12 @@
import GameWorld
import PlayerEventCounter
import GameWorldEvent
+import ServerDay
def OnExec(curPlayer, gmList):
__DoExec(GameWorld.GetGameWorld().GetTick())
-
+
+ ServerDay.__printServerDay(curPlayer)
# 暂时同步GameServer,之后可去除
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index 8af5d3d..91fe638 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -29,6 +29,7 @@
import PlayerControl
import FunctionNPCCommon
import PlayerActBuyCountGift
+import OpenServerActivity
import PlayerActLoginNew
import PlayerActTask
import ItemControler
@@ -45,6 +46,8 @@
ShareDefine.GameFuncID_Shop:lambda curObj:FunctionNPCCommon.DoShopOpen(curObj),
ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
ShareDefine.GameFuncID_Travel:lambda curObj:PlayerTravel.DoTravelOpen(curObj),
+ ShareDefine.GameFuncID_OSA_MainLevel:lambda curObj:OpenServerActivity.DoOSA_MainLevel(curObj),
+ ShareDefine.GameFuncID_OSA_HeroCall:lambda curObj:OpenServerActivity.DoOSA_HeroCall(curObj),
}
def GetFuncOpenLVIpyData(funcID): return IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py
new file mode 100644
index 0000000..253c496
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/OpenServerActivity.py
@@ -0,0 +1,99 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.OpenServerActivity
+#
+# @todo:开服活动
+# @author hxp
+# @date 2025-12-04
+# @version 1.0
+#
+# 详细描述: 开服活动
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-04 16:00"""
+#-------------------------------------------------------------------------------
+
+import DBDataMgr
+import ShareDefine
+import GameFuncComm
+import IpyGameDataPY
+import PlayerBillboard
+import PlayerTreasure
+import PlayerControl
+import GameWorld
+
+# 开服冲榜类型对应功能ID
+OSAFuncIDDict = {
+ ShareDefine.Def_BT_OSA_MainLevel:ShareDefine.GameFuncID_OSA_MainLevel,
+ ShareDefine.Def_BT_OSA_HeroCall:ShareDefine.GameFuncID_OSA_HeroCall,
+ }
+
+def DoOSA_MainLevel(curPlayer):
+ if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) != 1:
+ return
+ lvID = PlayerControl.GetPassMainLevelID(curPlayer)
+ GameWorld.DebugLog("开服关卡榜开启更新榜单: lvID=%s" % lvID, curPlayer.GetPlayerID())
+ PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
+ return
+
+def DoOSA_HeroCall(curPlayer):
+ if GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroCall) != 1:
+ return
+ callCnt = PlayerTreasure.GetHeroCallCnt(curPlayer)
+ GameWorld.DebugLog("开服招募榜开启更新榜单: callCnt=%s" % callCnt, curPlayer.GetPlayerID())
+ PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, callCnt)
+ return
+
+def GetOSAState(curPlayer, osaType):
+ ## 玩家是否在开服冲榜活动中
+ # @return: 0-未开启;1-活动中;2-结束显示期;3-结束关闭期
+ funcID = OSAFuncIDDict.get(osaType)
+ if not funcID:
+ return 0
+ if not GameFuncComm.GetFuncCanUse(curPlayer, funcID):
+ #GameWorld.DebugLog("开服冲榜功能未开启! osaType=%s,funcID=%s" % (osaType, funcID))
+ return 0
+ osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
+ startDay, endDay = osaDayDict.get(str(osaType), [0, 0])
+ serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+ if startDay <= serverDay <= endDay:
+ #GameWorld.DebugLog("开服冲榜活动中! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
+ return 1
+ if serverDay == (endDay + 1):
+ #GameWorld.DebugLog("开服冲榜结算中! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
+ return 2
+ #GameWorld.DebugLog("开服冲榜已结束! osaType=%s,serverDay=%s,startDay=%s,endDay=%s" % (osaType, serverDay, startDay, endDay))
+ return 3
+
+def OnDay():
+
+ osaAwardState = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_OSAAwardState)
+ serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+ osaDayDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 1, {})
+ for osaType, dayRange in osaDayDict.items():
+ osaType = int(osaType)
+ startDay, endDay = dayRange
+ if startDay > endDay:
+ continue
+ if serverDay <= endDay:
+ #GameWorld.DebugLog("开服冲榜未开始或活动中的不处理: osaType=%s,serverDay=%s <= endDay(%s)" % (osaType, serverDay, endDay))
+ continue
+
+ # 结算
+ if osaAwardState & pow(2, osaType):
+ #GameWorld.DebugLog("开服冲榜奖励已结算过了: osaType=%s,osaAwardState=%s" % (osaType, osaAwardState))
+ continue
+ osaAwardState |= pow(2, osaType)
+ DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_OSAAwardState, osaAwardState)
+ GameWorld.DebugLog("开服冲榜奖励结算: osaType=%s,osaAwardState=%s,serverDay=%s" % (osaType, osaAwardState, serverDay))
+
+ if osaType == ShareDefine.Def_BT_OSA_MainLevel:
+ billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 2, {})
+ PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAMainLevel", billboardAwardDict, "OSAMainLevel")
+ elif osaType == ShareDefine.Def_BT_OSA_HeroCall:
+ billboardAwardDict = IpyGameDataPY.GetFuncEvalCfg("OSABillboard", 3, {})
+ PlayerBillboard.DoGiveBillboardAwardByMail(osaType, "OSAHeroCall", billboardAwardDict, "OSAHeroCall")
+
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
index b474f25..34b4c1e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -21,6 +21,7 @@
import ChPyNetSendPack
import NetPackCommon
import IpyGameDataPY
+import PlayerMail
import DBDataMgr
import time
@@ -388,3 +389,49 @@
clientPack.ViewIDDataList.append(viewData)
clientPack.ViewIDDataCnt = len(clientPack.ViewIDDataList)
return clientPack
+
+def DoGiveBillboardAwardByMail(billboardType, funcName, billboardAwardDict, mailKey):
+ ## 结算排行奖励邮件发放
+ GameWorld.Log("=== %s结算排行奖励! === " % (funcName))
+ if not billboardAwardDict:
+ return
+ orderList = [int(orderStr) for orderStr in billboardAwardDict.keys()]
+ orderList.sort()
+ GameWorld.Log(" 奖励名次列表: %s" % orderList)
+
+ billboardMgr = DBDataMgr.GetBillboardMgr()
+ billBoard = billboardMgr.GetBillboard(ShareDefine.Def_BT_Arena)
+ if not billBoard:
+ return
+ billBoard.SortDelayDo()
+
+ awardOrder = orderList[0]
+ orderPlayerIDDict = {}
+ billboardCount, billboardMaxCount = billBoard.GetCount(), billBoard.GetMaxCount()
+ GameWorld.Log(" 榜单数据数: %s/%s" % (billboardCount, billboardMaxCount))
+ for index in xrange(billboardCount):
+ billBoardData = billBoard.At(index)
+ if not billBoardData:
+ continue
+ order = index + 1
+
+ if order > awardOrder:
+ nextOrderIndex = orderList.index(awardOrder) + 1
+ if nextOrderIndex >= len(orderList):
+ break
+ awardOrder = orderList[nextOrderIndex]
+
+ playerID = billBoardData.GetID()
+ if playerID < ShareDefine.RealPlayerIDStart:
+ # 非真人不处理
+ continue
+
+ orderPlayerIDDict[playerID] = [order, awardOrder]
+
+ paramList = [order]
+ awardList = billboardAwardDict[str(awardOrder)]
+ PlayerMail.SendMailByKey(mailKey, playerID, awardList, paramList)
+
+ GameWorld.Log(" 奖励玩家名次信息: %s" % orderPlayerIDDict)
+ GameWorld.Log("===================================================")
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index d914d0b..d2e7ce2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -48,6 +48,7 @@
import PlayerCostRebate
import PlayerActLunhuidian
import GY_Query_CrossRealmReg
+import OpenServerActivity
import CrossRealmPlayer
import CrossPlayerData
import PlayerActivity
@@ -4330,6 +4331,8 @@
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
+ if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
+ PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
return value
def GetMainLevelPassInfo(curPlayer):
## 获取主线关卡过关进度信息
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 6f75318..4eea7a3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -82,6 +82,7 @@
import IpyGameDataPY
import PlayerArena
import PyGameData
+import OpenServerActivity
import PlayerXiangong
import PlayerBillboard
import PlayerViewCache
@@ -106,6 +107,7 @@
#副本OnDay事件响应
#FBLogic.OnDay(tick)
+ OpenServerActivity.OnDay()
#仙盟
PlayerFamily.FamilyOnDay()
PlayerArena.OnDay()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 2a80a9e..f711016 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -26,6 +26,9 @@
import PlayerActLunhuidian
import PlayerActYunshi
import PlayerActivity
+import OpenServerActivity
+import PlayerBillboard
+import ShareDefine
import ItemCommon
import PlayerHero
import PyGameData
@@ -53,6 +56,8 @@
TreasureType_HeroComm = 11 # 英雄招募 - 普通
TreasureType_HeroHigh = 12 # 英雄招募 - 高级
TreasureType_HeroScore = 13 # 英雄招募 - 积分
+#武将招募的所有类型
+TreasureType_HeroCallList = [TreasureType_HeroComm, TreasureType_HeroHigh, TreasureType_HeroScore]
def OnTreasureLogin(curPlayer):
Sync_TreasureInfo(curPlayer)
@@ -438,9 +443,11 @@
if addScoreType and addScore:
PlayerControl.GiveMoney(curPlayer, addScoreType, addScore * treasureCount)
- if treasureType in [TreasureType_HeroComm, TreasureType_HeroHigh, TreasureType_HeroScore]:
+ if treasureType in TreasureType_HeroCallList:
PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroCall, treasureCount)
-
+ if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_HeroCall) == 1:
+ PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_HeroCall, GetHeroCallCnt(curPlayer))
+
PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_Treasure, treasureType, treasureCount)
# 给物品
@@ -484,6 +491,13 @@
Sync_TreasureInfo(curPlayer, [treasureType])
return
+def GetHeroCallCnt(curPlayer):
+ ## 获取武将招募总次数
+ callCount = 0
+ for treasureType in TreasureType_HeroCallList:
+ callCount += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreasureCount % (treasureType))
+ return callCount
+
def __getLuckyRateInfo(curLuck, luckyItemRateDict, luckyValueList):
if not luckyItemRateDict or not luckyValueList:
return 0, []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index ba7e5e4..daa6765 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -40,6 +40,8 @@
Def_InitOpenServerTime = 'InitOpenServerTime'
Def_SetOpenServerTime = 'SetOpenServerTime' # GM工具预定的开服时间
+
+Def_OSAAwardState = 'OSAAwardState' #开服冲榜活动结算状态
# ------------------------- WorldKey -------------------------
#---奇迹, 职业枚举定义---
@@ -429,7 +431,9 @@
Def_BT_MainLevel, # 主线关卡过关榜 0
Def_BT_Arena, # 演武场积分周榜 1
Def_BT_Tianzi, # 天子考验伤害榜 2
-) = range(0, 3)
+Def_BT_OSA_MainLevel, # 开服关卡榜 3
+Def_BT_OSA_HeroCall, # 开服招募榜 4
+) = range(0, 5)
''' 跨服排行榜类型, 从 150 开始,最大条数在功能配置表 CrossBillboardSet 配置,没配默认100
与本服榜单存储的是不一样的数据库表格,理论上类型可以和本服榜单类型重复,为了做下区分防误导,跨服榜单从 150 开始
@@ -442,7 +446,8 @@
BillboardTypeAllList = BillboardTypeList + CrossBillboardTypeList
-BillboardNameDict = {Def_BT_MainLevel:"主线过关榜", Def_BT_Arena:"演武场积分周榜", Def_BT_Tianzi:"天子考验伤害榜"}
+BillboardNameDict = {Def_BT_MainLevel:"主线过关榜", Def_BT_Arena:"演武场积分周榜", Def_BT_Tianzi:"天子考验伤害榜",
+ Def_BT_OSA_MainLevel:"开服关卡榜", Def_BT_OSA_HeroCall:"开服招募榜"}
#仙盟榜单类型
FamilyBillboardList = []
@@ -802,6 +807,8 @@
GameFuncID_Arena = 27 # 竞技场
GameFuncID_Horse = 37 # 坐骑
GameFuncID_Travel = 44 # 游历
+GameFuncID_OSA_MainLevel = 45 # 开服关卡榜
+GameFuncID_OSA_HeroCall = 46 # 开服招募榜
# 以下为暂时无用的
GameFuncID_Pet = -1 # 宠物,灵宠 6
--
Gitblit v1.8.0