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)
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'成功'}
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)
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}