Beispiel #1
0
 def __init__(self, id, name=u'', dynamicId=-1):
     self.baseInfo = UserBaseInfoComponent(self, id)
     self.dynamicId = dynamicId
     self.characterList = []
     self.last_character = -1
     self.initUser()
     self.initUserCharacterList()
Beispiel #2
0
 def __init__(self, id, name=u"", dynamicId=-1):
     self.baseInfo = UserBaseInfoComponent(self, id)
     self.dynamicId = dynamicId
     self.characterList = []
     self.last_character = -1
     self.initUser()
     self.initUserCharacterList()
Beispiel #3
0
class User:
    '''用户类'''
    def __init__(self, id, name=u'', dynamicId=-1):
        self.baseInfo = UserBaseInfoComponent(self, id)
        self.dynamicId = dynamicId
        self.characterList = []
        self.last_character = -1
        self.initUser()
        self.initUserCharacterList()

    def initUser(self):
        '''初始化用户类'''
        data = dbaccess.getUserInfo(self.baseInfo.id)
        if not data:
            data = {}
            dbaccess.creatUserCharacter(self.baseInfo.id)
        self.baseInfo.setCharacter_1(data.get('character_1', 0))
        self.baseInfo.setCharacter_2(data.get('character_2', 0))
        self.baseInfo.setCharacter_3(data.get('character_3', 0))
        self.baseInfo.setCharacter_4(data.get('character_4', 0))
        self.baseInfo.setCharacter_5(data.get('character_5', 0))
        self.baseInfo.setPid(data.get('pid', 0))
        self.last_character = data.get('last_character', -1)

    def getLastCharacter(self):
        '''获取上一次登录的角色'''
        return self.last_character

    def updateLastCharacter(self, characterId):
        '''更新上次登录的角色'''
        self.last_character = characterId
        dbUser.updateUserInfo(self.baseInfo.id,
                              {'last_character': characterId})

    def getDynamicId(self):
        '''获取用户动态ID'''
        return self.dynamicId

    def getVacancy(self):
        '''查找用户角色空位'''

        if not self.baseInfo.getCharacter_1():
            return 'character_1'
        elif not self.baseInfo.getCharacter_2():
            return 'character_2'
        elif not self.baseInfo.getCharacter_3():
            return 'character_3'
        elif not self.baseInfo.getCharacter_4():
            return 'character_4'
        elif not self.baseInfo.getCharacter_5():
            return 'character_5'
        else:
            return None

    def getCharacterFieldName(self, id):
        '''根据id 查找该角色所在用户角色关系中的字段名'''
        if id == self.baseInfo.getCharacter_1():
            return 'character_1'
        elif id == self.baseInfo.getCharacter_2():
            return 'character_2'
        elif id == self.baseInfo.getCharacter_3():
            return 'character_3'
        elif id == self.baseInfo.getCharacter_4():
            return 'character_4'
        elif id == self.baseInfo.getCharacter_5():
            return 'character_5'
        else:
            return None

    def initUserCharacterList(self):
        '''获取用户角色列表'''
        list = []
        if self.baseInfo.getCharacter_1():
            list.append(self.baseInfo.getCharacter_1())
        if self.baseInfo.getCharacter_2():
            list.append(self.baseInfo.getCharacter_2())
        if self.baseInfo.getCharacter_3():
            list.append(self.baseInfo.getCharacter_3())
        if self.baseInfo.getCharacter_4():
            list.append(self.baseInfo.getCharacter_4())
        if self.baseInfo.getCharacter_5():
            list.append(self.baseInfo.getCharacter_5())
        self.characterList = list

    def getUserCharacterListInfo(self):
        '''获取用户角色列表信息'''
        CharacterListInfo = []
        for id in self.characterList:
            info = dbaccess.getUserCharacterInfo(id)
            if not info:
                continue
            CharacterListInfo.append(info)
        return CharacterListInfo

    def creatNewCharacter(self, nickname, profession):
        '''创建新角色
        @profession (int) 角色职业 (0 新手 1战士 2 法师 3 游侠 4 牧师)
        '''
        if profession not in range(1, 5):
            return {'result': False, 'message': Lg().g(589)}
        if len(nickname) < 2 or len(nickname) > 20:
            return {'result': False, 'message': Lg().g(590)}
        for word in dbaccess.All_ShieldWord:
            if nickname.find(word[0]) != -1:
                return {'result': False, 'message': Lg().g(21)}
        fieldname = self.getVacancy()
        if not fieldname:
            return {'result': False, 'message': Lg().g(591)}
        result = dbaccess.getCharacterIdByNickName(nickname)
        if result:
            return {'result': False, 'message': Lg().g(592)}
        result = dbaccess.creatNewCharacter(nickname, profession,
                                            self.baseInfo.id, fieldname)
        if result:
            setattr(self.baseInfo, fieldname, result)
            data = {}
            data['UserCharacterListInfo'] = self.getUserCharacterListInfo()
            data['newCharacterId'] = result
            content = Lg().g(593)
            title = Lg().g(594)
            m = Mail( title=title,type =0, senderId =-1, receiverId=result,\
                            sender = Lg().g(128),content=content)
            m.mailIntoDB()
            return {'result': True, 'message': Lg().g(595), 'data': data}
        else:
            return {'result': False, 'message': Lg().g(596)}

    def deleteCharacter(self, id):
        fieldname = self.getCharacterFieldName(id)
        if not fieldname:
            return {'result': False, 'message': Lg().g(597)}
        if dbCharacter.isPresident(id):
            return {'result': False, 'message': Lg().g(598)}
        result = dbaccess.deleteUserCharacter(self.baseInfo.id, fieldname, id)
        if result:
            #            for info in self.CharacterListInfo:
            self.initUser()
            data = {}
            data['UserCharacterListInfo'] = self.getUserCharacterListInfo()
            return {'result': True, 'message': Lg().g(599), 'data': data}
        return {'result': False, 'message': Lg().g(600)}

    def dropAllCharacter(self):
        '''退出已经登陆的角色'''
        for playerID in self.characterList:
            PlayersManager().dropPlayerByID(playerID)

    def disconnectClient(self):
        '''断开'''
        msg = u"您账户其他地方登录"
        pushEnterMessage(msg, [self.dynamicId])
