예제 #1
0
 def TeamDelPlayer(self,pid):
     '''成员主动退出队伍
     @param pid: int 角色id
     '''
     #队伍有变动后需要推送队伍信息给所有的成员
     tid= self.pi.get(pid,None)#队伍id
     if not tid:
         return
         log.err(u'TeamFight->TeamDelPlayer(%s) self.pid=%s'%(pid,self.pi))
     teaminfo=self.info.get(tid,None)
     if not teaminfo:
         log.err(u'TeamFight->TeamDelPlayer(%s) tid=%s  self.info=%s'%(pid,tid,self.info))
         return
     if teaminfo.pid==pid:#如果队长退出队伍
         plist=teaminfo.players.keys()#队伍成员id列表
         for k in teaminfo.players.keys():
             del self.pi[k]#删除角色所在队伍信息
             self.delCXpi(k)
             #通知该角色队伍已经解散
         del self.info[tid]#删除队伍
         pushObjectNetInterface.team4304(Lg().g(581), plist)
     else:
         teaminfo.delTeamPlayer(pid)
         del self.pi[pid]
         self.delCXpi(pid)
         
     plist=teaminfo.players.keys()#队伍成员id列表
     
     pushObjectNetInterface.team4304(tid, plist)
예제 #2
0
 def TCTeamPlayer(self,pid,cid):
     '''队长将成员踢出队伍
     @param pid: int 队长角色id
     @param cid: int 成员角色id
     '''
     tid= self.pi.get(cid,None)#成员队伍id
     if not tid:
         log.err(u'TeamFight->TCTeamPlayer(%s,%s) self.pid=%s'%(pid,cid,self.pi))
     teaminfo=self.info.get(tid,None)
     if not teaminfo:
         log.err(u'TeamFight->TCTeamPlayer(%s,%s) tid=%s  self.info=%s'%(pid,cid,tid,self.info))
         return {'result':False,'message':Lg().g(479)}
     if not teaminfo.pid==pid:
         return{'result':False,'message':Lg().g(582)}
     if cid==pid:
         return{'result':False,'message':Lg().g(583)}
     
     teaminfo.delTeamPlayer(cid)
     del self.pi[cid]
     self.delCXpi(cid)
     pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(584),[cid])
     plist=teaminfo.players.keys()#队伍成员id列表
     pushObjectNetInterface.team4304(tid, plist)#推送其他队伍成员队伍信息
     pushObjectNetInterface.teamClean4304(tid, [cid])
     return{'result':True,'message':u'成功'}
예제 #3
0
 def dismissTeam(self,tid):
     '''解散队伍
     @param teamid: int 队伍id
     '''
     teaminfo=self.info.get(tid,None)#获取队伍类
     if not teaminfo:
         return 
     if teaminfo:
         plist=teaminfo.players.keys()#队伍所有成员列表
         for pcid in plist:
             del self.pi[pcid]
             self.delCXpi(pcid)
         del self.info[tid]
         plist=teaminfo.players.keys()#队伍成员id列表
         pushObjectNetInterface.team4304(tid, plist)
 #        pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(581), plist)
     else:
         log.err(u'dismissTeam(%s)'%tid)
예제 #4
0
 def TeamAddPlayer(self,player,tid,wz):
     '''角色加入队伍
     @param player: obj 角色实例
     @param tid: int 要加入队伍的id
     @param wz: int 阵法位置
     '''
     #队伍有变动后需要推送队伍信息给所有的成员
     if not configure.isteamInstanceTime(player.level.getLevel()):
         return {'result':False,'message':Lg().g(580),'tid':0}
     pid=player.baseInfo.getId()#角色id
     teid= self.pi.get(pid,None)#原始队伍id
     teaminfo=self.info.get(tid,None)#队伍信息
     if not teaminfo:#如果没有队伍信息
         pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(624), [pid])
         return {'result':False,'message':Lg().g(479),'tid':tid}
     typeid=teaminfo.type
     if not self.iscsxz(pid, typeid):
         pushObjectNetInterface.pushOtherMessageByCharacterId(Lg().g(645), [pid])
         return {'result':False,'message':Lg().g(645),'tid':tid}
     
     if teaminfo.zf[wz]>0: 
         return{'result':False,'message':Lg().g(577),'tid':tid}
     if teaminfo.count>=5:
         return{'result':False,'message':Lg().g(578),'tid':tid}
     if teid:
         if tid==teid:
             return{'result':False,'message':Lg().g(579),'tid':tid}
         else:
             self.TeamDelPlayer(pid)#退出原始队伍
     teaminfo.addTeamPlayer(player, wz)
     plist=teaminfo.players.keys()#队伍成员id列表
     plist.remove(pid)
     pushObjectNetInterface.team4304(tid, plist)
     self.pi[pid]=tid
     self.addCXpi(pid)
     return {'result':True,'message':Lg().g(166),'tid':tid}