def set_explore(uid, fight_heroes): formation_action = FormationAction(uid) check_heroes = [i for i in fight_heroes if i != ''] # 判断有没有重复英雄 if len(check_heroes) != len(set(check_heroes)): print('is same') return False hero_action = HeroAction(uid) all_hero = hero_action.get_model_info() # 有没有根本不存在的英雄 if len(set(check_heroes) - set(all_hero.keys())) > 0: print('is not exist') return False info = formation_action.get_model_info() if len( set(check_heroes) & set(info.get(formation_action.explore_formation_str))) > 0: print('pve hero in fight formation') return False data = { formation_action.explore_formation_str: fight_heroes, } print(fight_heroes) if formation_action.set_model_info(data): print(data) return data return False
def refresh_income_info(uid): action = FormationAction(uid) info = action.get_model_info() print(info) capacity = info.get(action.capacity_str, 0) capacity_update_at = info.get(action.capacity_update_at_str, 0) ''' if info.get(action.fight_state_str) == action.state_injured: print('state_injured') return False ''' cur_income = info.get(action.income_str, 0) cur_time = int(time.time()) # 每个小时的获取的金币 per_hour_capacity = capacity / 10.0 income = int((cur_time - capacity_update_at) / 3600.0 * per_hour_capacity) + cur_income # print(capacity, cur_income, per_hour_capacity, income) if income == cur_income: return False res = { 'income': income, 'capacity_update_at': cur_time, } if action.set_values(res): print(res) return res return False
def use_heal(uid, config_info=None): formation_action = FormationAction(uid) formation_info = formation_action.get_model_info() if formation_info.get(formation_action.fight_state_str ) != formation_action.state_injured: return False res = formation_action.set_normal() return {'heal': res}
def enter_friend_home(uid, f_id): island_logic.refresh_income_info(f_id) # 需要记录谁进来了 hero_action = HeroAction(f_id) f_action = FormationAction(f_id) res = { 'id': f_id, 'heroes': hero_action.get_model_info(), 'formation': f_action.get_model_info(), } return res
def check_income(uid): action = FormationAction(uid) info = action.get_model_info() capacity = info.get('capacity', 0) capacity_update_at = info.get('capacity_update_at', 0) cur_income = info.get('income', 0) cur_time = int(time.time()) # 每个小时的获取的金币 per_hour_capacity = capacity / 10.0 income = int((cur_time - capacity_update_at) / 3600.0 * per_hour_capacity) + cur_income print (cur_time - capacity_update_at) print(capacity, cur_income, per_hour_capacity, income)
def set_fight(uid, fight_heroes): formation_action = FormationAction(uid) check_heroes = [i for i in fight_heroes if i != ''] # 判断有没有重复英雄 if len(check_heroes) != len(set(check_heroes)): print('is same') return False hero_action = HeroAction(uid) all_hero = hero_action.get_model_info() # 有没有根本不存在的英雄 if len(set(check_heroes) - set(all_hero.keys())) > 0: print('is not exist') return False # 读取英雄属性配置信息 hero_config = ConfigModel('doll') hero_upgrade_config = ConfigModel('doll_upgrade') # 计算战斗力 all_atk = 0 all_capacity = 0 normal_fight_per = 0.1 fight_per = 0.9 for hero_id, hero_info in all_hero.iteritems(): cur_hero_config = hero_config.get_config_by_id(hero_id) cur_lv_config = hero_upgrade_config.get_config_by_id( 70000 + int(hero_info['lv'])) if int(cur_hero_config['category'] ) != formation_action.fight_type and hero_id in check_heroes: print('is not fight hero', hero_id) return False base_atk = int(cur_hero_config['atk']) base_capacity = int(cur_hero_config['capacity']) atk_add_per = int(cur_lv_config['add_atk']) capacity_add_per = int(cur_lv_config['add_capacity']) hero_atk = base_atk * atk_add_per hero_capacity = base_capacity * capacity_add_per if hero_id in fight_heroes: all_atk += hero_atk * fight_per else: all_atk += hero_atk * normal_fight_per all_capacity += hero_capacity info = formation_action.get_model_info() cur_income = info.get(formation_action.income_str) data = { formation_action.fight_formation_str: fight_heroes, formation_action.fight_atk_str: all_atk, formation_action.capacity_str: all_capacity, } print(fight_heroes) if formation_action.set_model_info(data): print(data) return data return False
def catch(uid, opponent): if opponent == 'VIP': return guild_catch(uid) award = dict() res = dict() opponent_formation = FormationAction(opponent) user_action = UserAction(uid) opponent_formation_info = opponent_formation.get_model_info() cur_income = opponent_formation_info.get(opponent_formation.income_str, 0) catch_ct = opponent_formation_info.get(opponent_formation.catch_ct_str, 0) catch_refresh_time = opponent_formation_info.get( opponent_formation.catch_refresh_time_str, 0) cur_time = int(time.time()) catch_cd = 600 if cur_time < catch_refresh_time + catch_cd: # 时间不到需要等待 return False update_data = dict() update_data[opponent_formation.catch_refresh_time_str] = cur_time update_data[opponent_formation.catch_ct_str] = catch_ct + 1 gold = int(cur_income / 10) update_data[opponent_formation.income_str] = cur_income - gold if opponent_formation.set_model_info(update_data): user_action.add_gold(gold) print('gold', gold) award['gold'] = gold res['update'] = update_data result = True record_logic.add_record(uid, 'rob', 1) mail_action = MailAction(opponent) mail_action.add_fight_message(uid) else: result = False res['award'] = award res['result'] = result return res
def get_formation_info(uid): action = FormationAction(uid) return action.get_model_info()
def fight_against(uid, opponent): if opponent == 'VIP': return guild_attack(uid) res = dict() r_action = RecordAction(uid) r_data = r_action.get_model_info() fight_data = r_data.get(r_action.fight_group_str, []) if fight_data is None: fight_data = [] if opponent in fight_data: res['isCD'] = True return res my_formation = FormationAction(uid) my_formation_info = my_formation.get_model_info() opponent_formation = FormationAction(opponent) opponent_info = opponent_formation.get_model_info() my_atk = my_formation_info.get(opponent_formation.fight_atk_str, 0) opponent_atk = opponent_info.get(opponent_formation.fight_atk_str, 10000) my_art_info = artifact_logic.get_artifact_akt(uid) opponent_art_info = artifact_logic.get_artifact_akt(opponent) res['my_atk'] = my_atk + my_art_info.get('atk', 0) res['opponent_atk'] = opponent_atk + opponent_art_info.get('atk', 0) my_fight_heroes = my_formation_info.get(my_formation.fight_formation_str) my_fight_heroes_group = [i for i in my_fight_heroes if i != ''] eat_hero_update = eat_atk(uid, my_fight_heroes_group, res['opponent_atk']) if eat_hero_update is False: # 我受伤了已经 res['error'] = True res['update'] = my_formation_info else: user_action = UserAction(uid) # 体力的扣除 cur_vit = user_action.get_vit() cost_vit = 1 if cur_vit < cost_vit: return False if user_action.reduce_vit(cost_vit) is False: return False award_success_gold = 10 award_fail_gold = 2 award = dict() award_success_items = [ 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019 ] item_action = ItemAction(uid) if my_atk > opponent_atk: result = True opponent_formation.set_injured() award_item = random.choice(award_success_items) award_item_ct = 1 if item_action.add_model(award_item, award_item_ct): award[award_item] = award_item_ct if user_action.add_gold(award_success_gold): award['gold'] = award_success_gold else: result = False my_formation.set_injured() if user_action.add_gold(award_fail_gold): award['gold'] = award_fail_gold res['award'] = award res['result'] = result res['update'] = eat_hero_update update_data = { r_action.fight_group_str: fight_data, r_action.fight_str: r_data.get(r_action.fight_str, 0) + 1 } record_logic.add_fight_record(uid, update_data) return res