• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python redis.hset函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中redis.redis.hset函数的典型用法代码示例。如果您正苦于以下问题:Python hset函数的具体用法?Python hset怎么用?Python hset使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了hset函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: __migrate_accounts_registered

    def __migrate_accounts_registered(self):
        try:
            yield redis.delete( DICT_ACCOUNT_REGISTERED )
            yield redis.delete( DICT_NICKNAME_REGISTERED )
            yield redis.delete( SET_CID_REGISTERED )

            db_conf = {'host': DB['host'],
                'port'       : DB['port'],
                'user'       : DB['user'],
                'passwd'     : DB['pass'],
                'db'         : DB['db_userdb'],
                'charset'    : 'utf8'
                }

            conn = MySQLdb.connect(**db_conf)
            cu   = conn.cursor()

            cu.execute('SELECT `account`,`nick_name`,`id`,`sid` FROM tb_character')
            _dataset = cu.fetchall()
            for _account_name, _nick_name, _id, _sid in _dataset:
                yield redis.hset(DICT_ACCOUNT_REGISTERED, '%s%s'%(_account_name,_sid), _id)
                yield redis.hset(DICT_NICKNAME_REGISTERED, _nick_name, _id)
                yield redis.sadd(SET_CID_REGISTERED, _id)

            cu.close()
            conn.close()

            conn = None
            cu   = None
        except Exception, e:
            reactor.callLater(1, self.__migrate_accounts_registered)
            print 'ERROR:', e
            print 'WARNING. Redis connection fail, callLater 1 second. redis:', redis
开发者ID:anson-tang,项目名称:3dkserver,代码行数:33,代码来源:server.py


示例2: __migrate_accounts_registered

    def __migrate_accounts_registered(self):
        try:
            yield redis.delete(HASH_NICKNAME_REGISTERED, HASH_MACHINE_CODE_REGISTERED, HASH_UID_MACHINE_CODE, SET_RANK_PVP_WEIGHT)

            db_conf = {'host': setting.DB_CONF['host'],
                'port'       : setting.DB_CONF['port'],
                'user'       : setting.DB_CONF['user'],
                'passwd'     : setting.DB_CONF['pass'],
                'db'         : setting.DB_CONF['userdb'],
                'charset'    : 'utf8'
                }

            conn = MySQLdb.connect(**db_conf)
            cu   = conn.cursor()

            cu.execute('SELECT `id`,`machine_code`,`nickname`,`max_weight` FROM tb_character')
            _dataset = cu.fetchall()
            for _id, _machine_code, _nickname, _max_weight in _dataset:
                yield redis.hset(HASH_NICKNAME_REGISTERED, _nickname, _id)
                yield redis.hset(HASH_MACHINE_CODE_REGISTERED, _machine_code, _id)
                yield redis.hset(HASH_UID_MACHINE_CODE, _id, _machine_code)
                yield redis.zadd(SET_RANK_PVP_WEIGHT, _id, -_max_weight)

            cu.close()
            conn.close()

            conn = None
            cu   = None
        except Exception, e:
            reactor.callLater(1, self.__migrate_accounts_registered)
            print 'ERROR:', e
            print 'WARNING. Redis connection fail, callLater 1 second. redis:', redis
开发者ID:Hengle,项目名称:twsited-server,代码行数:32,代码来源:server.py


