Ejemplo n.º 1
0
 def whenDie(self, objAttack):
     if objAttack.getType() == Base.PLAYER:
         try:  #增加仇人
             if objAttack.uid not in self.friendCtrl.getEnemy():
                 DbService.getFriendService().addEnemy(
                     self.uid, objAttack.uid, 0)
                 self.friendCtrl.addEnemy(objAttack)
                 from handler import FriendHandler
                 opstype = MsgDef.FriendOpsClientCmd.ADD_ENEMY
                 self.sendMsg(
                     MsgDef.ServerCmd.FRIEHND_MSG,
                     FriendHandler.processFriendPlayerMsgRet(
                         opstype, objAttack.uid, objAttack.name,
                         objAttack.job, objAttack.gender, objAttack.level,
                         True))
         except:
             ffext.error('whenDie error %s' % (self.name))
         pksinVal = 100
         if objAttack.guildCtrl.GuildRankWarWhenKillOther(self):  #行会排名战
             pksinVal = 0
         if objAttack.guildCtrl.GuildWarWhenKillOther(self):  #行会战进行中
             pksinVal = 0
         if pksinVal > 0:
             objAttack.pkSinValue += pksinVal
             #更新pk罪恶值
             objAttack.broadcast(
                 MsgDef.ServerCmd.PK_SIN_UPDATE_OPS,
                 MsgDef.PkSinUpdateRet(0, objAttack.pkSinValue,
                                       objAttack.uid)
             )  #objAttack.sendMsg(MsgDef.ServerCmd.PK_SIN_UPDATE_OPS, MsgDef.PkSinUpdateRet(0, objAttack.pkSinValue))
     self.processDrop()
     if self.mapObj and self.mapObj.copyMapHandler:
         #try:
         self.mapObj.copyMapHandler.handleObjDie(self.mapObj, self)
         #except:
         #ffext.error('mapObj.copyMapHandler.handleObjDie failed mapname=%s player=%s'%(self.mapObj.mapname, self.name))
     self.handleReborn()
     return
