From f355e99a5f181ca869bdddf79fec1a27f237d194 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 10 九月 2024 11:13:47 +0800 Subject: [PATCH] 10264 【越南】【砍树】BOSS凭证掉落新增个人BOSS --- ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py | 129 ++++++++++++++++++++++--------------------- 1 files changed, 66 insertions(+), 63 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py index 94fd4d3..fa0f9e9 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py @@ -27,7 +27,6 @@ import GameWorld import random import ChConfig -import ShareDefine import PlayerControl import PyGameData #--------------------------------------------------------------------- @@ -116,18 +115,25 @@ sendPack_Sex = 1 #sendPack.GetSex() sendPack_Hair = 10001 #sendPack.GetHair() sendPack_HairColor = 1 #sendPack.GetHairColor() - sendPack_Face = 10005 #sendPack.GetFace() + #sendPack_Face = 10005 #sendPack.GetFace() sendPack_FacePic = 0 # 固定为0,需与客户端配置一致 serverID = 1 #sendPack.GetFacePic() # 脸谱作为serverID用 sendPack_PlayerType = 1 #sendPack.GetPlayerType() - sendPack_Job = sendPack.GetJob() - + roleType = sendPack.GetJob() # 创角使用job作为角色用 + ipyData = IpyGameDataPY.GetIpyGameData("CreateRole", roleType) + if not ipyData: + return + job = ipyData.GetJob() + face = ipyData.GetFace() # 头像 + modelMark = ipyData.GetModelMark() # 外形 和 时装有区别 #-----------------------名字校验 sendPack_Name = IpyGameDataPY.GetFuncCfg("CreateRole", 1) # 将命名格式直接传给db创角 gstCreatePlayer,因为这里的curPlayerID不是实际的curPlayerID + if not sendPack_Name: + return #C++过滤空格 #sendPack_Name = GameWorld.GetGameWorld().GetCharTrim(sendPack_Name) - GameWorld.Log("playerName = %s 创建角色,sendPack_Job=%s"%(sendPack_Name, sendPack_Job) , curPlayerID) + GameWorld.Log("创建角色: accID=%s,roleType=%s,job=%s,face=%s,modelMark=%s, name=%s" % (accID, roleType, job, face, modelMark, sendPack_Name) , curPlayerID) #if not CheckPlayerName(curPlayer , sendPack_Name): # #disRoleCreateError 人物创建的时候外观属性错误 @@ -150,7 +156,7 @@ #---------------------职业检查 openJob = IpyGameDataPY.GetFuncEvalCfg("OpenJob", 1) - if sendPack_Job not in openJob: + if job not in openJob: #curPlayer.Kick(IPY_GameServer.disCreateRoleJobError) PlayerControl.NotifyCode(curPlayer, "CreatUnusual") return @@ -178,10 +184,10 @@ # return #=========================================================================== - createMapInfo = __GetCreateRoleMapInfo(sendPack_Job) + createMapInfo = __GetCreateRoleMapInfo(ipyData.GetCreateRoleMap()) if not createMapInfo: PlayerControl.NotifyCode(curPlayer, "CreatUnusual") - GameWorld.ErrLog("没有职业对应创角地图信息:sendPack_Job=%s" % sendPack_Job, curPlayerID) + GameWorld.ErrLog("没有职业对应创角地图信息:sendPack_Job=%s" % job, curPlayerID) return dataMapID, lineID, posX, posY = createMapInfo mapID, copyMapID = PyGameData.g_commMapLineInfo.get((dataMapID, lineID), (dataMapID, 0)) @@ -196,52 +202,54 @@ baseSTR, basePNE, basePHY, baseCON = 0, 0, 0, 0 curPlayer.SendToDBPlayerCreate( - curPlayerID, #PlayerID, - sendPack_Name, #PlayerName, //size = 14 - 1, #inputAccState, //0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除 - 0, #inputGMLevel //GM等级, 0:不是GM >=1 : GM的等级 - sendPack_Sex, #Sex, //性别 - sendPack_Hair, #Hair, //发型, 1.标准型(男) 2.名仕型 3.浪子型 4.标准型(女) 5.马髻型 6.妩媚型 - sendPack_HairColor, #HairColor, //头发颜色, 5种 - sendPack_Face, #Face, //基本脸型 - sendPack_FacePic, #脸部图片 - sendPack_Job, #Job, //职业 - 1, #LV, //等级 - 0, #TotalExp, //总经验 - 0, #FamilyID, //家族 - 1, #Country, //国家, 1.秦国(新手) 2.魏国 3.楚国 阵营 - 0, #Mate, - 0, #Gold, //金子 - 0, #Silver, //银子 - 0, #金票 - 0, #银票 - 0, #FightPoint, //战斗值 - 0, #HappyPoint, //娱乐值 - mapID, #MapID, //角色所在地图 - dataMapID, #DataMapID, //地图分线ID - copyMapID, #CopyMapID, //副本地图ID - posX, #PosX, //角色坐标 - posY, #PosY, - 0, #State, //角色状态 1.封存 2.死亡 3.正常 以后还有陆续添加 - 100, #HP, //当前HP - 100, #MP, //当前MP - 0, #FreePoint, //未分配点数 - 0, #FreeSkillPoint,//未分配技能点数 - baseSTR, #STR, //力量 - basePNE, #PNE, //智力 - basePHY, #PHY, //敏捷 - baseCON, #CON, //体力 - "", #Setting, //用户设定 - 0, #PKValue, //PK值 - 0, #ActiveValue, //击杀敌国阵营玩家和NPC的统计值 - sendPack_PlayerType, #PlayerType, //角色的五行属性,组队用 1. 金 2. 木 3. 水 4. 土 5. 火 - "", #上次登录时间, 设置为空, 以便触发OnDay事件 - 0, #是否使用仓库密码 - "111111", #仓库密码 - IPY_GameServer.TYPE_Price_Gold_Paper, #默认使用金票 (金子/金票) + curPlayerID, #PlayerID, + sendPack_Name, #PlayerName, //size = 14 + 1, #inputAccState, //0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除 + 0, #inputGMLevel //GM等级, 0:不是GM >=1 : GM的等级 + sendPack_Sex, #Sex, //性别 + sendPack_Hair, #Hair, //发型, 1.标准型(男) 2.名仕型 3.浪子型 4.标准型(女) 5.马髻型 6.妩媚型 + sendPack_HairColor, #HairColor, //头发颜色, 5种 + face, #Face, //基本脸型 + sendPack_FacePic, #脸部图片 + job, #Job, //职业 + 1, #LV, //等级 + 0, #TotalExp, //总经验 + 0, #FamilyID, //家族 + 1, #Country, //国家, 1.秦国(新手) 2.魏国 3.楚国 阵营 + 0, #Mate, + 0, #Gold, //金子 + 0, #Silver, //银子 + 0, #金票 + 0, #银票 + 0, #FightPoint, //战斗值 + 0, #HappyPoint, //娱乐值 + mapID, #MapID, //角色所在地图 + dataMapID, #DataMapID, //地图分线ID + copyMapID, #CopyMapID, //副本地图ID + posX, #PosX, //角色坐标 + posY, #PosY, + 0, #State, //角色状态 1.封存 2.死亡 3.正常 以后还有陆续添加 + 100, #HP, //当前HP + 100, #MP, //当前MP + 0, #FreePoint, //未分配点数 + 0, #FreeSkillPoint,//未分配技能点数 + baseSTR, #STR, //力量 + basePNE, #PNE, //智力 + basePHY, #PHY, //敏捷 + baseCON, #CON, //体力 + "", #Setting, //用户设定 + 0, #PKValue, //PK值 + 0, #ActiveValue, //击杀敌国阵营玩家和NPC的统计值 + sendPack_PlayerType, #PlayerType, //角色的五行属性,组队用 1. 金 2. 木 3. 水 4. 土 5. 火 + "", #上次登录时间, 设置为空, 以便触发OnDay事件 + 0, #是否使用仓库密码 + "111111", #仓库密码 + IPY_GameServer.TYPE_Price_Gold_Paper, #默认使用金票 (金子/金票) IPY_GameServer.TYPE_Price_Silver_Money, #默认使用银子 (银子/银票) - 80, #默认自动回血设定 inputHPRestoreSetting - 80 #默认自动回魔设定 inputMPRestoreSetting + 80, #默认自动回血设定 inputHPRestoreSetting + 80, #默认自动回魔设定 inputMPRestoreSetting + roleType, #角色 + modelMark #外观 ) # 创角流向 @@ -271,32 +279,27 @@ return False if DirtyList.IsWordForbidden(playerName): - GameWorld.Log('玩家创建角色失败, 名字不合法 = %s'%(playerName)) + GameWorld.Log('玩家创建角色失败, 名字不合法 = %s' % (playerName)) return False playerNameLen = len(playerName) if playerNameLen < ChConfig.Def_CreatRole_MinStr: - GameWorld.Log('玩家创建角色失败, 角色名字过短 = %s , %s < %s'%(playerName, playerNameLen, ChConfig.Def_CreatRole_MinStr)) + GameWorld.Log('玩家创建角色失败, 角色名字过短 = %s , %s < %s' % (playerName, playerNameLen, ChConfig.Def_CreatRole_MinStr)) return False if playerNameLen > ChConfig.Def_CreatRole_MaxStr: - GameWorld.Log('玩家创建角色失败, 角色名字过长 = %s , %s > %s'%(playerName, playerNameLen, ChConfig.Def_CreatRole_MaxStr)) + GameWorld.Log('玩家创建角色失败, 角色名字过长 = %s , %s > %s' % (playerName, playerNameLen, ChConfig.Def_CreatRole_MaxStr)) return False return True -def __GetCreateRoleMapInfo(job): +def __GetCreateRoleMapInfo(createRoleMap): '''获取创角重生新手村地图 @return: None @return: dataMapID, lineID, posX, posY ''' - - createRoleMapDict = IpyGameDataPY.GetFuncEvalCfg("CreateRoleMap", 1) # {职业:[dataMapID, posX,posY], ...} - if job not in createRoleMapDict: - return - - createRoleDataMapID, posX, posY = createRoleMapDict[job] + createRoleDataMapID, posX, posY = createRoleMap mapShuntInfoDict = IpyGameDataPY.GetFuncEvalCfg("SetWorldPosShunt", 1) # 地图对应分流人数 {dataMapID:人数, ...} if createRoleDataMapID not in mapShuntInfoDict: return createRoleDataMapID, 0, posX, posY # 默认1线 -- Gitblit v1.8.0