From 4e2daf438140632d5d30f14a2e19146a22aeeb31 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 11 三月 2024 11:45:44 +0800
Subject: [PATCH] 10142 【主干】【越南】【港台】【砍树】通天令激活修改
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py | 51 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
index 40c7c07..237cb4a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorld.py
@@ -538,6 +538,13 @@
#---------------------------------------------------------------------
+def GetTemplateID(ipyData, cfgID, dayIndex):
+ if cfgID == None or dayIndex == None or not ipyData:
+ return 0
+ templateIDList = ipyData.GetTemplateIDList()
+ templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
+ return templateID
+
def GetOperationActionDateStr(ipyData):
## 获取运营活动对应日期,存数字代表开服天配置,需要转化为对应的日期
curDateTime = datetime.datetime.today()
@@ -918,6 +925,17 @@
return ReadChConfig.GetPyMongoConfig("Merge", "CrossZoneName")
return PyGameData.g_crossZoneName
+def GetCrossServerTimeStr():
+ ## 跨服服务器时间
+ if IsCrossServer():
+ return GetCurrentDataTimeStr()
+ lastCrossServerTime, lastServerTime, _ = PyGameData.g_crossServerTimeInfo
+ if not lastCrossServerTime:
+ return GetCurrentDataTimeStr()
+ curTime = int(time.time())
+ crossServerTime = lastCrossServerTime + (curTime - lastServerTime)
+ return ChangeTimeNumToStr(crossServerTime)
+
## 获取玩家的区服名,仅在跨服有效
# @param curPlayer 玩家实例
# @return: 区服名
@@ -985,16 +1003,16 @@
## 从列表中产生物品,[[权重, object], ....]
# @param weightList 待选列表
-def GetResultByWeightList(weightList):
+def GetResultByWeightList(weightList, defValue=None):
randList = []
weight = 0
for info in weightList:
weight += info[0]
randList.append([weight, info[1] if len(info) == 2 else info[1:]])
if not randList:
- return
+ return defValue
rate = random.randint(1, randList[-1][0])
- return GetResultByRiseList(randList, rate)
+ return GetResultByRiseList(randList, rate, defValue)
## 获得对应数位的值
# @param numValue 数值
@@ -1080,7 +1098,7 @@
# @param order 名次,从1开始
# @param isDefaultLast 找不到的名次是否默认取最后一名的
# @return obj or None
-def GetOrderValueByDict(orderDict, order, isDefaultLast=True):
+def GetOrderValueByDict(orderDict, order, isDefaultLast=True, defaultValue=None):
if order in orderDict:
return orderDict[order]
@@ -1091,7 +1109,7 @@
return orderDict[dOrder]
# 找不到的默认取最后一名
- return orderDict[orderList[-1]] if isDefaultLast else None
+ return orderDict[orderList[-1]] if isDefaultLast else defaultValue
##概率相关, 这个事件是否能够出现
# @param rate 基础几率
@@ -1104,17 +1122,36 @@
return 0
-def DebugAnswer(curPlayer, text):
+def DebugAnswer(curPlayer, text, isLog=True):
'''转码后再发DebugAnswer'''
#===========================================================================
# if not GetGameWorld().GetDebugLevel():
# return
#===========================================================================
- DebugLog(text)
+ if isLog:
+ DebugLog(text)
text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
curPlayer.DebugAnswer(text)
return
+def CrossServerMsg_DebugAnswer(msgData):
+ playerID, text = msgData
+ curPlayer = GetPlayerManager().FindPlayerByID(playerID)
+ if not curPlayer:
+ return
+ curPlayer.DebugAnswer(text)
+ return
+
+def DebugAnswerCross(playerID, serverGroupID, text):
+ DebugLog(text)
+ text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
+
+ import CrossRealmMsg
+ dataMsg = [playerID, text]
+ serverGroupIDList = [serverGroupID]
+ CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_DebugAnswer, dataMsg, serverGroupIDList)
+ return
+
def GetMap(mapID): return IpyGameDataPY.GetIpyGameData("ChinMap", mapID)
def GetNPCData(npcID): return IpyGameDataPY.GetIpyGameData("ChinNPC", npcID)
--
Gitblit v1.8.0