Пример #1
0
    def on_up_barrel(self, uid, gid, mi):
        # 强化万倍炮
        # up type 1 石头 2 精华
        mo = MsgPack(Message.MSG_SYS_UP_BARREL | Message.ID_ACK)
        up_type = mi.get_param('up_ty')
        conf = Context.Configure.get_game_item_json(gid,
                                                    'barrel.unlock.config')
        if not conf:
            return mo.set_error(1, 'system error')

        next_level = Context.Data.get_game_attr_int(uid, gid, 'barrel_level',
                                                    1) + 1
        # if next_level > len(conf):
        if next_level <= 36 or next_level > 54:
            return mo.set_error(2, 'level error')
        level_conf = conf[next_level - 1]

        diamond_count = level_conf['diamond']
        real, final = Context.UserAttr.incr_diamond(uid, gid, -diamond_count,
                                                    'up.barrel')
        if real != -diamond_count:
            return mo.set_error(3, 'lack diamond')

        if up_type == 1:
            count = -level_conf['stone']
            if not FishProps.mincr_props(uid, gid, 'on_up_barrel', 215, count,
                                         216, count, 217, count, 218, count):
                Context.UserAttr.incr_diamond(uid, gid, diamond_count,
                                              'up.barrel.error')
                return mo.set_error(3, 'lack stone')
            res, gem = self.do_up_barrel(level_conf)
            if res:
                Context.Data.set_game_attr(uid, gid, 'barrel_level',
                                           next_level)
            else:
                FishProps.mincr_props(uid, gid, 'on_up_barrel.fail_reurn', 219,
                                      gem)
                mo.set_param('num', gem)
        elif up_type == 2:
            count = -level_conf['stone']
            count_gem = -level_conf['gem']
            if not FishProps.mincr_props(uid, gid, 'on_up_barrel', 215, count,
                                         216, count, 217, count, 218, count,
                                         219, count_gem):
                Context.UserAttr.incr_diamond(uid, gid, diamond_count,
                                              'up.barrel.error')
                return mo.set_error(3, 'lack item')
            Context.Data.set_game_attr(uid, gid, 'barrel_level', next_level)
        else:
            return mo.set_error(4, 'type error')
        return mo
Пример #2
0
    def on_resolve_stone(self, uid, gid, mi):
        # 分解强化石
        mo = MsgPack(Message.MSG_SYS_RESOLVE_STONE | Message.ID_ACK)

        stone_id = mi.get_param('id')
        if stone_id not in [215, 216, 217, 218]:
            return mo.set_error(1, 'id error')
        conf = FishProps.get_config_by_id(gid, stone_id)
        count = -conf['count']
        if not FishProps.mincr_props(uid, gid, 'on_resolve_stone', stone_id,
                                     count):
            return mo.set_error(2, 'lack stone')
        gem_count = random.randint(conf['resolve'][0], conf['resolve'][1])
        FishProps.mincr_props(uid, gid, 'on_resolve_stone', 219, gem_count)
        mo.set_param('num', gem_count)
        return mo
Пример #3
0
    def on_sign_in(self, uid, gid, mi):
        mo = MsgPack(Message.MSG_SYS_SIGN_IN | Message.ID_ACK)
        conf = Context.Configure.get_game_item_json(gid, 'login.reward')
        if not conf:
            Context.Log.error('miss config')
            return mo.set_error(1, 'miss config')

        now_day, last_login, ns_login = FishAccount.get_login_info(uid, gid)
        if now_day == last_login:
            return mo.set_error(2, 'already sign in')
        elif now_day == last_login + 1:  # 连续登陆
            ns_login += 1
        else:
            ns_login = 0
        FishAccount.set_login_info(uid, gid, now_day, ns_login)
        vip_level = FishAccount.get_vip_level(uid, gid)

        if vip_level:
            conf = conf['vip']
        else:
            conf = conf['common']
        reward = conf[ns_login % len(conf)]
        real, final = Context.UserAttr.incr_chip(uid, gid, reward,
                                                 'signin.reward')

        pipe_args = []
        delta_chip = real
        # 领取月卡奖励
        success, left_days = FishProps.use_vip(uid, gid)
        if success:
            conf = Context.Configure.get_game_item_json(
                gid, 'month.card.reward')
            reward = FishProps.issue_rewards(uid, gid, conf,
                                             'month.card.reward')
            if 'diamond' in reward:
                mo.set_param('diamond', reward['diamond'])
                pipe_args.append('login.carrying.volume.diamond')
                pipe_args.append(reward['reward']['diamond'])
            if 'coupon' in reward:
                mo.set_param('coupon', reward['coupon'])
                pipe_args.append('login.carrying.volume.coupon')
                pipe_args.append(reward['reward']['coupon'])
            if 'chip' in reward:
                final = reward['chip']
                delta_chip += reward['reward']['chip']

        pipe_args.append('login.carrying.volume.chip')
        pipe_args.append(delta_chip)
        pipe_args.append('carrying.volume.chip')
        pipe_args.append(delta_chip)
        Context.Daily.mincr_daily_data(uid, gid, *pipe_args)

        if vip_level:
            vip_conf = Context.Configure.get_game_item_json(
                gid, 'vip.config')[vip_level - 1]
            stone_count = vip_conf.get('stone', 0)
            if stone_count:
                FishProps.mincr_props(uid, gid, 'vip_reward', 215, stone_count,
                                      216, stone_count, 217, stone_count, 218,
                                      stone_count)
            chip_num = vip_conf.get('chip')
            if chip_num and chip_num > final:
                add_num = chip_num - final
                real, final = Context.UserAttr.incr_chip(
                    uid, gid, add_num, 'vip_reward')
        if final:
            mo.set_param('chip', final)
        return mo