Beispiel #4
0
class User:
    """用户类"""

    def __init__(self, id, name=u"", dynamicId=-1):
        self.baseInfo = UserBaseInfoComponent(self, id)
        self.dynamicId = dynamicId
        self.characterList = []
        self.last_character = -1
        self.initUser()
        self.initUserCharacterList()

    def initUser(self):
        """初始化用户类"""
        data = dbaccess.getUserInfo(self.baseInfo.id)
        if not data:
            data = {}
            dbaccess.creatUserCharacter(self.baseInfo.id)
        self.baseInfo.setCharacter_1(data.get("character_1", 0))
        self.baseInfo.setCharacter_2(data.get("character_2", 0))
        self.baseInfo.setCharacter_3(data.get("character_3", 0))
        self.baseInfo.setCharacter_4(data.get("character_4", 0))
        self.baseInfo.setCharacter_5(data.get("character_5", 0))
        self.baseInfo.setPid(data.get("pid", 0))
        self.last_character = data.get("last_character", -1)

    def getLastCharacter(self):
        """获取上一次登录的角色"""
        return self.last_character

    def updateLastCharacter(self, characterId):
        """更新上次登录的角色"""
        self.last_character = characterId
        dbUser.updateUserInfo(self.baseInfo.id, {"last_character": characterId})

    def getDynamicId(self):
        """获取用户动态ID"""
        return self.dynamicId

    def getVacancy(self):
        """查找用户角色空位"""

        if not self.baseInfo.getCharacter_1():
            return "character_1"
        elif not self.baseInfo.getCharacter_2():
            return "character_2"
        elif not self.baseInfo.getCharacter_3():
            return "character_3"
        elif not self.baseInfo.getCharacter_4():
            return "character_4"
        elif not self.baseInfo.getCharacter_5():
            return "character_5"
        else:
            return None

    def getCharacterFieldName(self, id):
        """根据id 查找该角色所在用户角色关系中的字段名"""
        if id == self.baseInfo.getCharacter_1():
            return "character_1"
        elif id == self.baseInfo.getCharacter_2():
            return "character_2"
        elif id == self.baseInfo.getCharacter_3():
            return "character_3"
        elif id == self.baseInfo.getCharacter_4():
            return "character_4"
        elif id == self.baseInfo.getCharacter_5():
            return "character_5"
        else:
            return None

    def initUserCharacterList(self):
        """获取用户角色列表"""
        list = []
        if self.baseInfo.getCharacter_1():
            list.append(self.baseInfo.getCharacter_1())
        if self.baseInfo.getCharacter_2():
            list.append(self.baseInfo.getCharacter_2())
        if self.baseInfo.getCharacter_3():
            list.append(self.baseInfo.getCharacter_3())
        if self.baseInfo.getCharacter_4():
            list.append(self.baseInfo.getCharacter_4())
        if self.baseInfo.getCharacter_5():
            list.append(self.baseInfo.getCharacter_5())
        self.characterList = list

    def getUserCharacterListInfo(self):
        """获取用户角色列表信息"""
        CharacterListInfo = []
        for id in self.characterList:
            info = dbaccess.getUserCharacterInfo(id)
            if not info:
                continue
            CharacterListInfo.append(info)
        return CharacterListInfo

    def creatNewCharacter(self, nickname, profession):
        """创建新角色
        @profession (int) 角色职业 (0 新手 1战士 2 法师 3 游侠 4 牧师)
        """
        if profession not in range(1, 5):
            return {"result": False, "message": Lg().g(589)}
        if len(nickname) < 2 or len(nickname) > 20:
            return {"result": False, "message": Lg().g(590)}
        for word in dbaccess.All_ShieldWord:
            if nickname.find(word[0]) != -1:
                return {"result": False, "message": Lg().g(21)}
        fieldname = self.getVacancy()
        if not fieldname:
            return {"result": False, "message": Lg().g(591)}
        result = dbaccess.getCharacterIdByNickName(nickname)
        if result:
            return {"result": False, "message": Lg().g(592)}
        result = dbaccess.creatNewCharacter(nickname, profession, self.baseInfo.id, fieldname)
        if result:
            setattr(self.baseInfo, fieldname, result)
            data = {}
            data["UserCharacterListInfo"] = self.getUserCharacterListInfo()
            data["newCharacterId"] = result
            content = Lg().g(593)
            title = Lg().g(594)
            m = Mail(title=title, type=0, senderId=-1, receiverId=result, sender=Lg().g(128), content=content)
            m.mailIntoDB()
            return {"result": True, "message": Lg().g(595), "data": data}
        else:
            return {"result": False, "message": Lg().g(596)}

    def deleteCharacter(self, id):
        fieldname = self.getCharacterFieldName(id)
        if not fieldname:
            return {"result": False, "message": Lg().g(597)}
        if dbCharacter.isPresident(id):
            return {"result": False, "message": Lg().g(598)}
        result = dbaccess.deleteUserCharacter(self.baseInfo.id, fieldname, id)
        if result:
            #            for info in self.CharacterListInfo:
            self.initUser()
            data = {}
            data["UserCharacterListInfo"] = self.getUserCharacterListInfo()
            return {"result": True, "message": Lg().g(599), "data": data}
        return {"result": False, "message": Lg().g(600)}

    def dropAllCharacter(self):
        """退出已经登陆的角色"""
        for playerID in self.characterList:
            PlayersManager().dropPlayerByID(playerID)

    def disconnectClient(self):
        """断开"""
        msg = u"您账户其他地方登录"
        pushEnterMessage(msg, [self.dynamicId])