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)
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)
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)