Esempio n. 1
0
 def Instanceenterplay(self,player,sceneid):
     '''
     @param player: object 角色对象
     @param sceneid: int 目标场景Id
     '''
     target= self._Scenes[sceneid] #目标场景
     oldsceneid= player.baseInfo.getTown() #获取角色的场景
     old= self._Scenes[oldsceneid] #当前场景实例
     old.dropPlayer(player.baseInfo.id) #在当前场景中移除角色
     target.addPlayer(player) #在目标场景中加入角色
     player.baseInfo.setLocation(sceneid) #设置角色当前场景
     player.quest.setNpcList(target._npcids)
     player.baseInfo.setPosition(target.baseInfo.getInitiaPosition()) #设置角色在场景中的初始化位置
     pushObjectNetInterface.pushEnterPlace(target.baseInfo.id,player.getDynamicId()) #推送副本消息
Esempio n. 2
0
 def Instanceenterplay(self, player, sceneid):
     '''
     @param player: object 角色对象
     @param sceneid: int 目标场景Id
     '''
     target = self._Scenes[sceneid]  #目标场景
     oldsceneid = player.baseInfo.getTown()  #获取角色的场景
     old = self._Scenes[oldsceneid]  #当前场景实例
     old.dropPlayer(player.baseInfo.id)  #在当前场景中移除角色
     target.addPlayer(player)  #在目标场景中加入角色
     player.baseInfo.setLocation(sceneid)  #设置角色当前场景
     player.quest.setNpcList(target._npcids)
     player.baseInfo.setPosition(
         target.baseInfo.getInitiaPosition())  #设置角色在场景中的初始化位置
     pushObjectNetInterface.pushEnterPlace(target.baseInfo.id,
                                           player.getDynamicId())  #推送副本消息
Esempio n. 3
0
def playerBackRevive(dynamicId,characterId):
    '''角色回城复活
    @param dynamicId: int 客户端的id
    @param characterId: int 角色的id
    '''
    player = PlayersManager().getPlayerByID(characterId)
    if not player or not player.CheckClient(dynamicId):
        return {'result':False,'message':Lg().g(18)}
    if player.status.getLifeStatus():
        return {'result':False,'message':Lg().g(185)}
#    player.baseInfo.setState(0)
#    data = enterPlace(dynamicId,characterId,1000)
#    if not data.get('result',False):
#        return data
    state = player.baseInfo.getState()
    if state==0:
        lastscene = SceneManager_new().getSceneById(player.baseInfo.getLocation())
        lastscene.dropPlayer(player.baseInfo.id)
    else:
#        id=player.baseInfo.getInstanceid() #副本id
        tag=player.baseInfo.getInstancetag() #副本动态Id
        instance=InstanceManager().getInstanceByIdTag(tag) #获取副本实例
        old=instance._Scenes[player.baseInfo.getLocation()] #获取当前角色所在副本中的场景
        old.dropPlayer(player.baseInfo.id) #从当前场景中移除角色
    
    gotoSence = SceneManager_new().getSceneById(1000)
    if not gotoSence:
        scene = PublicScene(1000)
        SceneManager_new().addScene(scene)
#    else:
#        areaid = gotoSence.getAreaid()
    gotoSence.addPlayer(player)
#    player.baseInfo.setAreaid(areaid)
    player.baseInfo.setPosition(gotoSence.baseInfo.getInitiaPosition())
    player.baseInfo.setLocation(1000)
    player.baseInfo.setState(0)
    player.status.updateLifeStatus(1)
    player.attribute.updateHp(int(player.attribute.getMaxHp()*0.01)+1)
    player.attribute.updateMp(int(player.attribute.getMaxMp()*0.01)+1)
    
    pushEnterPlace(1000,dynamicId)
    player.teamcom.pushTeamMemberInfo()
    return {'result':True,'message':Lg().g(186)}
Esempio n. 4
0
    def startCopyScene(self, characterId, vipMatrix):
        '''开始副本
        @param chracterId: 角色的ID
        '''
        if characterId != self.roomowner:
            return {'result': False, 'message': u'只有房主有权限'}
        if not self.areAllReady():
            return {'result': False, 'message': u'还有玩家没有准备好'}
        player = PlayersManager().getPlayerByID(characterId)

        if vipMatrix == 1:
            if player.finance.getCoin() >= 5000:
                self.matrix.setNowEffect(vipMatrix)
                player.finance.updateCoin(player.finance.getCoin() - 5000)
        elif vipMatrix == 2:
            if player.finance.getGold() >= 10:
                self.matrix.setNowEffect(vipMatrix)
                player.finance.updateGold(player.finance.getGold() - 10)
        elif vipMatrix == 3:
            if player.finance.getGold() >= 50:
                self.matrix.setNowEffect(vipMatrix)
                player.finance.updateGold(player.finance.getGold() - 50)

        sendList = []
        if len([member for member in self.members.values() if member]) > 1:
            team = TeamManager().creatTeam(characterId)
            team.setMatrix(self.matrix)
            for member in self.members.values():
                if member:
                    pp = PlayersManager().getPlayerByID(member['id'])
                    if pp:
                        sendList.append(pp.getDynamicId())
                    team.addMember(member['id'])
        data = enterInstance1(0, characterId, self.copySceneId)
        if data['result']:
            player = PlayersManager().getPlayerByID(characterId)
            dynamicId = player.getDynamicId()
            pushQuitHallMessage(sendList)
            pushEnterPlace(data['data'].get('placeId'), [dynamicId])
        return data
Esempio n. 5
0
 def startCopyScene(self,characterId,vipMatrix):
     '''开始副本
     @param chracterId: 角色的ID
     '''
     if characterId != self.roomowner:
         return {'result':False,'message':u'只有房主有权限'}
     if not self.areAllReady():
         return {'result':False,'message':u'还有玩家没有准备好'}
     player = PlayersManager().getPlayerByID(characterId)
     
     if vipMatrix ==1:
         if player.finance.getCoin()>=5000:
             self.matrix.setNowEffect(vipMatrix)
             player.finance.updateCoin(player.finance.getCoin() -5000)
     elif vipMatrix ==2:
         if player.finance.getGold()>=10:
             self.matrix.setNowEffect(vipMatrix)
             player.finance.updateGold(player.finance.getGold() -10)
     elif vipMatrix ==3 :
         if player.finance.getGold()>=50:
             self.matrix.setNowEffect(vipMatrix)
             player.finance.updateGold(player.finance.getGold() -50)
     
     sendList = []
     if len([member for member in self.members.values() if member])>1:
         team = TeamManager().creatTeam(characterId)
         team.setMatrix(self.matrix)
         for member in self.members.values():
             if member:
                 pp = PlayersManager().getPlayerByID(member['id'])
                 if pp:
                     sendList.append(pp.getDynamicId())
                 team.addMember(member['id'])
     data = enterInstance1(0, characterId, self.copySceneId)
     if data['result']:
         player = PlayersManager().getPlayerByID(characterId)
         dynamicId = player.getDynamicId()
         pushQuitHallMessage(sendList)
         pushEnterPlace(data['data'].get('placeId'), [dynamicId])
     return data