From f198885f31c9c7eb19eb28adce562e39e64d581c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 18 七月 2025 16:23:11 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(属性计算、战斗力计算;新角色初始给默认装备、默认阵容武将;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index c71d18d..73211db 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/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
@@ -506,6 +507,8 @@
 # @return 返回值. 是否通过检查
 # @remarks 概率相关, 这个事件是否能够出现
 def CanHappen(rate, maxRate=ShareDefine.Def_MaxRateValue):
+    if rate <= 0:
+        return 0
     if random.randint(0, maxRate -1) < rate:
         return 1
     
@@ -607,8 +610,6 @@
     if not curPlayer or curPlayer.GetID() == 0 or curPlayer.IsEmpty():
         return False
     #if not curPlayer.GetInitOK():
-    #    return False
-    #if IsTJGPlayer(curPlayer):
     #    return False
     if IsMirrorPlayer(curPlayer):
         return False
@@ -864,6 +865,8 @@
 # @return 返回值. 时间Data格式
 # @remarks 获得服务器系统时间
 def GetCurrentTime():
+    return datetime.datetime.today()
+def GetServerTime():
     return datetime.datetime.today()
 #    ctime = GetGameWorld().GetGameServerEventTime()
 #    
@@ -1159,9 +1162,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 +1321,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:
@@ -1357,6 +1357,8 @@
 # @return
 def GetPlatform():
     return ReadChConfig.GetPyMongoConfig("platform", "PlatformName")
+
+def IsTestPlatform(platform): return platform in ["test", "yun"]
 
 #===============================================================================
 # ##获得当前服务器ID
@@ -1403,6 +1405,9 @@
         return mainServerID
     return 0
 
+def GetDBPlayerAccIDByID(playerID):
+    ## 获取玩家表账号ID - 根据玩家ID, 可用于判断是否本服玩家
+    return PyGameData.g_dbPlayerIDMap.get(playerID, "")
 
 #===============================================================================
 # 平台ID = appid
@@ -1474,6 +1479,8 @@
     
     ChannelCodeDict = ReadChConfig.GetEvalChConfig("ChannelCode")
     return ChannelCodeDict.get(codeNum, "")
+
+def GetGUID(): return str(uuid.uuid1())
 
 #---------------------------------------------------------------------
 ##大额度金钱记录
@@ -2098,6 +2105,32 @@
     numValue += pow(10, dataIndex)*(dataValue - lastTagLV)
     return numValue
 
+def GetValue(dataValue, fromRight, bits):
+    '''获取某个数值中,从右往左数第x位开始,截图n位得到的数据
+    @param dataValue: 原始数值
+    @param fromRight: 从右往左数第x位开始,从1开始
+    @param bits: 截取n位
+    @return: 数值value
+    '''
+    lPow = pow(10, fromRight)
+    rPow = pow(10, fromRight - bits)
+    curValue = dataValue % lPow / rPow
+    return curValue
+
+def SetValue(dataValue, fromRight, bits, updValue):
+    '''修改某个数值,从右往左数第x位开始,截图n位得到的数据,替换为具体数值
+    @param dataValue: 原始数值
+    @param fromRight: 从右往左数第x位开始,从1开始
+    @param bits: 截取n位
+    @param updValue: 替换值
+    @return: 修改后的value值
+    '''
+    lPow = pow(10, fromRight)
+    rPow = pow(10, fromRight - bits)
+    leftValue = dataValue / lPow * lPow
+    rightValue = dataValue % rPow
+    return leftValue + updValue * rPow + rightValue
+    
 def GetBitValue(dataValue, index):
     """ 得到某个字节值中某一位(Bit)的值
     @param dataValue: 待取值的字节值
@@ -2365,7 +2398,7 @@
     #    return
     #===========================================================================
     
-    DebugLog(text)
+    DebugLog(text, curPlayer.GetPlayerID())
     text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
     curPlayer.DebugAnswer(text)
     return
@@ -2381,10 +2414,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=""):

--
Gitblit v1.8.0