From b7159ca5db25404f507a27a43a970a0ca5fdf5bf Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 27 五月 2024 11:07:48 +0800
Subject: [PATCH] 9689 【越南】世界等级修改
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldAverageLv.py | 30 ++++++++++++++++++++++++++++--
1 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldAverageLv.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldAverageLv.py
index 696ac71..ec66a34 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldAverageLv.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldAverageLv.py
@@ -73,7 +73,9 @@
initOpenServerTime = GameWorld.ChangeTimeNumToDatetime(initOpenServerTime, ChConfig.TYPE_Time_Format)
openServerSecond = max(0, GameWorld.GetPastSeconds(str(initOpenServerTime)) + diffSecond)
maxCnt = IpyGameDataPY.IPY_Data().GetWorldLVCount()
- for i in xrange(max(0, beforeLv-1), maxCnt):
+ GameWorld.Log("计算世界等级: diffSecond=%s,initOpenServerTime=%s,openServerSecond=%s,maxCnt=%s"
+ % (diffSecond, initOpenServerTime, openServerSecond, maxCnt))
+ for i in xrange(maxCnt):
curIpyData = IpyGameDataPY.IPY_Data().GetWorldLVByIndex(i)
if i == maxCnt - 1:
worldLV = curIpyData.GetWorldLV()
@@ -81,13 +83,37 @@
nextIpyData = IpyGameDataPY.IPY_Data().GetWorldLVByIndex(i+1)
if curIpyData.GetOpenServerSecond() <= openServerSecond < nextIpyData.GetOpenServerSecond():
worldLV = curIpyData.GetWorldLV()
+ GameWorld.Log(" i=%s,worldLV=%s" % (i, worldLV))
break
if openServerSecond < curIpyData.GetOpenServerSecond():
#防止时间往回调的情况,导致世界等级异常
worldLV = beforeLv
+ GameWorld.Log(" i=%s,worldLV=%s,beforeLv=%s" % (i, worldLV, beforeLv))
break
- return worldLV
+ playerAvgLV = 0
+ billBoard = GameWorld.GetBillboard().FindBillboard(ShareDefine.Def_BT_LV)
+ needPlayerCount = IpyGameDataPY.GetFuncCfg("WorldAverageLv", 1)
+ if billBoard and needPlayerCount:
+ totalLV = 0
+ playerCount = 0
+ for index in xrange(billBoard.GetCount()):
+ boardData = billBoard.At(index)
+ if not boardData:
+ continue
+ playerCount += 1
+ totalLV += boardData.GetCmpValue()
+ if playerCount >= needPlayerCount:
+ break
+ if totalLV > 0 and playerCount > 0:
+ playerAvgLV = int(totalLV / float(playerCount))
+ GameWorld.Log(" playerAvgLV=%s" % playerAvgLV)
+
+ worldAvgLV = int(eval(IpyGameDataPY.GetFuncCompileCfg("WorldAverageLv", 2)))
+ if worldAvgLV < worldLV:
+ worldAvgLV = worldLV
+ GameWorld.Log(" worldAvgLV=%s" % worldAvgLV)
+ return worldAvgLV
def GetWorldLVListByTime(startTime, day=1):
##根据时间计算多个世界等级
--
Gitblit v1.8.0