示例3: get_dig_treasure_reward

 def get_dig_treasure_reward(self, t_type, count):
     if t_type == FREE_DIG:
         if self.free_dig_count >= 1:
             self.free_dig_count -= 1
             self.dig_total_count += 1
             self.last_dig_time = time()
             _value = (self.free_dig_count, self.dig_total_count, self.last_dig_time)
             yield redis.hset(DICT_DIG_TREASURE_INFO, self.cid, dumps(_value))
             _item_rand = yield package_open(self.user, FREE_DIG_PACAKGE)
             if _item_rand:
                 user_item_id = 0
                 _item_type, _item_id, _item_num, _notice = _item_rand
                 _res = yield item_add(self.user, ItemType=_item_type, ItemID=_item_id, ItemNum=_item_num, AddType=WAY_DIG_TREASURE_FREE)
                 defer.returnValue((_res[1], self.free_dig_count, self.dig_total_count, self.user.credits))
     elif t_type == CREDITS_DIG:
         if self.user.credits >= 20 * count and self.dig_total_count <DIG_MAX_COUNT :
             _itemList = []
             for i in xrange(count):
                 _item_rand = yield package_open(self.user, CREDITS_DIG_PACAKGE)
                 if _item_rand:
                     user_item_id = 0
                     _item_type, _item_id, _item_num, _notice = _item_rand
                     _res = yield item_add(self.user, ItemType=_item_type, ItemID=_item_id, ItemNum = _item_num, AddType=WAY_DIG_TREASURE_CREDITS)
                     _itemList.append(_res[1][0])
                 self.dig_total_count += 1
                 yield self.user.consume_credits(20, WAY_DIG_TREASURE_CREDITS)
                 self.last_dig_time = time()
                 _value = (self.free_dig_count, self.dig_total_count, self.last_dig_time)
                 yield redis.hset(DICT_DIG_TREASURE_INFO, self.cid, dumps(_value))
                 if self.dig_total_count >= DIG_MAX_COUNT :
                     break
             defer.returnValue((_itemList, self.free_dig_count, self.dig_total_count, self.user.credits))
         else:
             defer.returnValue(HAD_DIG_MAX_COUNT)
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:gsexcite_activity.py


示例4: probability_of_robot

    def probability_of_robot(cid, shard_id, limit_rate):
        '''
        @summary: 获取玩家抢机器人时的概率
        @return : True-命中碎片 False-未命中
        '''
        _base_rate = 7500 # 机器人的基础概率

        _conf = get_treasureshard_rate_conf( shard_id )
        if _conf:
            _miss_rate = yield redis.hget( HASH_TREASURESHARD_ROBOT_RATE % shard_id, cid )
            if _miss_rate is None: # 新号第一次夺宝
                _miss_rate = _conf['MaxRate']
            else:
                _miss_rate = int(_miss_rate)

            _base_rate = _conf['Rate'] + _miss_rate
            if _base_rate >= _conf['MaxRate']:
                _base_rate = _conf['MaxRate']

            _miss_rate += _conf['AddRate']
        else:
            log.warn( 'No such conf in sysconfig:treasureshard_rate, shard_id:', shard_id )
            defer.returnValue( False )

        if limit_rate <= _base_rate: # 命中
            _miss_rate = 0
            yield redis.hset( HASH_TREASURESHARD_ROBOT_RATE % shard_id, cid, _miss_rate )
            defer.returnValue( True )
        else:
            yield redis.hset( HASH_TREASURESHARD_ROBOT_RATE % shard_id, cid, _miss_rate )
            defer.returnValue( False )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:31,代码来源:avoidwar.py


示例5: login

def login(p, req):
    log.warn("=======req: ", req)
    machine_code, = req
    if not machine_code:
        defer.returnValue((MACHINE_CODE_ERROR, {}))

    uid = yield redis.hget(HASH_MACHINE_CODE_REGISTERED, machine_code)
    p.uid = uid
    info = dict()
    # 创建新玩家
    if not uid:
        #TODO random nickname
        nickname = machine_code
        character_mgr = Character(0, machine_code, nickname)
        yield character_mgr.new(machine_code, nickname)

        uid = character_mgr.uid
        yield redis.hset(HASH_NICKNAME_REGISTERED, nickname, uid)
        yield redis.hset(HASH_MACHINE_CODE_REGISTERED, machine_code, uid)
        info = character_mgr.info()
    else:
        # 检查已登录时, 释放旧的连接 提示有重复登陆
        user = g_UserMgr.getUserLogined(uid, p)
        if not user:
            nickname = yield redis.hget(HASH_NICKNAME_REGISTERED, uid)
            character_mgr = Character(uid, machine_code, nickname)
            yield character_mgr.load()
            user = g_UserMgr.loginUser(p, uid, machine_code, nickname, character_mgr)
        if user:
            info = user.character_mgr.info()

    info['constants'] = constant_data()
    info['server_time'] = int(time()*1000)
    defer.returnValue((0, info))
开发者ID:Hengle,项目名称:twsited-server,代码行数:34,代码来源:login.py


