def result_fight(win_uid, lose_uid): win_real_pvp_obj = UserRealPvp.get(win_uid) lose_real_pvp_obj = UserRealPvp.get(lose_uid) print "winner {}, loser {}".format(win_uid, lose_uid) top_model = pvp_redis.get_pvp_redis(win_real_pvp_obj.user_base.subarea, top_name='real_pvp') pt_gap = lose_real_pvp_obj.pt - win_real_pvp_obj.pt win_add_pt = _calculate_win_or_lose_pt(win_real_pvp_obj.pt, pt_gap, victory=True) lose_deduct_pt = _calculate_win_or_lose_pt(lose_real_pvp_obj.pt, pt_gap, victory=False) win_pt = win_real_pvp_obj.add_pt(win_add_pt) # 运营活动 特定时间内收益翻倍 game_config = win_real_pvp_obj.game_config game_config.reload_config() multiply_income_conf = game_config.operat_config.get( "multiply_income", {}).get("pk", {}) win_pt = win_pt * multiply_income(multiply_income_conf) win_real_pvp_obj.pvp_info['total_win'] += 1 win_real_pvp_obj.pvp_info['total_join'] += 1 lose_pt = lose_real_pvp_obj.add_pt(lose_deduct_pt) lose_real_pvp_obj.pvp_info['total_lose'] += 1 lose_real_pvp_obj.pvp_info['total_join'] += 1 top_model.set(win_uid, win_real_pvp_obj.pt) top_model.set(lose_uid, lose_real_pvp_obj.pt) win_info = { 'pvp_title': win_real_pvp_obj.pvp_title, 'pt': win_real_pvp_obj.pt, 'pvp_rank': top_model.rank(win_uid), 'change_pt': win_pt, 'total_win': win_real_pvp_obj.pvp_info['total_win'], 'total_lose': win_real_pvp_obj.pvp_info['total_lose'], } lose_info = { 'pvp_title': lose_real_pvp_obj.pvp_title, 'pt': lose_real_pvp_obj.pt, 'pvp_rank': top_model.rank(lose_uid), 'change_pt': lose_pt, 'total_win': lose_real_pvp_obj.pvp_info['total_win'], 'total_lose': lose_real_pvp_obj.pvp_info['total_lose'], } win_real_pvp_obj.do_put() lose_real_pvp_obj.do_put() return {'win_info': win_info, 'lose_info': lose_info}
def result_fight(win_uid, lose_uid): win_real_pvp_obj = UserRealPvp.get(win_uid) lose_real_pvp_obj = UserRealPvp.get(lose_uid) print "winner {}, loser {}".format(win_uid, lose_uid) top_model = pvp_redis.get_pvp_redis(win_real_pvp_obj.user_base.subarea, top_name='real_pvp') pt_gap = lose_real_pvp_obj.pt - win_real_pvp_obj.pt win_add_pt = _calculate_win_or_lose_pt(win_real_pvp_obj.pt, pt_gap, victory=True) lose_deduct_pt = _calculate_win_or_lose_pt(lose_real_pvp_obj.pt, pt_gap, victory=False) win_pt = win_real_pvp_obj.add_pt(win_add_pt) # 运营活动 特定时间内收益翻倍 game_config = win_real_pvp_obj.game_config game_config.reload_config() multiply_income_conf = game_config.operat_config.get("multiply_income", {}).get("pk", {}) win_pt = win_pt * multiply_income(multiply_income_conf) win_real_pvp_obj.pvp_info['total_win'] += 1 win_real_pvp_obj.pvp_info['total_join'] += 1 lose_pt = lose_real_pvp_obj.add_pt(lose_deduct_pt) lose_real_pvp_obj.pvp_info['total_lose'] += 1 lose_real_pvp_obj.pvp_info['total_join'] += 1 top_model.set(win_uid, win_real_pvp_obj.pt) top_model.set(lose_uid, lose_real_pvp_obj.pt) win_info = { 'pvp_title': win_real_pvp_obj.pvp_title, 'pt': win_real_pvp_obj.pt, 'pvp_rank': top_model.rank(win_uid), 'change_pt': win_pt, 'total_win': win_real_pvp_obj.pvp_info['total_win'], 'total_lose': win_real_pvp_obj.pvp_info['total_lose'], } lose_info = { 'pvp_title': lose_real_pvp_obj.pvp_title, 'pt': lose_real_pvp_obj.pt, 'pvp_rank': top_model.rank(lose_uid), 'change_pt': lose_pt, 'total_win': lose_real_pvp_obj.pvp_info['total_win'], 'total_lose': lose_real_pvp_obj.pvp_info['total_lose'], } win_real_pvp_obj.do_put() lose_real_pvp_obj.do_put() return { 'win_info': win_info, 'lose_info': lose_info }
def enter_dungeon(rk_user, params, user_dungeon_obj, conf): """进入战场""" dungeon_type = params['dungeon_type'] floor_id = params['floor_id'] room_id = params['room_id'] #增加进入战场打印 print 'start_dun_%s:%s_%s_%s' % (str(rk_user.uid),dungeon_type,floor_id,room_id) ######## 运营活动 特定时间内收益翻倍 multiply = 1 if dungeon_type == 'daily': multiply_income_conf = rk_user.game_config.operat_config.get("multiply_income", {} ).get("daily_dungeon", {}).get(floor_id) multiply = multiply_income(multiply_income_conf) ######## last_info = {} data = {} #记录战斗的唯一标识 dungeon_uid = utils.create_gen_id() data['dungeon_uid'] = dungeon_uid last_info['dungeon_uid'] = dungeon_uid #新用户前7天失败不扣体力 付费用户失败不扣体力 need_stamina = int(conf['stamina']) last_info['dungeon_stamina'] = need_stamina #计算每一个小节的敌将和掉落信息 steps_res = calculate_steps(params, conf, rk_user, multiply) ######## 运营活动 特定时间额外掉落物品 扫荡时也有类似逻辑 万恶的代码 more_drop = activity.more_dungeon_drop(dungeon_type, floor_id, room_id, times=1) if more_drop: all_drop_info = steps_res['all_drop_info'] for thing_type, things_id_num in more_drop.items(): if thing_type == 'gold': steps_res['dungeon_gold'] = steps_res['dungeon_gold'] + more_drop['gold']['num'] continue all_drop_info.setdefault(thing_type, {}) for thing_id, num in things_id_num.items(): if thing_type == 'soul': if 'card' in thing_id: soul_type = 'card' elif 'equip' in thing_id: soul_type = 'equip' all_drop_info[thing_type].setdefault(soul_type, {}) all_drop_info[thing_type][soul_type][thing_id] = all_drop_info[thing_type][soul_type].get(thing_id, 0) + num else: all_drop_info[thing_type][thing_id] = all_drop_info[thing_type].get(thing_id, 0) + num ################### #格式化返回的数据 data['all_drop_info'] = steps_res['all_drop_info'] data['steps_info'] = steps_res['steps_info'] data['dungeon_uid'] = last_info['dungeon_uid'] data['exp_point'] = steps_res['exp_point'] data['boss_id'] = conf['boss'][0] #将本次计算的信息作为历史信息保存 last_info['floor_id'] = floor_id last_info['room_id'] = room_id last_info['dungeon_type'] = dungeon_type last_info['all_drop_info'] = steps_res['all_drop_info'] ####################################################################################### last_info['total_gold'] = steps_res['total_gold'] last_info['dungeon_gold'] = steps_res['dungeon_gold'] last_info['exp_point'] = steps_res['exp_point'] ####################################################################################### last_info["dungeon_data"] = data now = datetime.datetime.now() today_str = now.strftime('%Y-%m-%d') last_info["limit_time"] = today_str last_info['exp'] = steps_res['exp'] user_dungeon_obj.dungeon_info['last'] = last_info user_dungeon_obj.put() #将结果返回给前端 return data
def enter_dungeon(rk_user, params, user_dungeon_obj, conf): """进入战场""" dungeon_type = params['dungeon_type'] floor_id = params['floor_id'] room_id = params['room_id'] #增加进入战场打印 print 'start_dun_%s:%s_%s_%s' % (str( rk_user.uid), dungeon_type, floor_id, room_id) ######## 运营活动 特定时间内收益翻倍 multiply = 1 if dungeon_type == 'daily': multiply_income_conf = rk_user.game_config.operat_config.get( "multiply_income", {}).get("daily_dungeon", {}).get(floor_id) multiply = multiply_income(multiply_income_conf) ######## last_info = {} data = {} #记录战斗的唯一标识 dungeon_uid = utils.create_gen_id() data['dungeon_uid'] = dungeon_uid last_info['dungeon_uid'] = dungeon_uid #新用户前7天失败不扣体力 付费用户失败不扣体力 need_stamina = int(conf['stamina']) last_info['dungeon_stamina'] = need_stamina #计算每一个小节的敌将和掉落信息 steps_res = calculate_steps(params, conf, rk_user, multiply) ######## 运营活动 特定时间额外掉落物品 扫荡时也有类似逻辑 万恶的代码 more_drop = activity.more_dungeon_drop(dungeon_type, floor_id, room_id, times=1) if more_drop: all_drop_info = steps_res['all_drop_info'] for thing_type, things_id_num in more_drop.items(): if thing_type == 'gold': steps_res['dungeon_gold'] = steps_res[ 'dungeon_gold'] + more_drop['gold']['num'] continue all_drop_info.setdefault(thing_type, {}) for thing_id, num in things_id_num.items(): if thing_type == 'soul': if 'card' in thing_id: soul_type = 'card' elif 'equip' in thing_id: soul_type = 'equip' all_drop_info[thing_type].setdefault(soul_type, {}) all_drop_info[thing_type][soul_type][ thing_id] = all_drop_info[thing_type][soul_type].get( thing_id, 0) + num else: all_drop_info[ thing_type][thing_id] = all_drop_info[thing_type].get( thing_id, 0) + num ################### #格式化返回的数据 data['all_drop_info'] = steps_res['all_drop_info'] data['steps_info'] = steps_res['steps_info'] data['dungeon_uid'] = last_info['dungeon_uid'] data['exp_point'] = steps_res['exp_point'] data['boss_id'] = conf['boss'][0] #将本次计算的信息作为历史信息保存 last_info['floor_id'] = floor_id last_info['room_id'] = room_id last_info['dungeon_type'] = dungeon_type last_info['all_drop_info'] = steps_res['all_drop_info'] ####################################################################################### last_info['total_gold'] = steps_res['total_gold'] last_info['dungeon_gold'] = steps_res['dungeon_gold'] last_info['exp_point'] = steps_res['exp_point'] ####################################################################################### last_info["dungeon_data"] = data now = datetime.datetime.now() today_str = now.strftime('%Y-%m-%d') last_info["limit_time"] = today_str last_info['exp'] = steps_res['exp'] user_dungeon_obj.dungeon_info['last'] = last_info user_dungeon_obj.put() #将结果返回给前端 return data