Beispiel #1
0
def TeamFighting(pid):
    '''开始多人副本战斗'''
    from app.scense.core.teamfight.TeamFight import TeamFight
    from app.scense.applyInterface import teamInstanceDrop
    
    if not configure.isteamInstanceTime(17):
        return
    teamid=TeamFight().getTeamidByPid(pid)
    if teamid==0:
        return{'result':False,'message':Lg().g(260)}
    teaminfo=TeamFight().getteaminfoByteamid(teamid)
    
    if not teaminfo.pid==pid:
        return{'result':False,'message':Lg().g(261)}
    if teaminfo.count<2:
        pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(646), [pid])
        return{'result':False,'message':Lg().g(262)}
    PlayerList=teaminfo.players.values()#角色实例列表
    typeid=teaminfo.type
    msgs={}#记录角色获得物品
    playeritem={}#记录角色获得物品信息 key:角色id,value:[{'id':5201,'count':2}]物品列表[物品id和物品数量]
    
        
    playerzf=teaminfo.getZfInfo()#角色阵法位置
    rs=getInfo(typeid)
    MosterList=rs.get('MosterList')#怪物实例列表
    mosterwz=rs.get('mosterwz')#怪物阵法位置
    ItemList=rs.get('ItemList')#物品实例列表
    zy=rs.get('zy')#资源id
    fightinfo=fight_new.DoGroupFight(PlayerList, playerzf, MosterList, mosterwz)
    
    if fightinfo.battleResult==1:
        pklist=teaminfo.players.keys()
        for pk in pklist:
            msgs[pk]=u''
            ItemList=teamInstanceDrop.getTeamDropListItemidCountByTypeid(typeid) #[{'id':5201,'count':2}]
            playeritem[pk]=ItemList
            for item in ItemList:
                itemTemplateId=item.get('id')
                iname=dbaccess.all_ItemTemplate[itemTemplateId]['name']#物品名称
                msgs[pk]=msgs[pk]+u'%s * %s\n'%(iname,item.get('count'))
                gm="player.pack.putNewItemsInPackage(%s,%s)"%(itemTemplateId,item.get('count'))
#                publicnoderemote.callRemote("updateplayerInfo",pk,gm)
    else:#战斗失败
        for pk in teaminfo.players.keys():
            msgs[pk]=Lg().g(143)
    
    for pk in teaminfo.players.keys():
        msg=msgs.get(pk)
        TeamFight().addfightcount(pk, typeid)
        
        pushObjectNetInterface.getzudui_4308(fightinfo, [pk], msg,zy)
    TeamFight().dismissTeam(teamid)
Beispiel #2
0
    def doFight(self):
        '''开始国战
        '''
        if not IsFightTime():
            thisRound = self.getRound()
            if thisRound == 0:
                self.ClearingFight()
            return
        RivalInfo = self.MatchRival()
        if not RivalInfo:
            reactor.callLater(30, self.doFight)
            return

        from app.scense.core.character.PlayerCharacter import PlayerCharacter
        from app.scense.core.fight.fight_new import Fight
        from app.scense.core.fight.battleSide import BattleSide
        from app.scense.netInterface import pushObjectNetInterface
        #        from app.scense.serverconfig.publicnode import publicnoderemote

        actor = RivalInfo['actor']
        defender = RivalInfo['defender']
        player = PlayerCharacter(actor['memberId'])
        player.attribute.Restoration()  #角色满状态
        toplayer = PlayerCharacter(defender['memberId'])
        toplayer.attribute.Restoration()  #角色满状态

        challengers = BattleSide([player])
        defenders = BattleSide([toplayer])
        data = Fight(challengers, defenders, 550)
        data.DoFight()
        battleResult = data.battleResult
        pplist = [actor['memberId'], defender['memberId']]
        if battleResult == 1:
            pId = player.baseInfo.getId()
            pname = player.baseInfo.getName()
            pcoin = player.level.getLevel() * 100
            pweiwang = 2
            tId = toplayer.baseInfo.getId()
            tname = toplayer.baseInfo.getName()
            tcoin = 1000
            tweiwang = 0
        else:
            pId = toplayer.baseInfo.getId()
            pname = toplayer.baseInfo.getName()
            pcoin = toplayer.level.getLevel() * 100
            pweiwang = 2
            tId = player.baseInfo.getId()
            tname = player.baseInfo.getName()
            tcoin = 1000
            tweiwang = 0
        #战后处理
        self.battleResultHandle(battleResult)
        #战斗奖励发放
        gm1 = 'player.finance.addCoin(%d);player.finance.addPrestige(%d);\
        player.guild.updateGuildBattleInfo(%d,%d,%d,%d)' % (pcoin, pweiwang, 1,
                                                            0, pcoin, pweiwang)
        gm2 = 'player.finance.addCoin(%d);\
        player.guild.updateGuildBattleInfo(%d,%d,%d,%d)' % (tcoin, 0, 1, tcoin,
                                                            0)
        #        publicnoderemote.callRemote("updateplayerInfo",pId,gm1)
        #        publicnoderemote.callRemote("updateplayerInfo",tId,gm2)
        #添加国战斗信息
        self.addBattleInfo(pId, pname, tId, tname, pcoin)
        #战斗消息推送处理
        msg = u'%s: %d金币   %d威望  \n%s: %d金币  %d威望' % (pname, pcoin, pweiwang,
                                                      tname, tcoin, tweiwang)
        zy = self.sceneId
        pushObjectNetInterface.getzudui_4308(data, pplist, msg, zy)
        reactor.callLater(30, self.doFight)