示例6: get_group_buy_info

    def get_group_buy_info(self):
        _infos = yield redis.hgetall(DICT_GROUP_BUY_INFO)
        if not _infos:
            _group_buy_info = {1:0,2:0,3:0,4:0}  #buy_type:buy_num
            for buy_type in xrange(1,5):
                yield redis.hset(DICT_GROUP_BUY_INFO, buy_type, dumps(_group_buy_info[buy_type]))
        else:
            _group_buy_info = dict()
            for k, v in _infos.iteritems():
                _group_buy_info[k] = loads(v)

        _res = []
        _ret = []
        for _buy_type, _bought_num in _group_buy_info.iteritems():
           _res.append([_buy_type, _bought_num])

        _stream = yield redis.hget(DICT_GROUP_BUY_PERSON_INFO, self.cid)#[[buy_count, [status,2,3,4]],..]
        if _stream:
            try:
                _data = loads(_stream)
                if _data:
                    # [bought_count, [0,0,0,0]]
                    for _bought_count_info, _info in zip(_data, _res):
                        _info.append(_bought_count_info)
                        _ret.append(_info)
            except:
                log.exception()
        else:
            _value = [[0,[0,0,0,0]]] * 4
            yield redis.hset(DICT_GROUP_BUY_PERSON_INFO, self.cid, dumps(_value))
            for _info in _res:
                _info.append([0,[0,0,0,0]])
                _ret.append(_info)
        defer.returnValue( _ret )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:gsexcite_activity.py


示例7: add_daily_pay_record

def add_daily_pay_record(character_id, add_cost):
    ''' new pay record.
    '''
    pay_date = datetime.now().strftime("%Y-%m-%d")
    # old pay record
    _data = yield redis.hget(HASH_DAILY_PAY_RECORD, pay_date)
    if _data:
        _data = loads(_data)
    else:
        _data = []

    # 新增豪华签到时间点
    _pay_login_data = yield redis.hget(HASH_PAY_LOGIN_PACKAGE, character_id)
    if not _pay_login_data:
        yield redis.hset(HASH_PAY_LOGIN_PACKAGE, character_id, dumps([int(time()), 1, 0]))

    _had_cost = add_cost
    for _record in _data:
        if _record[0] == character_id:
            _record[1] += add_cost
            _had_cost = _record[1]
            break
    else:
        _data.append( [character_id, add_cost] )

    # update pay record
    yield redis.hset(HASH_DAILY_PAY_RECORD, pay_date, dumps(_data))

    defer.returnValue( _had_cost )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:29,代码来源:daily_pay.py


示例8: buy_group_package

 def buy_group_package(self, buy_type):
     if buy_type not in get_group_buy_conf().keys():
         defer.returnValue( BUY_GROUP_TYPE_WRONG )
     _conf = get_group_buy_conf(buy_type)
     _stream = yield redis.hget(DICT_GROUP_BUY_PERSON_INFO, self.cid)
     _data = loads(_stream)
     #[[buy_count, [0,0,0,0]], ......]
     bought_count, _info = _data[buy_type-1]
     if bought_count + 1 > _conf["LimitNum"]:
         defer.returnValue(GROUP_BUY_MAX_COUNT)
     if self.user.credits < _conf["CurrentPrice"]:
         defer.returnValue(CHAR_CREDIT_NOT_ENOUGH)
     yield self.user.consume_credits(_conf["CurrentPrice"], WAY_GROUP_BUY)
     bought_count +=1
     _st = yield redis.hget(DICT_GROUP_BUY_INFO, buy_type)
     _datas = loads(_st)
     #buy_type:buy_num
     _total_buy_count = _datas
     if bought_count == 1:
         _total_buy_count += 1
     _data[buy_type-1] = [bought_count, _info]
     yield redis.hset(DICT_GROUP_BUY_PERSON_INFO, self.cid, dumps(_data))
     yield redis.hset(DICT_GROUP_BUY_INFO, buy_type, dumps(_total_buy_count))
     _item_type, _item_id, _item_num = _conf['ItemType'], _conf['ItemID'], _conf['ItemNum']
     _res = yield item_add(self.user, ItemType=_item_type, ItemID=_item_id, ItemNum = _item_num, AddType=WAY_GROUP_BUY)
     _result = (buy_type, _total_buy_count, bought_count, _res[1][0], self.user.credits)
     defer.returnValue( _result )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:27,代码来源:gsexcite_activity.py


