def send_escort_task_invite_remote(guild_id, task_id, player_guild_id, rob_no, protect_or_rob): """ 发送邀请到玩家所在公会 """ guild = guild_manager_obj.get_guild_obj(player_guild_id) task_guild = guild_manager_obj.get_guild_obj(guild_id) task = task_guild.get_task_by_id(task_id) if protect_or_rob == 1: guild.escort_tasks_invite_protect[task_id] = { "guild_id": guild_id, "rob_no": rob_no } task.last_send_invite_time = int(get_current_timestamp()) elif protect_or_rob == 2: guild.escort_tasks_invite_rob[task_id] = { "guild_id": guild_id, "rob_no": rob_no } task.rob_task_infos[rob_no]["last_send_invite_time"] = int( get_current_timestamp()) guild.save_data() task_guild = guild_manager_obj.get_guild_obj(guild_id) return construct_task_data(task_guild.get_task_by_id(task_id), rob_no)
def start_rob_escort_remote(guild_id, task_id, rob_no, player_id): guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) # get robbed success num robbed_num = task.rob_success_times() if task.rob_success_times() >= 2: # 接受劫运任务,如果该任务已经达到最大劫运次数 return {'result': False, 'result_no': 190803} if task.has_robbed(player_id): # 已经被劫了 return {"result": False, "result_no": 190804} # construct battle units # update rob task task_item = game_configs.guild_task_config.get(task.task_no) logger.debug("task rob task infos %s %s" % (task.rob_task_infos, len(task.rob_task_infos))) rob_task_info = task.rob_task_infos[rob_no] seed1, seed2 = get_seeds() rob_task_info["seed1"] = seed1 rob_task_info["seed2"] = seed2 red_groups = [] blue_groups = [] for player_info in task.protecters: blue_group = cPickle.loads(player_info.get("BattleUnitGrop")) blue_groups.append(blue_group) for player_info in rob_task_info.get("robbers"): red_group = cPickle.loads(player_info.get("BattleUnitGrop")) red_groups.append(red_group) logger.debug("blue_groups %s" % blue_groups) logger.debug("red_groups %s" % red_groups) # pvp battle rob_result = guild_pvp_start(red_groups, blue_groups, seed1, seed2) rob_task_info["rob_result"] = rob_result rob_task_info["rob_time"] = int(get_current_timestamp()) if rob_result: robbers_num = len(rob_task_info.get("robbers")) peoplePercentage = task_item.peoplePercentage.get(robbers_num) robbedPercentage = task_item.robbedPercentage.get(robbed_num+1) robber_guild = guild_manager_obj.get_guild_obj(rob_task_info.get("rob_guild_info").get("id")) mail_arg1 = calculate_reward(peoplePercentage, robbedPercentage, "SnatchReward", task_item, robber_guild) if robbed_num + 1 >= 2: if task_id in guild.escort_tasks_can_rob: guild.escort_tasks_can_rob.remove(task_id) guild.save_data() rob_task_info["rob_reward"] = mail_arg1 for player_info in rob_task_info.get("robbers"): send_mail(conf_id=1002, receive_id=player_info.get("id"), prize=str(get_reward(mail_arg1, robber_guild))) rob_task_info["rob_state"] = -1 task.update_reward(task_item) task.save_data() res = {"result": True, "protecters": task.protecters, "rob_task_info": rob_task_info, "task": construct_task_data(task, rob_no)} logger.debug("res %s" % res) return res
def guild_boss_battle_remote(guild_id, str_red_units, red_unpar_data, seed1, seed2): """开始战斗 """ logger.debug("hjqy_battle_remote======") guild = guild_manager_obj.get_guild_obj(guild_id) boss = guild.guild_boss red_units = cPickle.loads(str_red_units) blue_units = boss.blue_units logger.debug("blue unit length %s" % len(blue_units)) origin_hp = boss.hp fight_result = guild_boss_start(red_units, blue_units, red_unpar_data, {}, seed1, seed2) logger.debug("blue unit length %s" % len(blue_units)) boss.blue_units = blue_units current_damage_hp = origin_hp - boss.hp logger.debug("origin_hp %s, current_hp %s, current_damage_hp %s" % (origin_hp, boss.hp, current_damage_hp)) guild_skill_point = 0 if fight_result: stage_item = game_configs.special_stage_config.get("guild_boss_stages").get(boss.stage_id) guild.skill_point += stage_item.Animal_Kill_Over guild_skill_point = stage_item.Animal_Kill_Over boss.reset() guild.save_data() logger.debug("guildboss_battle_remote over===================") guild.save_data() return dict( result=True, fight_result = fight_result, guild_skill_point = guild_skill_point, )
def praise_remote(g_id, p_id, name, this_times): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} build_level = guild_obj.build.get(1) build_conf = game_configs.guild_config.get(1)[build_level] headSworShip = build_conf.headSworShip worShip = build_conf.worShip money_num = random.randint(headSworShip[0], headSworShip[1]) drop_num = random.randint(worShip[this_times][0], worShip[this_times][1]) guild_obj.add_praise_money(money_num) dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_ZAN dynamic_pb.time = int(time.time()) dynamic_pb.name1 = name dynamic_pb.num1 = drop_num guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return { 'res': True, 'build_level': build_level, 'money_num': guild_obj.praise_money, 'praise_times': guild_obj.praise_num, 'drop_num': drop_num }
def guild_boss_init_remote(guild_id): """ 初始化信息 """ guild = guild_manager_obj.get_guild_obj(guild_id) if not guild: return {'result': False, 'result_no': 844} guild.guild_boss.check_time() guild.save_data() # 重置召唤次数 guild.reset_guild_boss_trigger_times() res = dict( result=True, guild_skills=guild.guild_skills, guild_boss_trigger_times=guild.guild_boss_trigger_times, guild_boss=guild.guild_boss.property_dict(), build = guild.build, ) logger.debug("result %s" % res) return res
def captailn_receive_remote(g_id, p_id): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if position != 1: # 没有权限 或者 不在此军团 return {'res': False, 'no': 800} build_level = guild_obj.build.get(1) build_conf = game_configs.guild_config.get(1)[build_level] money_num = guild_obj.praise_money if guild_obj.praise_money <= 0: return {'res': False, 'no': 800} guild_obj.receive_praise_money() guild_obj.save_data() return { 'res': True, 'build_level': build_level, 'money_num': money_num, 'praise_times': guild_obj.praise_num }
def deal_invite_guild_remote(g_id, p_id, res, name): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} if not guild_obj.invite_join.get(p_id): return {'res': False, 'no': 800} del guild_obj.invite_join[p_id] if res: p_max = game_configs.guild_config.get(1).get( guild_obj.build.get(1)).p_max if not guild_obj.invite_join.get(p_id) and guild_obj.p_num + 1 > p_max: return {'res': False, 'no': 845} p_list3 = guild_obj.p_list.get(3, []) if p_list3: p_list3.append(p_id) else: guild_obj.p_list[3] = [p_id] dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_JOIN dynamic_pb.time = int(time.time()) dynamic_pb.name1 = name guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return {'res': True}
def guild_boss_init_remote(guild_id): """ 初始化信息 """ guild = guild_manager_obj.get_guild_obj(guild_id) if not guild: return {'result': False, 'result_no': 844} guild.guild_boss.check_time() guild.save_data() # 重置召唤次数 guild.reset_guild_boss_trigger_times() res = dict( result=True, guild_skills=guild.guild_skills, guild_boss_trigger_times=guild.guild_boss_trigger_times, guild_boss=guild.guild_boss.property_dict(), build=guild.build, ) logger.debug("result %s" % res) return res
def mine_seek_help_remote(u_id, mine_id, g_id): """ 求助 """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} if not mine.guild_seek_help(mine_id, u_id): return {'res': False, 'no': 800} mine_help = guild_obj.mine_help now = int(time.time()) a = 1 while mine_help.get(now): if a > 2: return {'res': False, 'no': 800} now += 1 a += 1 guild_obj.mine_help[now] = [mine_id, u_id, 0] guild_obj.save_data() return {'res': True, 'p_list': guild_obj.p_list}
def mine_seek_help_list_remote(g_id, p_id): """ 获取列表 """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if not position: # 不在此军团 return {'res': False, 'no': 800} p_ids = [] for _, x in guild_obj.p_list.items(): p_ids += x for _time, [mine_id, u_id, times] in guild_obj.mine_help.items(): if u_id not in p_ids: del guild_obj.mine_help[_time] continue if not mine.check_guild_seek_help(mine_id, u_id): del guild_obj.mine_help[_time] continue return { 'res': True, 'mine_help_list': guild_obj.mine_help, 'p_list': guild_obj.p_list }
def invite_join_guild_remote(g_id, p_id, target_id): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if position > 2: # 没有权限 return {'res': False, 'no': 849} now = int(time.time()) for _p_id, i_time in guild_obj.invite_join.items(): if i_time + game_configs.base_config.get('guildInviteTime') > now: del guild_obj.invite_join[_p_id] p_max = game_configs.guild_config.get(1).get(guild_obj.build.get(1)).p_max if not guild_obj.invite_join.get( target_id) and guild_obj.p_num + 1 > p_max: return {'res': False, 'no': 845} guild_obj.invite_join[target_id] = now guild_obj.save_data() return { 'res': True, 'name': guild_obj.name, 'level': guild_obj.level, 'p_num': guild_obj.p_num }
def deal_apply_remote(g_id, p_ids, deal_type): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if deal_type == 1: for p_id in p_ids: if p_id not in guild_obj.apply: continue guild_obj.apply.remove(p_id) if guild_obj.p_list.get(3): p_list1 = guild_obj.p_list.get(3) p_list1.append(p_id) # guild_obj.p_list.update({3: p_list1}) else: # guild_obj.p_list.update({3: [p_id]}) guild_obj.p_list[3] = [p_id] character_obj = tb_character_info.getObj(p_id) character_info = character_obj.hgetall() del_player_apply(p_id, character_info.get('apply_guilds', [])) dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_JOIN dynamic_pb.time = int(time.time()) dynamic_pb.name1 = character_info.get('nickname') guild_obj.add_dynamic(dynamic_pb.SerializeToString()) if deal_type == 2: for p_id in p_ids: if p_id in guild_obj.apply: guild_obj.apply.remove(p_id) if deal_type == 3: guild_obj.apply = [] guild_obj.save_data()
def del_player_apply(p_id, apply_guilds): for g_id in apply_guilds: guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: continue if p_id in guild_obj.apply: guild_obj.apply.remove(p_id) guild_obj.save_data()
def get_tasks_by_ids_remote(task_ids): tasks = {} for task_id, info in task_ids.items(): guild = guild_manager_obj.get_guild_obj(info.get("guild_id")) if not guild: continue task = guild.get_task_by_id(task_id) if not task: continue tasks[task_id] = construct_task_data(task, info.get("rob_no", -1)) return tasks
def start_protect_task_remote(guild_id, task_id): """ 开始保护押运任务 """ guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) logger.debug("task state %s" % task.state) start_task(task, guild) return dict(result=True, task=construct_task_data(task))
def get_shop_data_remote(g_id, shop_type): """ 军团商店 """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return None return guild_obj.get_shop_data(shop_type)
def get_tasks_by_ids_remote(task_ids): tasks = {} for task_id, info in task_ids.items(): guild = guild_manager_obj.get_guild_obj(info.get("guild_id")) if not guild: continue task = guild.get_task_by_id(task_id) if not task: continue tasks[task_id] = construct_task_data(task, info.get("rob_no", -1)) return tasks
def send_escort_task_invite_remote(guild_id, task_id, player_guild_id, rob_no, protect_or_rob): """ 发送邀请到玩家所在公会 """ guild = guild_manager_obj.get_guild_obj(player_guild_id) task_guild = guild_manager_obj.get_guild_obj(guild_id) task = task_guild.get_task_by_id(task_id) if protect_or_rob == 1: guild.escort_tasks_invite_protect[task_id] = {"guild_id" : guild_id, "rob_no": rob_no} task.last_send_invite_time = int(get_current_timestamp()) elif protect_or_rob == 2: guild.escort_tasks_invite_rob[task_id] = {"guild_id" : guild_id, "rob_no": rob_no} task.rob_task_infos[rob_no]["last_send_invite_time"] = int(get_current_timestamp()) guild.save_data() task_guild = guild_manager_obj.get_guild_obj(guild_id) return construct_task_data(task_guild.get_task_by_id(task_id), rob_no)
def start_protect_task_remote(guild_id, task_id): """ 开始保护押运任务 """ guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) logger.debug("task state %s" % task.state) start_task(task, guild) return dict(result=True, task=construct_task_data(task))
def get_invite_remote(guild_id, protect_or_rob): """ 获取邀请 """ tasks = {} guild = guild_manager_obj.get_guild_obj(guild_id) if protect_or_rob == 1: for task_id, info in guild.escort_tasks_invite_protect.items(): task = guild.get_task_by_id(task_id) tasks[task_id] = construct_task_data(task) if protect_or_rob == 2: for task_id, info in guild.escort_tasks_invite_rob.items(): guild_id = info.get("guild_id") rob_no = info.get("rob_no") guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) tasks[task_id] = construct_task_data(task, rob_no) return tasks
def get_invite_remote(guild_id, protect_or_rob): """ 获取邀请 """ tasks = {} guild = guild_manager_obj.get_guild_obj(guild_id) if protect_or_rob == 1: for task_id, info in guild.escort_tasks_invite_protect.items(): task = guild.get_task_by_id(task_id) tasks[task_id] = construct_task_data(task) if protect_or_rob == 2: for task_id, info in guild.escort_tasks_invite_rob.items(): guild_id = info.get("guild_id") rob_no = info.get("rob_no") guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) tasks[task_id] = construct_task_data(task, rob_no) return tasks
def exit_guild_remote(guild_id, p_id, name): """ no: True 1 解散公会 2 团长退出 3 非团长退出 """ guild_obj = guild_manager_obj.get_guild_obj(guild_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if not position: # "您不在此公会" return {'res': False, 'no': 850} p_num = guild_obj.p_num if p_num == 1: # 删名字 guild_name_data = tb_guild_info.getObj('names') if guild_name_data.hget(guild_obj.name): guild_name_data.hdel(guild_obj.name) # 删军团 guild_manager_obj.delete_guild(guild_obj.g_id) return { 'res': True, 'no': 1, 'apply_ids': guild_obj.apply, 'guild_name': guild_obj.name } if position == 1: p_list = [] next_position = 0 no = 2 if guild_obj.p_list.get(2): next_position = 2 p_list = guild_obj.p_list.get(2) else: next_position = 3 p_list = guild_obj.p_list.get(3) next_id = get_next_captain(p_list) guild_obj.change_position(next_id, next_position, position) else: no = 3 guild_obj.exit_guild(p_id, position) dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_EXIT dynamic_pb.time = int(time.time()) dynamic_pb.name1 = name guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return { 'res': True, 'no': no, 'apply_ids': guild_obj.apply, 'guild_name': guild_obj.name }
def guild_boss_add_remote(guild_id, stage_id, boss_type, trigger_player_id, trigger_player_name): guild = guild_manager_obj.get_guild_obj(guild_id) # 是否存在boss if guild.guild_boss.stage_id: logger.debug("guild boss exist!") return {"result": False, "result_no": 240203} blue_units = assemble_monster(stage_id, game_configs.special_stage_config, "guild_boss_stages") logger.debug("blue_units %s" % blue_units) guild_boss = guild.add_guild_boss(stage_id, blue_units[0], boss_type, trigger_player_id, trigger_player_name) return {"result": True, "guild_boss": guild_boss.property_dict(), "p_list": guild.p_list}
def get_guild_task_records_remote(guild_id): """ 获取军团押劫记录 """ tasks = {} guild = guild_manager_obj.get_guild_obj(guild_id) for task_id, task in guild.escort_tasks.items(): task.update_task_state() if task.state in [2, -1]: tasks[task_id] = construct_task_data(task) response = escort_pb2.GetEscortRecordsResponse() load_data_to_response(tasks, response.tasks) logger.debug("len %s %s" % (len(response.SerializePartialToString()), len(tasks))) return response.SerializePartialToString()
def get_guild_task_records_remote(guild_id): """ 获取军团押劫记录 """ tasks = {} guild = guild_manager_obj.get_guild_obj(guild_id) for task_id, task in guild.escort_tasks.items(): task.update_task_state() if task.state in [2, -1]: tasks[task_id] = construct_task_data(task) response = escort_pb2.GetEscortRecordsResponse() load_data_to_response(tasks, response.tasks) logger.debug("len %s %s" % (len(response.SerializePartialToString()), len(tasks))) return response.SerializePartialToString()
def get_guild_info_remote(guild_id, info_name, p_id): """ """ guild_obj = guild_manager_obj.get_guild_obj(guild_id) if not guild_obj: return {'result': False, 'result_no': 844} res = {} if info_name: res.update({'result': True, info_name: getattr(guild_obj, info_name)}) else: res.update({'result': True, 'guild_info': guild_obj.guild_data}) if p_id: res.update(dict(position=guild_obj.get_position(p_id))) logger.debug("get_guild_info: %s" % res) return res
def guild_shop_buy_remote(g_id, shop_id, item_count, shop_type, vip_level): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 800} shop = guild_obj.get_shop_data(shop_type) if not shop: return {'res': False, 'no': 800} build_level = guild_obj.build.get(1) res = do_shop_buy(shop_id, item_count, shop, vip_level, build_level) if res.get('res'): guild_obj.save_data() return res
def mine_help_remote(g_id, p_id, seek_time, already_helps): """ 帮助加速 此函数处理在帮助加速的的同时,更新玩家已经帮助列表 """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if not position: # 不在此军团 return {'res': False, 'no': 800} build_level = guild_obj.build.get(1) build_conf = game_configs.guild_config.get(1)[build_level] shorten_time = build_conf.shortenTime help_ids = [] p_ids = [] # 所有的成员ID uids = [] for _, x in guild_obj.p_list.items(): p_ids += x for _time, [mine_id, u_id, times] in guild_obj.mine_help.items(): if u_id not in p_ids: del guild_obj.mine_help[_time] continue if u_id == p_id: continue if _time in already_helps: help_ids.append(_time) continue if seek_time and seek_time != _time: continue if not mine.guild_help(mine_id, u_id, p_id, shorten_time): del guild_obj.mine_help[_time] else: times += 1 guild_obj.mine_help[_time] = [mine_id, u_id, times] help_ids.append(_time) uids.append(u_id) # help_ids 这次帮助的列表 加上 之前帮助的而且这个请求还存在的 # already_helps 之前已经帮助过的列表 # guild_obj.mine_help 军团里所有的请求 return {'res': True, 'help_ids': help_ids, 'uids': uids}
def update_task_state_remote(protect_records, rob_records): """ 根据时间调整任务状态 """ return records = {} rob_records.update(protect_records) for task_id, info in rob_records.items(): guild = guild_manager_obj.get_guild_obj(info.get("guild_id")) records[task_id] = guild for task_id, guild in records.items(): task = guild.get_task_by_id(task_id) if not task: continue task.update_task_state()
def update_task_state_remote(protect_records, rob_records): """ 根据时间调整任务状态 """ return records = {} rob_records.update(protect_records) for task_id, info in rob_records.items(): guild = guild_manager_obj.get_guild_obj(info.get("guild_id")) records[task_id] = guild for task_id, guild in records.items(): task = guild.get_task_by_id(task_id) if not task: continue task.update_task_state()
def guild_appoint_remote(g_id, p_id, deal_type, target_id): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if position != 1: # 没有权限 return {'res': False, 'no': 849} p_list2 = guild_obj.p_list.get(2, []) p_list3 = guild_obj.p_list.get(3, []) dynamic_pb = guild_pb2.GuildDynamic() if deal_type == 1: # 1提拔2撤销 dynamic_pb.type = const.DYNAMIC_UP if len(p_list2) >= 2: return {'res': False, 'no': 860} if target_id not in p_list3: return {'res': False, 'no': 800} p_list3.remove(target_id) if p_list2: p_list2.append(target_id) else: guild_obj.p_list[2] = [target_id] else: dynamic_pb.type = const.DYNAMIC_DOWN if target_id not in p_list2: return {'res': False, 'no': 800} p_list2.remove(target_id) if p_list3: p_list3.append(target_id) else: guild_obj.p_list[3] = [target_id] dynamic_pb.time = int(time.time()) name = tb_character_info.getObj(target_id).hget('nickname') dynamic_pb.name1 = name guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return {'res': True, 'name': guild_obj.name}
def up_build_remote(g_id, p_id, build_type): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if position != 1: # 没有权限 或者 不在此军团 return {'res': False, 'no': 800} build_info = guild_obj.build build_level = build_info.get(build_type) if not build_level: logger.error('up_build_870, build type error') return {'res': False, 'no': 891} build_conf = game_configs.guild_config.get(build_type)[build_level] if guild_obj.contribution < build_conf.exp: logger.error('up_build_870, build type error') return {'res': False, 'no': 888} if build_level >= game_configs.base_config.get('guild_level_max').get( build_type): logger.error('up_build_870, level max') return {'res': False, 'no': 800} for up_c in build_conf.condition: c_conf = game_configs.guild_config.get(up_c) my_build_level = build_info.get(c_conf.type) if not my_build_level or my_build_level < c_conf.level: logger.error('up_build_870, build type error') return {'res': False, 'no': 892} build_info[build_type] += 1 guild_obj.build = build_info guild_obj.contribution -= build_conf.exp guild_obj.save_data() return { 'res': True, 'build_level': guild_obj.build.get(build_type), 'level': guild_obj.level }
def guild_boss_add_remote(guild_id, stage_id, boss_type, trigger_player_id, trigger_player_name): guild = guild_manager_obj.get_guild_obj(guild_id) # 是否存在boss if guild.guild_boss.stage_id: logger.debug("guild boss exist!") return {"result": False, "result_no": 240203} blue_units = assemble_monster(stage_id, game_configs.special_stage_config, "guild_boss_stages") logger.debug("blue_units %s" % blue_units) guild_boss = guild.add_guild_boss(stage_id, blue_units[0], boss_type, trigger_player_id, trigger_player_name) return { "result": True, "guild_boss": guild_boss.property_dict(), "p_list": guild.p_list }
def editor_call_remote(g_id, p_id, call): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if not position or position > 2: # 没有权限 return {'res': False, 'no': 849} new_call = '' if call: new_call = trie_tree.check.replace_bad_word(call) guild_obj.editor_call(new_call) guild_obj.save_data() return {'res': True, 'name': guild_obj.name}
def upgrade_guild_skill_remote(guild_id, skill_type): """ 获取玩家伤害信息 """ logger.debug("upgrade_guild_skill_remote : (%s, %s)" % (skill_type, guild_id)) guild = guild_manager_obj.get_guild_obj(guild_id) skill_level = guild.guild_skills.get(skill_type) # 消耗技能点 guild_skill_item = game_configs.guild_skill_config.get(skill_type).get(skill_level) if guild.skill_point < guild_skill_item.Consumption: logger.debug("consume not enough!") return dict(result=False, result_no = 24041) guild.skill_point -= guild_skill_item.Consumption guild.guild_skills[skill_type] = skill_level + 1 guild.save_data() return dict( result=True)
def join_guild_remote(g_id, p_id): """ no 844 id error 859 申请人数满 845 成员已经满 """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} if len(guild_obj.apply) >= game_configs.base_config. \ get('guildApplyMaxNum'): # "军团申请人数已满 return {'res': False, 'no': 859} if guild_obj.p_num >= game_configs.guild_config. \ get(1).get(guild_obj.build[1]).p_max: # "公会已满员" return {'res': False, 'no': 845} guild_obj.join_guild(p_id) guild_obj.save_data() return {'res': True, 'captain_id': guild_obj.p_list.get(1)[0]}
def upgrade_guild_skill_remote(guild_id, skill_type): """ 获取玩家伤害信息 """ logger.debug("upgrade_guild_skill_remote : (%s, %s)" % (skill_type, guild_id)) guild = guild_manager_obj.get_guild_obj(guild_id) skill_level = guild.guild_skills.get(skill_type) # 消耗技能点 guild_skill_item = game_configs.guild_skill_config.get(skill_type).get( skill_level) if guild.skill_point < guild_skill_item.Consumption: logger.debug("consume not enough!") return dict(result=False, result_no=24041) guild.skill_point -= guild_skill_item.Consumption guild.guild_skills[skill_type] = skill_level + 1 guild.save_data() return dict(result=True)
def guild_change_president_remote(g_id, p_id, target_id, name): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) if position != 1: # 没有权限 return {'res': False, 'no': 849} flag = 0 for pos, p_list in guild_obj.p_list.items(): if pos == 1: continue if target_id in p_list: p_list.remove(target_id) guild_obj.p_list[1] = [target_id] flag = 1 if not flag: return {'res': False, 'no': 850} p_list3 = guild_obj.p_list.get(3, []) if p_list3: p_list3.append(p_id) else: guild_obj.p_list[3] = [p_id] dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_CHANGE dynamic_pb.time = int(time.time()) name2 = tb_character_info.getObj(target_id).hget('nickname') dynamic_pb.name1 = name dynamic_pb.name2 = name2 guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return {'res': True, 'name': guild_obj.name}
def guild_boss_battle_remote(guild_id, str_red_units, red_unpar_data, seed1, seed2): """开始战斗 """ logger.debug("hjqy_battle_remote======") guild = guild_manager_obj.get_guild_obj(guild_id) boss = guild.guild_boss red_units = cPickle.loads(str_red_units) blue_units = boss.blue_units logger.debug("blue unit length %s" % len(blue_units)) origin_hp = boss.hp fight_result = guild_boss_start(red_units, blue_units, red_unpar_data, {}, seed1, seed2) logger.debug("blue unit length %s" % len(blue_units)) boss.blue_units = blue_units current_damage_hp = origin_hp - boss.hp logger.debug("origin_hp %s, current_hp %s, current_damage_hp %s" % (origin_hp, boss.hp, current_damage_hp)) guild_skill_point = 0 if fight_result: stage_item = game_configs.special_stage_config.get( "guild_boss_stages").get(boss.stage_id) guild.skill_point += stage_item.Animal_Kill_Over guild_skill_point = stage_item.Animal_Kill_Over boss.reset() guild.save_data() logger.debug("guildboss_battle_remote over===================") guild.save_data() return dict( result=True, fight_result=fight_result, guild_skill_point=guild_skill_point, )
def mobai_remote(g_id, p_id, u_id, name): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('exit_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} p_list = guild_obj.p_list for _, _p_list in guild_obj.p_list.items(): if u_id in _p_list: drop_num = game_configs.base_config.get('Worship2')[0].num dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.type = const.DYNAMIC_MOBAI dynamic_pb.time = int(time.time()) dynamic_pb.name1 = name name2 = tb_character_info.getObj(u_id).hget('nickname') dynamic_pb.name2 = name2 dynamic_pb.num1 = drop_num return {'res': True} logger.error('mobai, player dont in guild') return {'res': False, 'no': 800}
def guild_kick_remote(g_id, p_id, be_kick_ids): """ """ guild_obj = guild_manager_obj.get_guild_obj(g_id) if not guild_obj: logger.error('join_guild_remote guild id error! pid:%d' % p_id) return {'res': False, 'no': 844} position = guild_obj.get_position(p_id) kick_list = [] p_ids = [] for _, x in guild_obj.p_list.items(): p_ids += x if not position or position > 2: # 没有权限 或者 不在此军团 return {'res': False, 'no': 849} p_list2 = guild_obj.p_list.get(2, []) p_list3 = guild_obj.p_list.get(3, []) for be_kick_id in be_kick_ids: if be_kick_id in p_list2 and position == 1: guild_obj.p_list[2].remove(be_kick_id) elif be_kick_id in p_list3: guild_obj.p_list[3].remove(be_kick_id) else: continue kick_list.append(be_kick_id) dynamic_pb = guild_pb2.GuildDynamic() dynamic_pb.time = int(time.time()) dynamic_pb.type = const.DYNAMIC_KICK name = tb_character_info.getObj(be_kick_id).hget('nickname') dynamic_pb.name1 = name guild_obj.add_dynamic(dynamic_pb.SerializeToString()) guild_obj.save_data() return {'res': True, 'kick_list': kick_list, 'name': guild_obj.name}
def add_player_remote(guild_id, task_id, player_info, protect_or_rob, rob_no, protect_records): logger.debug("add_player_remote %s %s %s %s %s" % (guild_id, task_id, player_info, protect_or_rob, rob_no)) guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) for protecter in task.protecters: # 已存在该玩家,则不能再次加入 if protecter.get("id") == player_info.get("id"): logger.error("已存在该玩家,则不能再次加入") return {'result': False, 'result_no': 190802} if protect_or_rob == 2 and task.rob_success_times() >= 2: # 接受劫运任务,如果该任务已经达到最大劫运次数 logger.error("该任务已经达到最大劫运次数") return {'result': False, 'result_no': 190803} if protect_or_rob == 2 and rob_no == -1 and task.has_robbed(player_info.get("id")): # 已经被劫了 logger.error("已经被劫了") return {"result": False, "result_no": 190804} if protect_or_rob == 2 and rob_no == -1 and task.has_robbing(player_info.get("id")): # 已经存在正在劫运的任务 logger.error("已经存在正在劫运的任务") return {"result": False, "result_no": 190805} if protect_or_rob == 1 and task.state == 2: # 任务已经开启 logger.error("押运任务已经开启") return {"result": False, "result_no": 190806} rob_task_info = {} if rob_no != -1: rob_task_info = task.rob_task_infos[rob_no] if protect_or_rob == 2 and rob_task_info and rob_task_info.get("rob_state") == -1: # 任务已经开启 logger.error("劫运任务已经完成") return {"result": False, "result_no": 190807} if protect_or_rob == 1 and len(task.protecters) >= 3: # 押运人数已达上限 logger.error("押运人数已达上限") return {"result": False, "result_no": 190808} if protect_or_rob == 2 and rob_task_info and len(rob_task_info.get("robbers", [])) >= 3: # 押运人数已达上限 logger.error("押运人数已达上限") return {"result": False, "result_no": 190809} if protect_or_rob == 2 and rob_task_info.get("rob_state") == 0: # 任务已取消 logger.error("任务已取消") return {'result': False, 'result_no': 190810} if rob_task_info: for robber in rob_task_info.get("robbers"): # 已存在该玩家,则不能再次加入 if robber.get("id") == player_info.get("id"): logger.error("已存在该玩家,则不能再次加入") return {'result': False, 'result_no': 190802} if protect_or_rob == 1: for _task_id, info in protect_records.items(): _task = guild.get_task_by_id(_task_id) if not _task or _task.state == -1: continue logger.debug("task_id %s" % _task_id) for k, protecter in enumerate(_task.protecters): logger.debug("k %s protecter_id %s player_id %s" % (k, protecter.get("id"), player_info.get("id"))) if k != 0 and protecter.get("id") == player_info.get("id"): logger.error("该玩家已经处于辅助劫运中,则不能再次加入!") return {'result': False, 'result_no': 190811} player_guild = guild_manager_obj.get_guild_obj(player_info.get("g_id")) res = task.add_player(player_info, protect_or_rob, rob_no, player_guild.guild_info()) rob_no = -1 if protect_or_rob == 2: rob_no = res.get("rob_no") if len(task.protecters)==3 and protect_or_rob == 1: logger.debug("team up, then auto start task!") start_task(task, guild) logger.debug("rob_no %s" % rob_no) return dict(result=True, task=construct_task_data(task, rob_no))
def add_task_remote(guild_id, task_info): guild = guild_manager_obj.get_guild_obj(guild_id) guild.add_task(task_info) return dict(result=True)
def get_task_by_id_remote(guild_id, task_id): guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) return construct_task_data(task)
def cancel_rob_task_remote(guild_id, task_id, rob_no): """取消劫运任务""" guild = guild_manager_obj.get_guild_obj(guild_id) task = guild.get_task_by_id(task_id) task.cancel_rob_task(rob_no) task.save_data()