def iteranceInstance(characterId): '''重打副本''' player= PlayersManager().getPlayerByID(characterId) #获取角色 if not player: return {'result':False,'message':Lg().g(18)} instanceId=player.baseInfo.getInstanceid() #获取角色所在副本Id tag=player.baseInfo.getInstancetag() #副本动态Id Instance=InstanceManager().getInstanceByIdTag(tag) #获取 副本 if not Instance: log.err(u"不存在副本动态id %s"%tag) Instance.initInstance() #初始化副本 #start角色有队伍境况下组队进入副本 loaduser=[]#记录需要推送消息的角色对象 if player.teamcom.amisteam(): #如果角色有队伍 if player.teamcom.amITeamLeader(): #判断是否是队长 sceneid=player.baseInfo.getLocation() #获取队长当前场景Id members=player.teamcom.getMyTeamMember() #获取队伍成员列表 if members: if len(members)>1: for py1 in members: #遍历所有队员 if py1.baseInfo.getLocation()==sceneid:#判断当前角色是否和队长在同一个场景中 enterplay(py1,instanceId,Instance) #角色进入副本操作 else:#若该成员和队长不在同一场景,推送是否进入副本提示框消息 loaduser.append(py1.getDynamicId()) pushObjectNetInterface.pushLeaderInstance(loaduser,player.baseInfo.getId()) else:#如果请求的人有队伍并且不是队长 return {'result':False,'message':u'在队伍中的成员中只有队长才能开启副本'} #end 角色有队伍境况下组队进入副本 else: enterplay(player,instanceId,Instance) #角色进入副本操作 data = {'placeId':Instance.getSceneResourceidByid(Instance._inSceneid)} return {'result':True,'message':u'进入副本','data':data}
def enterInstance1(player,dynamicId,characterId,instanceId,famId): '''进入副本 @param dynamicId: int 角色动态Id @param characterId: int 角色Id @param instanceId: int 副本Id ''' player=PlayersManager().getPlayerByID(characterId) if not player: return {'result':False,'message':Lg().g(18)} if player.baseInfo.getState==1: #角色在副本中 return {'result':False,'message':Lg().g(114)} player.startAllTimer() Instan1= InstanceManager().addInstance(instanceId,famId) #把副本添加到副本管理器中,返回副本管理器中的这个副本实例 scenename = Instan1._name chatnoderemote.callRemote('JoinRoom',characterId,famId,scenename) # Instan1.setTag(famId) if not Instan1: return {'result':False,'message':u'没有id为%d的副本'%instanceId} activationInstance(Instan1, player) #激活副本 enterplay(player,instanceId,Instan1) #角色进入副本操作 data = {'placeId':Instan1.getSceneResourceidByid(Instan1._inSceneid)} player.baseInfo.setInstanceid(instanceId) return {'result':True,'message':u'进入副本成功','data':data} #返回副本初始Id