def NetConnLost_2(dynamicId): '''loginout''' player = PlayersManager().getPlayerBydynamicId(dynamicId) if not player: return True try: tag = player.baseInfo.getInstancetag() #副本动态Id InstanceManager().dropInstanceById(tag) #如果角色下线的时候在副本中,就清空副本 player.afk.stopMeditation() #在线挂机结算 player.updatePlayerDBInfo() # player.qhtime.dbupdate()#记录角色强化冷却时间 player.nobility.dbupdate() #记录爵位限制信息 player.petShop.dbupdate() #记录宠物商店信息 # publicnoderemote.callRemote('dropPCharacter',player.baseInfo.id) PlayersManager().dropPlayer(player) state = player.baseInfo.getState() if state == 0: sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.dropPlayer(player.baseInfo.id) if player.baseInfo.getState() == 0: scene.dropPlayer(player.baseInfo.id) for petId, pet in player.pet._pets.items(): if pet.getFlowFlag(): scene.dropPet(petId) except Exception as ex: log.err(ex) finally: return True
def NetConnLost_2(dynamicId): '''loginout''' player = PlayersManager().getPlayerBydynamicId(dynamicId) if not player: return True try: tag=player.baseInfo.getInstancetag() #副本动态Id InstanceManager().dropInstanceById(tag)#如果角色下线的时候在副本中,就清空副本 player.afk.stopMeditation()#在线挂机结算 player.updatePlayerDBInfo() # player.qhtime.dbupdate()#记录角色强化冷却时间 player.nobility.dbupdate()#记录爵位限制信息 player.petShop.dbupdate()#记录宠物商店信息 # publicnoderemote.callRemote('dropPCharacter',player.baseInfo.id) PlayersManager().dropPlayer(player) state = player.baseInfo.getState() if state == 0: sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.dropPlayer(player.baseInfo.id) if player.baseInfo.getState()==0: scene.dropPlayer(player.baseInfo.id) for petId,pet in player.pet._pets.items(): if pet.getFlowFlag(): scene.dropPet(petId) except Exception as ex: log.err(ex) finally: return True
def DropCharacterInNode_612(dynamicId,characterId): '''移除角色在当前场景(副本)服务中的实例 ''' player = PlayersManager().getPlayerByID(characterId) if not player: return False if player.baseInfo.getState()==0: placeId = player.baseInfo.getTown() scene = MapManager().getMapId(placeId) scene.dropPlayer(characterId) for petId in player.matrix._matrixSetting.values(): if petId>0: scene.dropPet(petId) player.stopAllTimer() PlayersManager().dropPlayerByID(characterId) return True
def ModifyPetStatus(dynamicId, characterId, petId): '''更新宠物的携带状态''' from app.scense.core.map.MapManager import MapManager player = PlayersManager().getPlayerByID(characterId) if not player: return {'result': False, 'message': Lg().g(18)} result = player.pet.updateShow(petId) msg = result.get('message', '') if result.get('result'): if result.get('data'): if player.baseInfo.getState() == 0: #如果角色在场景中 sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.dropPet(petId) if msg: pushOtherMessage(905, msg, [dynamicId]) return result
def ModifyPetStatus(dynamicId, characterId, petId): """更新宠物的携带状态""" from app.scense.core.map.MapManager import MapManager player = PlayersManager().getPlayerByID(characterId) if not player: return {"result": False, "message": Lg().g(18)} result = player.pet.updateShow(petId) msg = result.get("message", "") if result.get("result"): if result.get("data"): if player.baseInfo.getState() == 0: # 如果角色在场景中 sceneId = player.baseInfo.getTown() scene = MapManager().getMapId(sceneId) scene.dropPet(petId) if msg: pushOtherMessage(905, msg, [dynamicId]) return result