Beispiel #3
0
    def doFight(self):
        '''开始国战
        '''
        if not IsFightTime():
            thisRound = self.getRound()
            if thisRound==0:
                self.ClearingFight()
            return
        RivalInfo = self.MatchRival()
        if not RivalInfo:
            reactor.callLater(30,self.doFight)
            return
        
        from app.scense.core.character.PlayerCharacter import PlayerCharacter
        from app.scense.core.fight.fight_new import Fight
        from app.scense.core.fight.battleSide import BattleSide
        from app.scense.netInterface import pushObjectNetInterface
#        from app.scense.serverconfig.publicnode import publicnoderemote
        
        actor = RivalInfo['actor']
        defender = RivalInfo['defender']
        player = PlayerCharacter(actor['memberId'])
        player.attribute.Restoration()#角色满状态
        toplayer = PlayerCharacter(defender['memberId'])
        toplayer.attribute.Restoration()#角色满状态
        
        challengers = BattleSide([player])
        defenders = BattleSide([toplayer])
        data = Fight(challengers, defenders, 550)
        data.DoFight()
        battleResult = data.battleResult
        pplist = [actor['memberId'],defender['memberId']]
        if battleResult==1:
            pId = player.baseInfo.getId()
            pname = player.baseInfo.getName()
            pcoin = player.level.getLevel()*100
            pweiwang = 2
            tId = toplayer.baseInfo.getId()
            tname = toplayer.baseInfo.getName()
            tcoin = 1000
            tweiwang = 0
        else:
            pId = toplayer.baseInfo.getId()
            pname = toplayer.baseInfo.getName()
            pcoin = toplayer.level.getLevel()*100
            pweiwang = 2
            tId = player.baseInfo.getId()
            tname = player.baseInfo.getName()
            tcoin = 1000
            tweiwang = 0
        #战后处理
        self.battleResultHandle(battleResult)
        #战斗奖励发放
        gm1 = 'player.finance.addCoin(%d);player.finance.addPrestige(%d);\
        player.guild.updateGuildBattleInfo(%d,%d,%d,%d)'%(pcoin,pweiwang,1,0,pcoin,pweiwang)
        gm2 = 'player.finance.addCoin(%d);\
        player.guild.updateGuildBattleInfo(%d,%d,%d,%d)'%(tcoin,0,1,tcoin,0)
#        publicnoderemote.callRemote("updateplayerInfo",pId,gm1)
#        publicnoderemote.callRemote("updateplayerInfo",tId,gm2)
        #添加国战斗信息
        self.addBattleInfo(pId, pname, tId, tname, pcoin)
        #战斗消息推送处理
        msg = u'%s: %d金币   %d威望  \n%s: %d金币  %d威望'%(pname,pcoin,pweiwang,tname,tcoin,tweiwang)
        zy = self.sceneId
        pushObjectNetInterface.getzudui_4308(data, pplist, msg,zy)
        reactor.callLater(30,self.doFight)