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
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
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