hxp
2025-06-04 d196d101b54ca95a1343399841d6b4e1117143b7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -56,6 +56,7 @@
import PyGameData
import urllib
import md5
import uuid
#---------------------------------------------------------------------
#设置允许的最大迭代数目, 默认1000
#在NPCAI中, 可能超过1000, 所以要设定为2000
@@ -608,8 +609,6 @@
        return False
    #if not curPlayer.GetInitOK():
    #    return False
    #if IsTJGPlayer(curPlayer):
    #    return False
    if IsMirrorPlayer(curPlayer):
        return False
    return True
@@ -864,6 +863,8 @@
# @return 返回值. 时间Data格式
# @remarks 获得服务器系统时间
def GetCurrentTime():
    return datetime.datetime.today()
def GetServerTime():
    return datetime.datetime.today()
#    ctime = GetGameWorld().GetGameServerEventTime()
#    
@@ -1159,9 +1160,6 @@
    if npcObj == IPY_GameWorld.gnotSummon:
        return GetNPCManager().FindSummonNPCByID(curTagNPC.GetID())
    
    elif npcObj == IPY_GameWorld.gnotTruck:
        return GetNPCManager().FindTruckByID(curTagNPC.GetID())
    elif npcObj == IPY_GameWorld.gnotPet:
        return GetNPCManager().FindPetByID(curTagNPC.GetID())
    
@@ -1321,7 +1319,7 @@
    ## 获取服务器ID所属主服ID
    ServerIDMainServerDict = IpyGameDataPY.GetConfigEx("ServerIDMainServerDict")
    if ServerIDMainServerDict == None:
        filePath = ChConfig.GetDBPath() + ("\\MixServerMap_%s.json" % GetPlatform())
        filePath = ChConfig.GetServerConfigPath() + ("\\MixServerMap_%s.json" % GetPlatform())
        if not os.path.isfile(filePath):
            SendGameErrorEx("GetMainServerIDError", "file can not found. %s" % filePath)
        else:
@@ -1358,6 +1356,8 @@
def GetPlatform():
    return ReadChConfig.GetPyMongoConfig("platform", "PlatformName")
def IsTestPlatform(platform): return platform in ["test", "yun"]
#===============================================================================
# ##获得当前服务器ID
# # @param 无
@@ -1384,8 +1384,8 @@
##获取玩家所属区服ID
# @param curPlayer
# @return
def GetPlayerServerID(curPlayer):
    accID = curPlayer.GetAccID()
def GetPlayerServerID(curPlayer): return GetAccIDServerID(curPlayer.GetAccID())
def GetAccIDServerID(accID):
    infoList = accID.split(Def_AccID_Split_Sign)
    return 0 if len(infoList) < 3 else ToIntDef(infoList[-1][1:])
@@ -1403,6 +1403,9 @@
        return mainServerID
    return 0
def GetDBPlayerAccIDByID(playerID):
    ## 获取玩家表账号ID - 根据玩家ID, 可用于判断是否本服玩家
    return PyGameData.g_dbPlayerIDMap.get(playerID, "")
#===============================================================================
# ƽ̨ID = appid
@@ -1474,6 +1477,8 @@
    
    ChannelCodeDict = ReadChConfig.GetEvalChConfig("ChannelCode")
    return ChannelCodeDict.get(codeNum, "")
def GetGUID(): return str(uuid.uuid1())
#---------------------------------------------------------------------
##大额度金钱记录
@@ -1879,18 +1884,12 @@
#  @param inputText 输入的文字
#  @return: 是否符合编码格式
def EncodingToUnicode(inputText):
    encodingList = ReadChConfig.GetEvalChConfig("EncodingTex")
    if len(encodingList) != 2:
        ErrLog("EncodingTex.txt Error len != 2")
        return False
    if encodingList[0]:
    if IpyGameDataPY.GetFuncCfg("EncodingTex", 1):
        #不檢查
        return True
        
    try:
        unicode(inputText, encodingList[1])
        unicode(inputText, IpyGameDataPY.GetFuncCfg("EncodingTex", 2))
    except:
        return False
    
@@ -1898,25 +1897,20 @@
# 获得游戏设置的字符编码
def GetCharacterEncoding():
    encodingList = ReadChConfig.GetEvalChConfig("EncodingTex")
    if len(encodingList) != 2:
        ErrLog("EncodingTex.txt Error len != 2")
        return 'utf8'
    return encodingList[1]
def GetCharacterEncoding(): return IpyGameDataPY.GetFuncCfg("EncodingTex", 2)
# 服务器默认GBK,转配置编码如UTF8,一般用于与显示层交互,不判断是否base64
def GbkToCode(inputText):
    encodingList = ReadChConfig.GetEvalChConfig("EncodingTex")
    if len(encodingList) != 2:
        ErrLog("EncodingTex.txt Error len != 2")
        return inputText
    try:
        return inputText.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
    except:
        return inputText
    return inputText
def CodeToGbk(inputText):
    try:
        return inputText.decode(GetCharacterEncoding()).encode(ShareDefine.Def_Game_Character_Encoding)
    except:
        return inputText
    
@@ -2376,7 +2370,7 @@
    #    return
    #===========================================================================
    
    DebugLog(text)
    DebugLog(text, curPlayer.GetPlayerID())
    text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
    curPlayer.DebugAnswer(text)
    return
@@ -2392,10 +2386,9 @@
def SendGameErrorEx(errType, msgInfo="", playerID=0):
    ErrLog("SendGameErrorEx: %s -> %s" % (errType, msgInfo), playerID)
    SendGameError(errType, msgInfo)
    if GetGameWorld().GetDebugLevel():
        raise Exception("%s -> %s" % (errType, msgInfo))
    else:
        SendGameError(errType, msgInfo)
    return
def SendGameError(errType, msgInfo=""):