示例9: get_campcard_data

    def get_campcard_data(self):
        ''' 获取玩家的阵营抽卡信息 '''
        reset_flag = False
        curr_time  = int(time())
        comm_data  = yield redis.hget(HASH_CAMPRAND_COMMON, 'CAMPRAND')
        if comm_data:
            comm_data = loads(comm_data)
            if curr_time >= comm_data[0]:
                reset_flag = True
                comm_data[0] += CAMP_RAND_TIME
                comm_data[1] = 0 if len(CAMP_GROUP_IDS) <= comm_data[1]+1 else comm_data[1] + 1
                yield redis.hset(HASH_CAMPRAND_COMMON, 'CAMPRAND', dumps(comm_data))
            else:
                camp_data = yield redis.hget(HASH_CAMPRAND_COMMON, self.cid)
                if camp_data:
                    camp_data = loads(camp_data)
                    if 1 == timestamp_is_today(camp_data[0]):
                        curr_camp_data, next_camp_data = camp_data[1], camp_data[2]
                    else:
                        reset_flag = True
                else:
                    reset_flag = True
        else:
            reset_flag = True
            comm_data = [get_reset_timestamp() + CAMP_RAND_TIME, 0]
            yield redis.hset(HASH_CAMPRAND_COMMON, 'CAMPRAND', dumps(comm_data))

        if reset_flag:
            curr_camp_data = [[camp_id, 0] for camp_id in CAMP_GROUP_IDS[comm_data[1]]]
            next_group_id  = 0 if len(CAMP_GROUP_IDS) <= comm_data[1]+1 else comm_data[1] + 1
            next_camp_data = [[camp_id, 0] for camp_id in CAMP_GROUP_IDS[next_group_id]]
            yield redis.hset(HASH_CAMPRAND_COMMON, self.cid, dumps([curr_time, curr_camp_data, next_camp_data]))

        defer.returnValue( (comm_data[0], curr_camp_data, next_camp_data) )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:gsshop.py


示例10: get_dig_treasure_info

    def get_dig_treasure_info(self):
        flag = 0
        _stream = yield redis.hget(DICT_DIG_TREASURE_INFO, self.cid)
        if _stream:
            try:
                _data = loads(_stream)
                if _data:
                    self.free_dig_count, self.dig_total_count, self.last_dig_time = _data
                    if not timestamp_is_today(self.last_dig_time):
                        self.free_dig_count = get_vip_conf(self.user.vip_level)["FreeDigCount"]
                        self.vipLevel = self.user.vip_level
                        self.last_dig_time = time()
                        _value = (self.free_dig_count, self.dig_total_count, self.last_dig_time)
                        yield redis.hset(DICT_DIG_TREASURE_INFO, self.cid, dumps(_value))
                    else:
                        if self.user.vip_level > self.vipLevel:
                            count = get_vip_conf(self.user.vip_level)["FreeDigCount"] - get_vip_conf(self.vipLevel)["FreeDigCount"]
                            self.free_dig_count += count
                            self.vipLevel = self.user.vip_level
                            _value = (self.free_dig_count, self.dig_total_count, self.last_dig_time)
                            yield redis.hset(DICT_DIG_TREASURE_INFO, self.cid, dumps(_value))

            except:
                log.exception()
        else:
            self.free_dig_count = get_vip_conf(self.user.vip_level)["FreeDigCount"]
            self.dig_total_count = 0
            self.last_dig_time = time()
            self.vipLevel = self.user.vip_level
            _value = (self.free_dig_count, self.dig_total_count, self.last_dig_time)
            yield redis.hset(DICT_DIG_TREASURE_INFO, self.cid, dumps(_value))
        if self.free_dig_count > 0:
            flag = 1
        defer.returnValue(flag)
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:gsexcite_activity.py


