Example #1
0
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}
Example #2
0
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