From 5cbc408e220dbac176850b1b250e42bfac67e274 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 22 四月 2025 11:10:21 +0800
Subject: [PATCH] 10263 【英文】【BT】【越南】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(暂时屏蔽MirrorAIAtkDepthError警告邮件;)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py | 90 ++++++++++++++++++++-------------------------
1 files changed, 40 insertions(+), 50 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
index 79e2717..1464b90 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
@@ -83,6 +83,10 @@
PlayerControl.NotifyCode(curPlayer, "CreatSuccess")
return
+ if CheckIsServerCreateRoleLimit(curPlayer):
+ PlayerControl.NotifyCode(curPlayer, "ServerCreateRoleLimit")
+ return
+
# CD保护
createSafeTick = 3000
accID = curPlayer.GetAccID()
@@ -112,9 +116,9 @@
sendPack_Sex = 1 #sendPack.GetSex()
sendPack_Hair = 10001 #sendPack.GetHair()
sendPack_HairColor = 1 #sendPack.GetHairColor()
- sendPack_Face = 10005 #sendPack.GetFace()
- sendPack_FacePic = 0 # 固定为0,需与客户端配置一致
- serverID = 1 #sendPack.GetFacePic() # 脸谱作为serverID用
+ sendPack_Face = sendPack.GetFace()
+ sendPack_FacePic = sendPack.GetFacePic()
+ serverID = 1
sendPack_PlayerType = 1 #sendPack.GetPlayerType()
sendPack_Job = sendPack.GetJob()
@@ -147,6 +151,7 @@
openJob = IpyGameDataPY.GetFuncEvalCfg("OpenJob", 1)
if sendPack_Job not in openJob:
#curPlayer.Kick(IPY_GameServer.disCreateRoleJobError)
+ GameWorld.ErrLog("创角异常职业! sendPack_Job=%s" % sendPack_Job, curPlayerID)
PlayerControl.NotifyCode(curPlayer, "CreatUnusual")
return
@@ -158,14 +163,21 @@
# return
#----------------------脸型校验
- #===========================================================================
- # if sendPack_Face not in ChConfig.Def_RoleFace[sendPack_Job][sendPack_Sex - 1]:
- # #脸型错误
- # GameWorld.Log("Face = %d Error!,踢玩家下线"%(sendPack_Face) , curPlayerID)
- # curPlayer.Kick(IPY_GameServer.disCreateRoleFaceError)
- # return
- #===========================================================================
-
+ if sendPack_Face:
+ faceIpyData = IpyGameDataPY.GetIpyGameData("PlayerFace", sendPack_Face)
+ if not faceIpyData or not faceIpyData.GetUnlockDefault():
+ #curPlayer.Kick(IPY_GameServer.disCreateRoleFaceError)
+ GameWorld.ErrLog("创角异常头像! sendPack_Face=%s" % sendPack_Face, curPlayerID)
+ PlayerControl.NotifyCode(curPlayer, "CreatUnusual")
+ return
+ if sendPack_FacePic:
+ facePicIpyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", sendPack_FacePic)
+ if not facePicIpyData or not facePicIpyData.GetUnlockDefault():
+ #curPlayer.Kick(IPY_GameServer.disCreateRoleFaceError)
+ GameWorld.ErrLog("创角异常头像框! sendPack_FacePic=%s" % sendPack_FacePic, curPlayerID)
+ PlayerControl.NotifyCode(curPlayer, "CreatUnusual")
+ return
+
#---------------------五行检查
#===========================================================================
# if sendPack_PlayerType not in range(1 , 5 + 1):
@@ -188,7 +200,7 @@
#GameWorld.DebugLog("SendToDBPlayerCreate dataMapID=%s,lineID=%s,posX=%s,posY=%s,mapID=%s,copyMapID=%s"
# % (dataMapID, lineID, posX, posY, mapID, copyMapID))
#根据职业获得默认的属性, #STR//力量 ,PNE//智力,PHY//敏捷,CON//体力
- baseSTR, basePNE, basePHY, baseCON = __GetPlayerBasePoint(sendPack_Job)
+ baseSTR, basePNE, basePHY, baseCON = 0, 0, 0, 0
curPlayer.SendToDBPlayerCreate(
curPlayerID, #PlayerID,
@@ -236,50 +248,28 @@
IPY_GameServer.TYPE_Price_Gold_Paper, #默认使用金票 (金子/金票)
IPY_GameServer.TYPE_Price_Silver_Money, #默认使用银子 (银子/银票)
80, #默认自动回血设定 inputHPRestoreSetting
- 80 #默认自动回魔设定 inputMPRestoreSetting
+ 80, #默认自动回魔设定 inputMPRestoreSetting
+ 0, #roleType
+ 0 #modelMark
)
# 创角流向
#DataRecordPack.DR_CreateRole(curPlayer.GetAccID(), sendPack_Name, sendPack_Job)
return
+#---------------------------------------------------------------------
+def CheckIsServerCreateRoleLimit(curPlayer):
+ ## 服务器是否创角限制
+ groupID = GameWorld.GetServerGroupID()
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetCreateRoleLimitServerCount()):
+ ipyData = ipyDataMgr.GetCreateRoleLimitServerByIndex(i)
+ if groupID in ipyData.GetLimitServerGroupIDList():
+ return True
+ for idA, idB in ipyData.GetLimitServerGroupIDRangeList():
+ if idA <= groupID <= idB:
+ return True
+ return False
-#---------------------------------------------------------------------
-## 获取玩家基础属性点
-# @param sendPack_Job 职业类型
-# @return baseSTR, basePNE, basePHY, baseCON
-# @remarks 函数详细说明.
-def __GetPlayerBasePoint(sendPack_Job):
- baseSTR, basePNE, basePHY, baseCON = (0, 0, 0, 0)
- #{ 职业 : { key : value } }
-
- jobDict = IpyGameDataPY.GetFuncEvalCfg("CreatRolePoint%s" % sendPack_Job, 1)
-
- if not jobDict:
- GameWorld.ErrLog('CreatRoleErr RoleBasePoint, job = %s' % (sendPack_Job))
- return baseSTR, basePNE, basePHY, baseCON
-
- for key, value in jobDict.items():
-
- if type(key) == str:
- key = key.upper()
-
- if key in ['STR', ShareDefine.Def_Effect_STR]:
- baseSTR = value
-
- elif key in ['PNE', ShareDefine.Def_Effect_PNE]:
- basePNE = value
-
- elif key in ['PHY', ShareDefine.Def_Effect_PHY]:
- basePHY = value
-
- elif key in ['CON', ShareDefine.Def_Effect_CON]:
- baseCON = value
-
- else:
- GameWorld.ErrLog('CreatRoleErr RoleBasePoint, key = %s' % (key))
-
- return baseSTR, basePNE, basePHY, baseCON
-#---------------------------------------------------------------------
## 检查玩家名字是否合法(这里的PlayerName为过滤完空格的名字)
# @param curPlayer 当前玩家
# @param playerName 玩家名称
--
Gitblit v1.8.0