示例11: __rand_material

    def __rand_material(self, exchange_type, turn, add_cnt, except_material = None ):
        _all_turns = get_exchange_refresh_conf( exchange_type, turn )

        _tmp_list_idx_and_rate = [] #暂存每个材料的index和计算出来的当前权重值

        _material   = None
        _rate_total = 0 #所有需要随机材料的总权重
        _curr_rate  = 0
        _rand       = 0

        if _all_turns:
            _all_turn_cnt = yield redis.hmget( HASH_EXCHANGE_REFRESH_RATE, [ '{0}.{1}'.format( self.cid, _conf[0] ) for _conf in _all_turns ] )
            _len_cnt = len( _all_turn_cnt )

            for _idx, _turn_conf in enumerate( _all_turns ):
                if except_material == [ _turn_conf[3], _turn_conf[4], _turn_conf[5] ]: # 该材料不能参与随机,防止材料重复, DK-1663
                    continue

                _cnt  = ( _all_turn_cnt[ _idx ] if _idx < _len_cnt else 0 ) or 0
                _rate = _turn_conf[6] + ( ( _cnt * _turn_conf[7] ) if _cnt else 0 )

                if _rate >= _turn_conf[8]:
                    _rate = _turn_conf[8]

                _tmp_list_idx_and_rate.append( [ _idx, _rate, _cnt ] )

                _rate_total += _rate

            _rand = rand_num( _rate_total )

            for _c_idx, _c_rate, _c_cnt in _tmp_list_idx_and_rate:
                if _rand <= _curr_rate + _c_rate: #hitted
                    _conf = _all_turns[ _c_idx ]

                    #这里是material和target的数据结构了,找不到来这里找
                    if not _material:
                        _material = [ _conf[3], _conf[4], _conf[5] ]

                    if add_cnt:
                        redis.hset( HASH_EXCHANGE_REFRESH_RATE, '{0}.{1}'.format( self.cid, _conf[0] ), 0 ) #命中后重置
                else:
                    if add_cnt:
                        redis.hset( HASH_EXCHANGE_REFRESH_RATE, '{0}.{1}'.format( self.cid, _conf[0] ), _c_cnt + 1 ) #miss后累加

                _curr_rate += _c_rate

        if not _material:
            log.warn( 'missing rand material. list_idx_and_rate as: {0}, exchange_type:{1}, turn:{2}, _all_turns:{3}, _curr_rate:{4}, _rate_total:{5}, _rand:{6}.'.format( 
                    _tmp_list_idx_and_rate, exchange_type, turn, _all_turns, _curr_rate, _rate_total, _rand ) )

        #log.debug( 'list_idx_and_rate as: {0}, exchange_type:{1}, turn:{2}, _all_turns:{3}, _curr_rate:{4}, _rate_total:{5}, _rand:{6}, _material:{7}.'.format( 
        #                _tmp_list_idx_and_rate, exchange_type, turn, _all_turns, _curr_rate, _rate_total, _rand, _material ) )

        defer.returnValue( _material )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:54,代码来源:gsexchange_limited.py


示例12: sync_old_record

    def sync_old_record(self, data):
        _all_conf = get_all_achievement_conf()
        if not _all_conf:
            defer.returnValue( NOT_FOUND_CONF )
        for quest_type, _info in data.iteritems():
            _f = sorted(_info.items())
            for _id, _v in _f:
                if not _all_conf.get(quest_type, {}).has_key(_id):
                    continue
                _target_value, _pid, _ = _all_conf[quest_type][_id]
                if int(_pid) != 0 and int(_info.get(int(_pid), [0])[0]) == 0:
                    continue
                if _v[0] == 1 or _v[0] == 2:
                    continue
                if quest_type in (ACHIEVEMENT_TYPE_1 + ACHIEVEMENT_TYPE_2):                
                    if int(_v[1]) >= int(_target_value) and int(_v[0]) == 0:
                        _info[_id][0] = 1
                elif quest_type in [ACHIEVEMENT_QUEST_ID_7, ACHIEVEMENT_QUEST_ID_19]:
                    #角斗场排名, 大乱斗
                    if int(_v[1]!=0) and int(_v[1]) <= int(_target_value) and _v[0] == 0:
                        _info[_id][0] = 1
            #    elif quest_type in ACHIEVEMENT_TYPE_2: 
            #        if _v[1] >= int(_target_value) and int(_v[0]) == 0:
            #            _v[0] = 1

        yield redis.hset(HASH_ACHIEVEMENT_INFO, self.cid, dumps(data))
        res = []
        for _type, _info in data.iteritems():
            for _id, value in _info.iteritems():
                res.append([_id, value[0], value[1]])

        defer.returnValue(res)
