def GetGroupLingDiInfo4400(dynamicId,characterId): '''获取国领地信息 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result':False,'message':Lg().g(79)} guild = GuildManager().getGuildById(guildId) guildInfo = guild.guildinfo info = {} ldID = FortressManager().getGuildFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if fortress: if not fortress.isOccupied: fortress = None info['ldType'] = ldID if fortress else 0 info['groupName'] = guildInfo['name'] info['groupLevel'] = guildInfo['level'] info['groupLeader'] = guildInfo['presidentname'] info['obtainJL'] = True if fortress else False info['icon'] = guildInfo['emblemLevel'] info['battleInfo'] = [] if not fortress else fortress.fightlog info['battleTime'] = 0 if not fortress else fortress.getNextFightTime() return {'result':True,'data':info}
def GuildFightHandle(ldID): '''国战斗处理 @param ldID:int 城镇要塞的ID ''' fortress = FortressManager().getFortressById(ldID) fortress.doFight() reactor.callLater(3600*24,GuildFightHandle,ldID)
def GuildFightHandle(ldID): '''国战斗处理 @param ldID:int 城镇要塞的ID ''' fortress = FortressManager().getFortressById(ldID) fortress.doFight() reactor.callLater(3600 * 24, GuildFightHandle, ldID)
def GetGroupLingDiInfo4400(dynamicId, characterId): '''获取国领地信息 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} guild = GuildManager().getGuildById(guildId) guildInfo = guild.guildinfo info = {} ldID = FortressManager().getGuildFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if fortress: if not fortress.isOccupied: fortress = None info['ldType'] = ldID if fortress else 0 info['groupName'] = guildInfo['name'] info['groupLevel'] = guildInfo['level'] info['groupLeader'] = guildInfo['presidentname'] info['obtainJL'] = True if fortress else False info['icon'] = guildInfo['emblemLevel'] info['battleInfo'] = [] if not fortress else fortress.fightlog info['battleTime'] = 0 if not fortress else fortress.getNextFightTime() return {'result': True, 'data': info}
def GroupPK4403(dynamicId, characterId, pkId): '''国战申请 ''' HAOJIAO = 20700072 player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} if not FortressManager().checkCanApply(guildId): return {'result': False, 'message': Lg().g(648)} fortress = FortressManager().getFortressById(pkId) if not fortress: return {'result': False} itemcount = player.pack.countItemTemplateId(HAOJIAO) #检测战斗号角数量 if itemcount < 1: return {'result': False, 'message': Lg().g(656)} data = fortress.SignUp(guildId) result = data.get('result', False) if result: player.pack.delItemByTemplateId(HAOJIAO, 1) #扣除战斗号角 msgID = data.get('msgID', 0) message = u'' if msgID: message = Lg().g(msgID) return {'result': result, 'message': message}
def StartUpGuaJi(dynamicId,characterId): '''角色开始挂机 @param characterId: int 角色的ID ''' from app.scense.core.campaign.FortressManager import FortressManager player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} #判断是否有冥想加成 if player.baseInfo.getState()==1: #如果角色在副本 state = 0 else: guildId = player.guild.getID() sceneId = player.baseInfo.getTown() fortress= FortressManager().getFortressBySceneId(sceneId) if not fortress.isOccupied: state = 0 else: if fortress.kimori==guildId and guildId!=0: state=1 else: state = 0 result = player.afk.startMeditation(state=state) if not result.get('result'): msg = result.get('message') sendId = player.getDynamicId() pushOtherMessage(905, msg, [sendId]) return result
def GetCityListInfo4402(dynamicId, characterId): '''获取城镇征战信息列表''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} info = FortressManager().getAllFortressInfo() return {'result': True, 'data': info}
def CancelParticipate4409(dynamicId, characterId): '''取消国战参战 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result': False, 'message': Lg().g(654)} chName = player.baseInfo.getName() chLevel = player.level.getLevel() fortress.cancelParticipate(guildId, characterId, chName, chLevel) return {'result': True}
def CancelParticipate4409(dynamicId,characterId): '''取消国战参战 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result':False,'message':Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result':False,'message':Lg().g(654)} chName = player.baseInfo.getName() chLevel = player.level.getLevel() fortress.cancelParticipate(guildId,characterId,chName,chLevel) return {'result':True}
def GetBattleInfo4406(dynamicId,characterId): '''获取战斗信息''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result':False,'message':Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result':False,'message':Lg().g(654)} guildBattleInfo = {} guildBattleInfo['roundCount'] = fortress.getRound() guildBattleInfo['remainTime'] = fortress.getBattleRemainTime() guildBattleInfo['jishaCount'] = player.guild.successTimes guildBattleInfo['obtainCoin'] = player.guild.coinBound guildBattleInfo['failCount'] = player.guild.failTimes guildBattleInfo['obtainSw'] = player.guild.prestigeBound guildBattleInfo['battleInfoList'] = fortress.battleInfoList guild1Id = fortress.get('kimori') guild2Id = fortress.get('siege') guild1Info = {} guild2Info = {} if guild1Id: guild1 = GuildManager().getGuildById(guild1Id) guild1Info = {} guild1Info['groupName'] = guild1.get('name') guild1Info['groupCount'] = fortress.kimoriScore guild1Info['icon'] = guild1.get('emblemLevel') guild1Info['groupMember'] = fortress.kimoriMembers if guild2Id: guild2 = GuildManager().getGuildById(guild2Id) guild2Info = {} guild2Info['groupName'] = guild2.get('name') guild2Info['groupCount'] = fortress.siegeScore guild2Info['icon'] = guild2.get('emblemLevel') guild2Info['groupMember'] = fortress.siegeMembers guildBattleInfo['group1Info'] = guild1Info guildBattleInfo['group2Info'] = guild2Info return {'result':True,'data':guildBattleInfo}
def AutoJoinBattle4408(dynamicId,characterId,autoJoinFlag): '''自动参战或取消自动参战 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result':False,'message':Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result':False,'message':Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result':False,'message':Lg().g(654)} if autoJoinFlag: chName = player.baseInfo.getName() chLevel = player.level.getLevel() fortress.Participate(guildId,characterId,chName,chLevel) result = fortress.autoJoin(characterId) else: result = fortress.cancelAutoJoin(characterId) return {'result':result}
def getCamp(self): '''获取场景所属阵营 ''' from app.scense.core.campaign.FortressManager import FortressManager f = FortressManager().getFortressBySceneId(self._id) if not f: return 0 if not f.isOccupied: return 0 if not f.kimori: return 0 guildId = f.kimori return guildId
def getSceneGuildName(self): '''获取城镇占领国的名称 ''' from app.scense.core.campaign.FortressManager import FortressManager from app.scense.core.guild.GuildManager import GuildManager f = FortressManager().getFortressBySceneId(self._id) if not f.isOccupied: return '' if not f.kimori: return '' guildId = f.kimori guild = GuildManager().getGuildById(guildId) return guild.get('name')
def SceneMapInfos(dynamicId, characterId): '''获取大地图信息 @param dynamicId: int 客户端的id @param characterId: int 角色的id ''' player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: self_color = int(DEFAULTCOLOR, 16) else: guild = GuildManager().getGuildById(guildId) self_color = guild.guildinfo.get('color', int(DEFAULTCOLOR, 16)) infos = FortressManager().getBigMapInfo() #ColonizeManage().getCityList() return {'result': True, 'self_color': self_color, 'infos': infos}
def doGuildFight(): '''执行国战斗 ''' n = "scense_1000" t = n.split('_') if t[0] == "scense_" and int(t[1]) % 100 == 0: sceneId = int(t[1]) / 100 * 100 ldID = 0 for fortress in FortressManager().fortresss.values(): if fortress.get('sceneId') == sceneId: ldID = fortress.id break #上半场 reactor.callLater(differTime(19, 10, 0), GuildFightHandle, ldID) #下半场 reactor.callLater(differTime(19, 40, 0), GuildFightHandle, ldID)
def ObtainJiangLi4401(dynamicId, characterId): '''领取奖励殖民''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} ldID = FortressManager().getGuildFortressId(guildId) if not ldID: #没有领地 return {'result': False, 'message': Lg().g(657)} result = player.guild.ObtainFortressReward() msgID = result.get('msgID', 0) message = u'' if msgID: message = Lg().g(msgID) return {'result': result.get('result', False), 'message': message}
def GetBattleInfo4406(dynamicId, characterId): '''获取战斗信息''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result': False, 'message': Lg().g(654)} guildBattleInfo = {} guildBattleInfo['roundCount'] = fortress.getRound() guildBattleInfo['remainTime'] = fortress.getBattleRemainTime() guildBattleInfo['jishaCount'] = player.guild.successTimes guildBattleInfo['obtainCoin'] = player.guild.coinBound guildBattleInfo['failCount'] = player.guild.failTimes guildBattleInfo['obtainSw'] = player.guild.prestigeBound guildBattleInfo['battleInfoList'] = fortress.battleInfoList guild1Id = fortress.get('kimori') guild2Id = fortress.get('siege') guild1Info = {} guild2Info = {} if guild1Id: guild1 = GuildManager().getGuildById(guild1Id) guild1Info = {} guild1Info['groupName'] = guild1.get('name') guild1Info['groupCount'] = fortress.kimoriScore guild1Info['icon'] = guild1.get('emblemLevel') guild1Info['groupMember'] = fortress.kimoriMembers if guild2Id: guild2 = GuildManager().getGuildById(guild2Id) guild2Info = {} guild2Info['groupName'] = guild2.get('name') guild2Info['groupCount'] = fortress.siegeScore guild2Info['icon'] = guild2.get('emblemLevel') guild2Info['groupMember'] = fortress.siegeMembers guildBattleInfo['group1Info'] = guild1Info guildBattleInfo['group2Info'] = guild2Info return {'result': True, 'data': guildBattleInfo}
def checkCanFight(self, monsterId, playerId): '''检测是否能进行战斗 ''' if monsterId > 10: return True player = PlayersManager().getPlayerByID(playerId) camp = player.guild.getID() if camp == 0: return False from app.scense.core.campaign.FortressManager import FortressManager f = FortressManager().getFortressBySceneId(self._id) if not f.isOccupied: mapcamp = 0 #fortressInfo.get('kimori') else: mapcamp = f.kimori if mapcamp == camp: return False #不能攻击同国家的旗帜 if monsterId == 1: if set([2, 3, 4, 5]) & (set(self._monsters.keys())): return False #副旗没砍掉之前不能攻击主旗 return True
def afterFight(self, monsterId, playerId, currentHp): '''场景中的战后处理 @monsterId 怪物的ID @param playerId: int 攻击的角色的ID @currentHp: int 怪物的当前血量 ''' if monsterId > 10: return monster = self._monsters.get(monsterId) if not monster: if monsterId == 1: #主帅旗被砍掉 from app.scense.core.guild.GuildManager import GuildManager from app.scense.core.campaign.FortressManager import FortressManager from app.scense.utils.dbopera import dbfortress player = PlayersManager().getPlayerByID(playerId) guildId = player.guild.getID() fortress = FortressManager().getFortressBySceneId(self._id) info = {} info['kimoriScore'] = 0 info['siegeScore'] = 0 info['siege'] = 0 info['isOccupied'] = 1 info['kimori'] = guildId info['siege'] = 0 guild1 = GuildManager().getGuildById(guildId) if guild1: guild1.addExp(3500) msg = u"%s国成功征战%s,成为其国领地!" % (guild1.name, self._name) pushSystemInfo(msg) dbfortress.updateFortressInfo(fortress.id, { 'kimori': info['kimori'], 'isOccupied': 1, 'siege': 0 }) return else: return monster.updateHp(currentHp)
def AutoJoinBattle4408(dynamicId, characterId, autoJoinFlag): '''自动参战或取消自动参战 ''' player = PlayersManager().getPlayerByID(characterId) if not player or not player.CheckClient(dynamicId): return {'result': False, 'message': Lg().g(18)} guildId = player.guild.getID() if not guildId: return {'result': False, 'message': Lg().g(79)} ldID = FortressManager().guildFightFortressId(guildId) fortress = FortressManager().getFortressById(ldID) if not fortress: return {'result': False, 'message': Lg().g(654)} if autoJoinFlag: chName = player.baseInfo.getName() chLevel = player.level.getLevel() fortress.Participate(guildId, characterId, chName, chLevel) result = fortress.autoJoin(characterId) else: result = fortress.cancelAutoJoin(characterId) return {'result': result}
def initAlldata(): '''初始化常用数据,从数据库读入到内存中 ''' dbaccess.All_ShieldWord = dbaccess.getAll_ShieldWord() dbaccess.tb_mallitem_Column_name = dbaccess.getTablecolumnName( 'tb_item_template') + [ 'item_templateid', 'tag', 'promotion', 'gold', 'coupon', 'restrict', 'cheapstart', 'cheapend', 'discount', 'up', 'down', 'onoff' ] dbaccess.tb_mallitem_Column_name1 = dbaccess.getTablecolumnName( 'tb_mall_item') dbaccess.tb_mall_restrict_Column_name = dbaccess.getTablecolumnName( 'tb_mall_restrict') dbaccess.tb_mall_log_Column_name = dbaccess.getTablecolumnName( 'tb_mall_log') dbaccess.tb_instanceinfo_Columen_name = dbaccess.getTablecolumnName( 'tb_instanceinfo') dbaccess.tb_instance_activation_Columen_name = dbaccess.getTablecolumnName( 'tb_instance_activation') dbaccess.tb_instance_close_Columen_name = dbaccess.getTablecolumnName( 'tb_instance_close') dbaccess.tb_instance_record_Columen_name = dbaccess.getTablecolumnName( 'tb_instance_record') dbaccess.tb_profession_Columen_name = dbaccess.getTablecolumnName( "tb_profession") dbDropOut.tb_dropout_Column_name = dbaccess.getTablecolumnName( 'tb_dropout') dbaccess.tb_marix_Columen_name = dbaccess.getTablecolumnName( "tb_matrix") #获取阵法表中所有的阵法数据 dbDrinkery.tb_drinkery_Column_name = dbaccess.getTablecolumnName( 'tb_drinkery') #存储数据库中酒店表中的所有字段 dbChat.tb_chat_astrict_name = dbaccess.getTablecolumnName( 'tb_chat_astrict') dbaccess.tb_Profession_Config = dbaccess.getProfession_Config( ) #初始化职业成长配置表 dbaccess.tb_Experience_config = dbaccess.getExperience_Config( ) #初始化经验成长配置表 dbaccess.all_ItemTemplate = dbaccess.getAll_ItemTemplate() #获取所有的物品模板信息 dbaccess.all_marix_info = dbaccess.getAllMarix_Info() #获取所有的阵法信息 dbEffect.ALL_EFFECT_INFO = dbEffect.getAllEffectInfo() #获取所有的效果信息 dbBuff.ALL_BUFF_INFO = dbBuff.getAllBuffInfo() #获取所有的buff信息 instance_app.allInfo = dbInstanceInfo.getAllInfo() #获取所有副本信息 guild.AllCharacterGuildInfo = dbGuild.getAllCharacterGuildInfo( ) #获取所有角色与行会对应关系 dropout.alldrop = dbDropOut.getAll() #获取所有掉落信息 instanceColonizeChallenge.allColonizeChallenge = dbInstanceColonizeChallenge.getAllColonizeChallenge( ) instanceColonizeChallenge.allMosterNameByinstance = dbInstanceColonizeChallenge.getAllMosterName( ) dbtask.ALL_MAIN_TASK = dbtask.getAllMainTask() dbtask.ALL_EXTEN_TASK = dbtask.getAllExtedTask() dbInstance_d.instance_dAll = dbInstance_d.getInstance_dAll() #副本掉落tip dbTeamInstance.getAll() #设置所有多人副本数据 dbTeamInstanceDrop.getAll() #设置所有多人副本掉落数据 dbNobility.getAll() #获取所有爵位信息 dbPetShopConfigure.getAll() #获取所有宠物商店推荐宠物组合信息 dbPublicscene.getAllInfo() dbSkill.getAllSkill() dbSkill.getBuffAddition() dbSkill.getBuffOffsetInfo() dbMonster.getAllMonsterInfo() dbCharacterPet.getPetTrainConfig() dbCharacterPet.getAllPetTemplate() dbCharacterPet.getPetExp() dbCharacterPet.getAllPetGrowthConfig() dbMail.getAllLevelMail() dbGuild.getAllTechnology() dbGuild.getTechnologyLimit() dbVIP.getAllVIPPer() dbVIP.getVIPExp() dbVIP.getAllLibao() dbfightfail.getAllFightFail() dbCharacterFate.getAllFateTemplate() dbtower.initAllTowerInfo() dbfigure.getAllFigureInfo() db_zhanyi.getAllZhanYiInfo() #获取所有的战役信息 db_zhanyi.getAllZhangJieInfo() #获取所有的战役信息 InstanceGroupManage() # ColonizeManage() FortressManager() ZYManage() configure.shuxingbianliang()
def pushNowScenePosition(self, sendId, playerID): '''推送在场景中当前的所有角色和怪物的坐标 @param sendId: int 推送的目标ID ''' from app.scense.core.campaign.FortressManager import FortressManager fortress = FortressManager().getFortressBySceneId(self.getID()) if fortress: sceneCamp = fortress.kimori else: sceneCamp = 0 self._canRec.add(playerID) sceneInfo = pushSceneMessage_pb2.pushSceneMessage() for playerId in self._playerlist: player = PlayersManager().getPlayerByID(playerId) camp = player.guild.getID() PlayerPosition = sceneInfo.PlayerPosition.add() PlayerPosition.id = player.baseInfo.id PlayerPosition.name = player.baseInfo.getNickName() PlayerPosition.profession = player.profession.getProfessionName() PlayerPosition.headicon = player.profession.getFigure() GuildInfo = player.guild.getGuildInfo() if GuildInfo: PlayerPosition.guildname = GuildInfo.get('name', '') PlayerPosition.figure = player.profession.getSceneFigure() position = player.baseInfo.getPosition() PlayerPosition.x = int(position[0]) PlayerPosition.y = int(position[1]) PlayerPosition.level = player.level.getLevel() PlayerPosition.viptype = player.baseInfo.getType() PlayerPosition.gemlevel = player.pack._equipmentSlot.getGemLevel() PlayerPosition.currentHP = player.attribute.getHp() PlayerPosition.MaxHP = player.attribute.getMaxHp() PlayerPosition.camp = camp ###############角色展示宠物的处理################ player.pet.updatePetPosition(position) for petId in player.matrix._matrixSetting.values(): if petId <= 0: continue pet = player.pet.getPet(petId) figure = pet.templateInfo['resourceid'] position = pet.getPosition() PetPosition = sceneInfo.petInfo.add() PetPosition.id = petId PetPosition.name = player.baseInfo.getNickName( ) + u'·' + pet.baseInfo.getName() PetPosition.profession = pet.baseInfo.getName() PetPosition.headicon = figure PetPosition.figure = figure PetPosition.x = int(position[0]) PetPosition.y = int(position[1]) PetPosition.masterId = playerId PetPosition.currentHP = pet.attribute.getHp() PetPosition.MaxHP = pet.attribute.getMaxHp() PetPosition.camp = camp for monster in self._monsters.values(): MonsterPosition = sceneInfo.MonsterPosition.add() MonsterPosition.id = monster.baseInfo.id MonsterPosition.profession = monster.formatInfo['name'] MonsterPosition.figure = monster.formatInfo['resourceid'] MonsterPosition.name = monster.formatInfo['name'] MonsterPosition.x = int(monster.baseInfo.getPosition()[0]) MonsterPosition.y = int(monster.baseInfo.getPosition()[1]) MonsterPosition.currentHP = monster.formatInfo['maxHp'] MonsterPosition.MaxHP = monster.formatInfo['maxHp'] MonsterPosition.camp = sceneCamp if sceneCamp and monster.baseInfo.id < 10 else -1 sceneInfo.sceneId = self._id msg = sceneInfo.SerializeToString() pushApplyMessage(602, msg, [sendId])
def pushSceneInfo(self, rate): '''给每一个在场景中的玩家推送场景信息 @param rate: int 移动的频率 ''' if not self._playerlist: return self.updateAllPlayerLocation(rate) if self._monsters: self.updateAllMonsterLocation() from app.scense.core.campaign.FortressManager import FortressManager fortress = FortressManager().getFortressBySceneId(self.getID()) if fortress: sceneCamp = fortress.kimori else: sceneCamp = 0 sendlist = self.getSendList() sceneInfo = pushSceneMessage_pb2.pushSceneMessage() for playerId in self._playerlist: player = PlayersManager().getPlayerByID(playerId) camp = player.guild.getID() if not player: self.dropPlayer(playerId) continue PlayerPosition = sceneInfo.PlayerPosition.add() PlayerPosition.id = player.baseInfo.id PlayerPosition.name = player.baseInfo.getNickName() PlayerPosition.profession = player.profession.getProfessionName() PlayerPosition.headicon = player.profession.getFigure() GuildInfo = player.guild.getGuildInfo() if GuildInfo: PlayerPosition.guildname = GuildInfo.get('name', '') PlayerPosition.figure = player.profession.getSceneFigure() position = player.baseInfo.getDestination() PlayerPosition.x = int(position[0]) PlayerPosition.y = int(position[1]) PlayerPosition.level = player.level.getLevel() PlayerPosition.viptype = player.baseInfo.getType() PlayerPosition.gemlevel = player.pack._equipmentSlot.getGemLevel() PlayerPosition.currentHP = player.attribute.getHp() PlayerPosition.MaxHP = player.attribute.getMaxHp() PlayerPosition.camp = camp ###############角色展示宠物的处理################ petremove = player.pet.popLastRemove() for petId in petremove: self.dropPet(petId) for petId in player.matrix._matrixSetting.values(): if petId <= 0: continue pet = player.pet.getPet(petId) figure = pet.templateInfo['resourceid'] position = pet.getPosition() PetPosition = sceneInfo.petInfo.add() PetPosition.id = petId PetPosition.name = player.baseInfo.getNickName( ) + u'·' + pet.baseInfo.getName() PetPosition.profession = pet.baseInfo.getName() PetPosition.headicon = figure PetPosition.figure = figure PetPosition.x = int(position[0]) PetPosition.y = int(position[1]) PetPosition.masterId = playerId PetPosition.currentHP = pet.attribute.getHp() PetPosition.MaxHP = pet.attribute.getMaxHp() PetPosition.camp = camp for monster in self._monsters.values(): MonsterPosition = sceneInfo.MonsterPosition.add() MonsterPosition.id = monster.baseInfo.id MonsterPosition.profession = monster.formatInfo['name'] MonsterPosition.figure = monster.formatInfo['resourceid'] MonsterPosition.name = monster.formatInfo['name'] MonsterPosition.x = int(monster.baseInfo.getPosition()[0]) MonsterPosition.y = int(monster.baseInfo.getPosition()[1]) MonsterPosition.currentHP = monster.formatInfo['maxHp'] MonsterPosition.MaxHP = monster.formatInfo['maxHp'] MonsterPosition.camp = sceneCamp if sceneCamp and monster.baseInfo.id < 10 else -1 sceneInfo.sceneId = self._id msg = sceneInfo.SerializeToString() pushApplyMessage(602, msg, sendlist)