Ejemplo n.º 2
0
def processFriendListOps(session, msg):
    friendUid = msg.uid
    opstype = msg.opstype
    friendSession = ffext.getSessionMgr().findByUid(friendUid)
    uid = session.player.uid
    #用户申请添加别人为好友的语句
    if opstype == MsgDef.FriendOpsClientCmd.INVITE_ADD_LISTFRIEND:
        #如果好友不在线,提示用户,好友不在线,不能添加(此处由客户端判断,理论上是有用户面对面才可以添加好友)
        if None == friendSession:
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在线,无法添加'))
            return
        #判断是否已经为好友(此处由客户端判断,已经为好友的不能再次添加)
        if None != session.player.friendCtrl.getFriendByUid(friendUid):
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '双方已是好友,无法再次添加'))
            return
        #判断是否发送过好友申请如未发送,则在对方临时好友列表中添加个人信息
        # if None == friendSession.player.friendCtrl.getFriendTempByUid(uid):
        #     #将用户信息添加至好友的临时好友表中
        #     friendSession.player.friendCtrl.addFriendTemp(session.player)
        #将好友邀请发送给对方客户端
        friendSession.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, uid, session.player.name,
                                      session.player.job,
                                      session.player.gender,
                                      session.player.level, True))
        return
    #用户确认添加别人为好友的语句
    if opstype == MsgDef.FriendOpsClientCmd.VERIFY_ADD_LISTFRIEND:
        #判断是否在临时好友列表中
        # if None == session.player.friendCtrl.getFriendTempByUid(friendUid):
        #     session.sendMsg(MsgDef.ServerCmd.ERROR_MSG, processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS, '不在待验证好友列表中,无法进行确认'))
        #     return.
        if None == friendSession:
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在线,无法确认添加好友'))
            return
        #将好友关系写入数据库
        DbService.getFriendService().addFriend(uid, friendUid)
        session.player.friendCtrl.addFriend(friendSession.player)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid,
                                      friendSession.player.name,
                                      friendSession.player.job,
                                      friendSession.player.gender,
                                      friendSession.player.level, True))
        if None != friendSession:
            friendSession.player.friendCtrl.addFriend(session.player)
            friendSession.sendMsg(
                MsgDef.ServerCmd.FRIEHND_MSG,
                processFriendPlayerMsgRet(opstype, uid, session.player.name,
                                          session.player.job,
                                          session.player.gender,
                                          session.player.level, True))
        return
    #用户拒绝添加别人为好友的语句
    if opstype == MsgDef.FriendOpsClientCmd.REFUSE_ADD_LISTFRIEND:
        #判断是否在临时好友列表中
        # if None == session.player.friendCtrl.getFriendTempByUid(friendUid):
        #     session.sendMsg(MsgDef.ServerCmd.ERROR_MSG, processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS, '不在待验证好友列表中,无法进行拒绝'))
        #     return
        #忽略好友申请成功,将成功信息反馈给客户端
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid, '', 0, 0, 0, True))
        if None != friendSession:
            friendSession.sendMsg(
                MsgDef.ServerCmd.FRIEHND_MSG,
                processFriendPlayerMsgRet(opstype, uid, session.player.name,
                                          session.player.job,
                                          session.player.gender,
                                          session.player.level, True))
        return
    #用户删除好友的语句
    if opstype == MsgDef.FriendOpsClientCmd.DEL_LISTFRIEND:
        #判断是否为好友
        # if None == session.player.friendCtrl.getFriendByUid(friendUid):
        #     session.sendMsg(MsgDef.ServerCmd.ERROR_MSG, processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS, '不是好友,无法进行删除'))
        #     return
        #从数据库中将好友关系删除
        DbService.getFriendService().delFriend(uid, friendUid)
        session.player.friendCtrl.delFriend(friendUid)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid, '', 0, 0, 0, True))
        #数据库操作成功,给用户返回删除好友正常的信息
        if None != friendSession:
            #如果好友在线,则将好友删除信息反馈给好友
            friendSession.player.friendCtrl.delFriend(uid)
            friendSession.sendMsg(
                MsgDef.ServerCmd.FRIEHND_MSG,
                processFriendPlayerMsgRet(opstype, uid, '', 0, 0, 0, True))
        return
        #将ID加入仇人列表中
    #将ID加入仇人列表中
    if opstype == MsgDef.FriendOpsClientCmd.ADD_ENEMY:
        #如果对方不在线,提示用户,对方不在线,不能添加
        if None == friendSession:
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在线,无法添加'))
            return
        if checkUserEnemy(session, friendUid):
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方已在您的仇人列表中'))
            return
        #将好友关系写入数据库
        DbService.getFriendService().addEnemy(uid, friendUid, 0)
        session.player.friendCtrl.addEnemy(friendSession.player)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid,
                                      friendSession.player.name,
                                      friendSession.player.job,
                                      friendSession.player.gender,
                                      friendSession.player.level, True))
        return
    #将ID从仇人列表中删除
    if opstype == MsgDef.FriendOpsClientCmd.DEL_ENEMY:
        if not checkUserEnemy(session, friendUid):
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在您的仇人列表中'))
            return
        #将好友关系写入数据库
        DbService.getFriendService().delEnemy(uid, friendUid, 0)
        session.player.friendCtrl.delEnemyByUid(friendUid)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid, '', 0, 0, 0, True))
        return
    #将ID加入屏蔽列表中
    if opstype == MsgDef.FriendOpsClientCmd.ADD_SHIELD:
        #如果对方不在线,提示用户,对方不在线,不能添加
        if None == friendSession:
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在线,无法添加'))
            return
        if checkUserShieldPerson(session, friendUid):
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方已在您的屏蔽列表中'))
            return
        #将好友关系写入数据库
        DbService.getFriendService().addEnemy(uid, friendUid, 1)
        session.player.friendCtrl.addShieldPerson(friendSession.player)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid,
                                      friendSession.player.name,
                                      friendSession.player.job,
                                      friendSession.player.gender,
                                      friendSession.player.level, True))
        return
    #将ID从仇人列表中删除
    if opstype == MsgDef.FriendOpsClientCmd.DEL_SHIELD:
        if not checkUserShieldPerson(session, friendUid):
            session.sendMsg(
                MsgDef.ServerCmd.ERROR_MSG,
                processErrorMsgRet(opstype, MsgDef.ClientCmd.FRIENDLIST_OPS,
                                   '对方不在您的屏蔽列表中'))
            return
        #将好友关系写入数据库
        DbService.getFriendService().delEnemy(uid, friendUid, 1)
        session.player.friendCtrl.deShieldPersonByUid(friendUid)
        session.sendMsg(
            MsgDef.ServerCmd.FRIEHND_MSG,
            processFriendPlayerMsgRet(opstype, friendUid, '', 0, 0, 0, True))
        return