开发者ID:anson-tang,项目名称:3dkserver,代码行数:32,代码来源:gsachievement.py


示例13: write_mail

def write_mail(p, req):
    ''' 保存新的邮件 
    page_type: 1:全部; 2:好友; 3:系统; 4:战斗
    '''
    try:
        rcv_cid, page_type, module_id, detail = req
        send_time = int(time())
    except:
        rcv_cid, page_type, module_id, detail, send_time = req

    _key = HASH_MAIL_CONTENT % (page_type, rcv_cid )
    _primary = yield redis.hincrby( _key, MAIL_PRIMARY_INC, 1 )
 
    content = dumps( (_primary, send_time, page_type, module_id, detail) )
    yield redis.hset(_key, _primary, content)

    # 最多保存100条 
    _del_fields = []

    _all_fields = yield redis.hkeys( _key )
    _all_fields = sorted( _all_fields, reverse=True )
    if len(_all_fields) > 101:
        _del_fields = _all_fields[101:]
        if MAIL_PRIMARY_INC in _del_fields:
            _del_fields.remove( MAIL_PRIMARY_INC )

    if _del_fields:
        yield redis.hdel( _key, *_del_fields )

    # 通知在线玩家有新邮件
    rcv_user = g_UserMgr.getUserByCid(rcv_cid)
    if rcv_user and not rcv_user.notify_mail:
        rcv_user.notify_mail = True
        gw_send(rcv_cid, 'new_mail_notify', None)
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:mail.py


示例14: status

    def status(self):
        ''' 获取玩家的成就当前的状态, 含奖励和任务进度
        return [[_id, status, value],..]
        redis: actype:{_id:(status,value)}
        '''
        res_err = self.user.check_function_open(FUNCTION_ACHIEVEMENT)
        if res_err:
            defer.returnValue( res_err )

        data = yield redis.hget(HASH_ACHIEVEMENT_INFO, self.cid)
        res = []
        if not data:
            _all_conf = get_all_achievement_conf()
            _d = {}
            if _all_conf:
                for acType, _info in _all_conf.iteritems():
                    for _id, _v in _info.iteritems():
                        status = 0
                        if _d.has_key(acType):
                            _d[acType][_id] = [status, 0]
                        else:
                            _d[acType] = {_id:[status,0]}
                        res.append([_id, 0, 0])

                yield redis.hset(HASH_ACHIEVEMENT_INFO, self.cid, dumps(_d))
            defer.returnValue( res )
            
        _data = loads( data )
        res = yield self.sync_old_record(_data)

        defer.returnValue( res )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:31,代码来源:gsachievement.py


示例15: sync

 def sync( self, force=False ):
     if self.__dirty or force:
         _info = self.__cid, self.__name, self.__lead_id, self.__level, self.__vip_level, \
                 self.__might, self.__rank, self.__logoff_time, self.__position, \
                 self.__contribution, self.__contribution_total, self.cd_time
         yield redis.hset( HASH_ALLIANCE_MEMBER, self.__cid, dumps( _info ) )
         self.__dirty = False
开发者ID:anson-tang,项目名称:3dkserver,代码行数:7,代码来源:member.py


示例16: get_group_buy_reward

 def get_group_buy_reward(self, buy_type, buy_count):
     if buy_type not in get_group_buy_conf().keys() or buy_count not in get_group_buy_count():
         defer.returnValue( BUY_GROUP_TYPE_WRONG )
     _wlist = list(set(get_group_buy_count()))
     _st = yield redis.hget(DICT_GROUP_BUY_INFO, buy_type)
     #buy_type:buy_num
     _data = loads(_st)
     _count = _data
     if _count < buy_count:
         defer.returnValue( BUY_NUM_NOT_ENOUGH )
     _stream = yield redis.hget(DICT_GROUP_BUY_PERSON_INFO, self.cid)
     _info = loads(_stream)
     #[[buy_count,[status,,,]],...]
     _buy_count, _get_info = _info[buy_type-1]
     if _buy_count <= 0:
         defer.returnValue( BUY_STATUS_IS_WRONG )
     _index = _wlist.index(buy_count)
     if _get_info[_index] == 1:
         defer.returnValue( BUY_STATUS_IS_WRONG)
     _get_info[_index] = 1
     _info[buy_type-1] = [_buy_count, _get_info]
     _reward = get_group_buy_reward_list_conf(buy_type, buy_count)      
     _item_type, _item_id, _item_num = _reward.split(":")
     _res = yield item_add(self.user, ItemType= int(_item_type), ItemID= int(_item_id), ItemNum = int(_item_num), AddType=WAY_GROUP_BUY)
     yield redis.hset(DICT_GROUP_BUY_PERSON_INFO, self.cid, dumps(_info))
     defer.returnValue((buy_type, buy_count, _res[1][0]))
开发者ID:anson-tang,项目名称:3dkserver,代码行数:26,代码来源:gsexcite_activity.py


示例17: atlaslist_award

    def atlaslist_award(self, category_id, second_type, quality):
        _award_data = yield redis.hget(HASH_ATLASLIST_AWARD, self.cid)
        if _award_data:
            _award_data = loads(_award_data)
        else:
            _award_data = []

        _new_award = (category_id, second_type, quality)
        if _new_award in _award_data:
            defer.returnValue( ATLASLIST_AWARD_HAD_ERROR )

        _category_conf = get_atlaslist_category_conf(category_id)
        _second_conf   = _category_conf.get(second_type, {})
        _quality_conf  = _second_conf.get(quality, {})
        if not _quality_conf or not _quality_conf['Awardlist']:
            defer.returnValue( NOT_FOUND_CONF )
 
        _award_data.append( _new_award )
        yield redis.hset(HASH_ATLASLIST_AWARD, self.cid, dumps( _award_data ))
        items_return = []
        for _type, _id, _num in _quality_conf['Awardlist']:
            model = ITEM_MODELs.get( _type, None )
            if not model:
                log.error('Unknown item type. cid: {0}, item_type: {1}, item_id: {2}, item_num: {3}.'.format( self.cid, _type, _id, _num ))
                continue
            res_err, value = yield model(self.user, ItemID=_id, ItemNum=_num, AddType=WAY_ATLASLIST_AWARD, CapacityFlag=False)
            if not res_err and value:
                for _v in value:
                    items_return = total_new_items( _v, items_return )

        defer.returnValue( items_return )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:31,代码来源:gsatlaslist.py


示例18: sacrifice_info

    def sacrifice_info(self, member):
        ''' 公会女娲宫的信息 '''
        _data = yield redis.hget(HASH_ALLIANCE_SACRIFICE, self.__id)
        if _data:
            _data = loads( _data )
            # 判断是否需要更新0点更新
            _reset_timestamp = get_reset_timestamp()
            if _data[0] <= _reset_timestamp:
                _data = [int(time()), 0, []]
                yield redis.hset(HASH_ALLIANCE_SACRIFICE, self.__id, dumps(_data))
        else:
            _data = [int(time()), 0, []]
        # 获取玩家的拜祭信息
        for _cid, _contribution_count, _credits_count in _data[2]:
            if _cid == member.cid:
                break
        else:
            _contribution_count, _credits_count = 0, 0
 
        _a_level_conf = get_alliance_level_conf(self.__level)
        if not _a_level_conf:
            defer.returnValue( NOT_FOUND_CONF )
        _left_alliance_count = _a_level_conf['MembersCount'] - _data[1]
        _left_alliance_count = 0 if _left_alliance_count < 0 else _left_alliance_count

        _left_contribution_count = 0 if _contribution_count > 0 else 1
        _vip_level_conf = get_vip_conf(member.vip_level)
        if _vip_level_conf:
            _left_credits_count = _vip_level_conf['GuildSacrificeCount'] - _credits_count
            _left_credits_count = 0 if _left_credits_count < 0 else _left_credits_count
        else:
            _left_credits_count = 0

        defer.returnValue( (_left_alliance_count, _left_contribution_count, _left_credits_count, self.__level, self.__exp, _data) )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:34,代码来源:alliance.py


示例19: update_avoid_cache

    def update_avoid_cache(self, treasure_id):
        '''
        @summary: 维护宝物碎片列表的同时, 维护redis中的玩家阵营数据
        '''
        if self.user.base_att.level <= AVOID_WAR_LEVEL:
            log.warn('User level <= 12 could not be plunder. cid: {0}.'.format( self.cid ))
            defer.returnValue( REQUEST_LIMIT_ERROR )

        treasure_conf = get_item_by_itemid( treasure_id )
        if not treasure_conf:
            log.error('Can not find conf. treasure_id: {0}.'.format( treasure_id ))
            defer.returnValue( NOT_FOUND_CONF )
        _shard_list = [splited[1] for splited in treasure_conf['ChangeList'] ]

        # 只有同时拥有“一个宝物的2个或者2个以上,不同位置碎片”的玩家才会被加入被抢夺列表
        _haved = 0
        _plunder_list = [] # 可被抢夺的碎片
        for _shard_id in _shard_list:
            for attrib in self.__gsattribs.itervalues():
                if attrib.item_id == _shard_id:
                    _haved += 1
                    _plunder_list.append( _shard_id )
                    break

        #_treasure_ids = yield redis.hget( HASH_TREASURE_CHARACTER_IDS, self.cid )
        #if _treasure_ids:
        #    _treasure_ids = loads(_treasure_ids)
        #else:
        #    _treasure_ids = []

        #log.info('For Test. _haved: {0}, cid: {1}, _shard_id: {2}, _shard_list: {3}, _plunder_list: {4}.'.format( _haved, self.cid, _shard_id, _shard_list, _plunder_list ))
        for _shard_id in _shard_list:
            yield redis.hdel( TPL_TREASURE_SHARD_GOT % _shard_id, self.cid )

        #if treasure_id in _treasure_ids:
        #    _treasure_ids.remove( treasure_id )

        if _haved > 1:
            #_flag   = True  # 成功获取玩家有效阵容
            #_exists = yield redis.hexists( HASH_TREASURE_CHARACTER_CAMP, self.cid )
            #if (not _exists):
            #    _all_camps = yield self.user.get_camp()
            #    fellow_ids = []
            #    if _all_camps:
            #        for camp_data in _all_camps[1]:
            #            if not camp_data or not camp_data[1]:
            #                continue
            #            fellow_ids.append( camp_data[1][1] )

            #    # 有效的玩家阵容
            #    if fellow_ids:
            #        yield redis.hset( HASH_TREASURE_CHARACTER_CAMP, self.cid, dumps(_all_camps) )
            #        #log.info('For Test. save treasure camp. cid: {0}.'.format( self.cid ))
            #    else:
            #        _flag = False
            #        log.error('Save char treasure camp data fail. cid: {0}, _all_camps: {1}.'.format( self.cid, _all_camps ))

            for _shard_id in _plunder_list:
                yield redis.hset( TPL_TREASURE_SHARD_GOT % _shard_id, self.cid, dumps( (self.cid, self.user.level, self.user.base_att.nick_name) ) )
开发者ID:anson-tang,项目名称:3dkserver,代码行数:59,代码来源:gsbag_treasureshard.py


示例20: update_star_rewarded

 def update_star_rewarded(self, scene_id, star_count):
     ''' 更新已领奖的副本星数记录 '''
     old_star_rewarded = yield self.get_star_rewarded(scene_id)
     if star_count not in old_star_rewarded:
         self.star_rewarded.setdefault(scene_id, []).append( star_count )
         yield redis.hset( HASH_SCENE_STAR_REWARDED, self.cid, dumps( self.star_rewarded) )
     else:
         log.error('scene star had been rewarded.')
开发者ID:anson-tang,项目名称:3dkserver,代码行数:8,代码来源:gsscene_new.py



注:本文中的redis.redis.hset函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python sentinel.Sentinel类代码示例发布时间:2022-05-26
下一篇:
Python redis.hget函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap