def players_connected(cls, player_list): Db.update_last_seen(player_list.keys()) if len(player_list) > 1: out("** Connected: [{} online]".format(len(player_list))) for steam_id, name in player_list.items(): player_name = Storage.players_online_player_name[steam_id] if Rcon.is_admin(steam_id=steam_id): out("\t{} {} ({}) ADMIN".format(name.ljust(30), player_name.ljust(30), steam_id)) else: out("\t{} {} ({})".format(name.ljust(30), player_name.ljust(30), steam_id)) elif len(player_list) == 1: for steam_id in player_list: player_name = Storage.players_online_player_name[steam_id] if Rcon.is_admin(steam_id=steam_id): out("** Connected: {} {} ({}) ADMIN".format( player_list[steam_id], player_name.ljust(30), steam_id)) else: out("** Connected: {} {} ({})".format( player_list[steam_id], player_name.ljust(30), steam_id))
def players_disconnected(cls,player_list): Db.update_last_seen(player_list.keys()) if len(player_list) > 1: out("** Disconnected: [{} online]".format(len(player_list))) for steam_id, name in player_list.items(): if Rcon.is_admin(steam_id=steam_id): out("\t{} ({}) ADMIN".format(name.ljust(25),steam_id)) else: out("\t{} ({})".format(name.ljust(25),steam_id)) elif len(player_list) == 1: for steam_id,name in player_list.items(): if Rcon.is_admin(steam_id=steam_id): out("** Disconnected: {} ({}) ADMIN".format(name,steam_id)) else: out("** Disconnected: {} ({})".format(name,steam_id))
def players_disconnected(cls, player_list): Db.update_last_seen(player_list.keys()) if len(player_list) > 1: out("** Disconnected: [{} online]".format(len(player_list))) for steam_id, name in player_list.items(): if Rcon.is_admin(steam_id=steam_id): out("\t{} ({}) ADMIN".format(name.ljust(25), steam_id)) else: out("\t{} ({})".format(name.ljust(25), steam_id)) elif len(player_list) == 1: for steam_id, name in player_list.items(): if Rcon.is_admin(steam_id=steam_id): out("** Disconnected: {} ({}) ADMIN".format( name, steam_id)) else: out("** Disconnected: {} ({})".format(name, steam_id))
def players_connected(cls,player_list): Db.update_last_seen(player_list.keys()) if len(player_list) > 1: out("** Connected: [{} online]".format(len(player_list))) for steam_id,name in player_list.items(): player_name = Storage.players_online_player_name[steam_id] if Rcon.is_admin(steam_id=steam_id): out("\t{} {} ({}) ADMIN".format(name.ljust(30), player_name.ljust(30), steam_id)) else: out("\t{} {} ({})".format(name.ljust(30), player_name.ljust(30), steam_id)) elif len(player_list) == 1: for steam_id in player_list: player_name = Storage.players_online_player_name[steam_id] if Rcon.is_admin(steam_id=steam_id): out("** Connected: {} {} ({}) ADMIN".format(player_list[steam_id], player_name.ljust(30), steam_id)) else: out("** Connected: {} {} ({})".format(player_list[steam_id], player_name.ljust(30), steam_id))
def admin_check_version(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False res, live_version, steam_version = ServerControl.new_version() if res is True: Rcon.message_steam_name(steam_name,Lang.get('new_version')) return True else: Rcon.message_steam_name(steam_name,Lang.get('no_new_version')) return False
def welcome_message(cls,player_list): if cls.first_list_players: #Don't message people when rcon starts. Message when they log on. cls.first_list_players = False return response = 'Welcome to Clash.gg PVP Server.\nAvailable chat commands: !help, !lastseen, !online, !next_restart' response_admin = 'Hello admin!' for steam_id in player_list: if Rcon.is_admin(steam_id=steam_id): Rcon.message_steam_id(steam_id,response_admin,Rcon.none_response_callback,echo=False) else: Rcon.message_steam_id(steam_id,response,Rcon.none_response_callback,echo=False)
def admin_update_now(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False res, live_version, steam_version = ServerControl.new_version() if res is True: ServerControl.update_and_restart_server() Rcon.message_steam_name(steam_name,Lang.get('update_restart')) Rcon.broadcast(Lang.get('update_restart'), Rcon.response_callback_response_only) return True else: Rcon.message_steam_name(steam_name,Lang.get('no_new_version')) return False
def parse(steam_name,player_name,text): #recipient = Db.find_player(player_name=player_name) cmd = ChatCommands._find_cmd(text) if cmd is False: debug_out(Lang.get('not_a_command').format(text),level=1) return False cmd = cmd.lower() debug_out('Processing chat command: ',cmd,level=1) if cmd == 'lastseen': ChatCommands.last_seen(steam_name,text) return True elif cmd == 'online': ChatCommands.list_online(steam_name) return True elif cmd == 'admin_restart': if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), cmd) return False if text.lower().strip() == '!admin_restart now': Rcon.message_steam_name(steam_name,Lang.get('issue_restart_now')) Rcon.broadcast(Lang.get('restarting')) ServerControl.restart_server() return True regex = re.compile('!admin_restart (?P<minutes>[\d]+)',re.IGNORECASE) matches = regex.search(text) if matches is None: Rcon.message_steam_name(steam_name,Lang.get('admin_restart_failed')) return False minutes = matches.group('minutes') result, err = Rcon.delayed_restart(minutes) if not result: Rcon.message_steam_name(steam_name,'ERROR: {}'.format(err)) return False Rcon.message_steam_name(steam_name,Lang.get('issue_restart')) return True elif cmd == 'next_restart': seconds_left, str_countdown = Rcon.get_next_restart_string() response = 'Next restart: {}'.format(str_countdown) Rcon.message_steam_name(steam_name,response) return True elif cmd == 'help': Rcon.message_steam_name(steam_name,Lang.get('chat_help')) return True return False
def admin_start_survey(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False regex=re.compile('!admin_start_survey (?P<id_survey>[0-9]+)',re.IGNORECASE) matches = regex.search(text) if matches is None: Rcon.message_steam_name(steam_name,Lang.get('survey_start_noid')) return False id_survey=matches.group('id_survey') result=False result=Db.start_survey(id_survey) if result is True: Rcon.message_steam_name(steam_name,Lang.get('survey_start_ok').format(id_survey,id_survey)) else: Rcon.message_steam_name(steam_name,Lang.get('survey_start_error').format(id_survey))
def admin_survey_add(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False regex=re.compile('!admin_survey_add (?P<question>[a-zA-Z0-9 ?]+)',re.IGNORECASE) matches = regex.search(text) if matches is None: Rcon.message_steam_name(steam_name,Lang.get('survey_no_question')) return False question=matches.group('question') result = None result = Db.add_survey(question) if result is not None: Rcon.message_steam_name(steam_name,Lang.get('survey_created').format(result,result)) else: Rcon.message_steam_name(steam_name,Lang.get('survey_add_error'))
def welcome_message(cls, player_list): if cls.first_list_players: #Don't message people when rcon starts. Message when they log on. cls.first_list_players = False return response = 'Welcome to Clash.gg PVP Server.\nAvailable chat commands: !help, !lastseen, !online, !next_restart' response_admin = 'Hello admin!' for steam_id in player_list: if Rcon.is_admin(steam_id=steam_id): Rcon.message_steam_id(steam_id, response_admin, Rcon.none_response_callback, echo=False) else: Rcon.message_steam_id(steam_id, response, Rcon.none_response_callback, echo=False)
def admin_restart(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False if text.lower().strip() == '!admin_restart now': Rcon.message_steam_name(steam_name,Lang.get('issue_restart_now')) Rcon.broadcast(Lang.get('restarting'),Rcon.callback_restart()) return True regex = re.compile('!admin_restart (?P<minutes>[\d]+)',re.IGNORECASE) matches = regex.search(text) if matches is None: Rcon.message_steam_name(steam_name,Lang.get('admin_restart_failed')) return False minutes = matches.group('minutes') result, err = Rcon.delayed_restart(minutes) if not result: Rcon.message_steam_name(steam_name,'ERROR: {}'.format(err)) return False Rcon.message_steam_name(steam_name,Lang.get('issue_restart')) return True
def admin_filter_remove(steam_name,player_name,text): if not Rcon.is_admin(steam_name=steam_name): out(Lang.get('unauthorized'), text) return False regex = re.compile('!admin_filter_remove (?P<words>[a-z ]+)',re.IGNORECASE) matches = regex.search(text) if matches is None: Rcon.message_steam_name(steam_name,Lang.get('chat_filter_remove_no_word')) return False words = matches.group('words') words = words.split() result=None for word in words: res = Db.remove_word(word) if res is False: res = Lang.get('chat_filter_remove_word_does_not_exists').format(word) else: res = Lang.get('unauthorized').format(word) if result is None: result = Lang.get('chat_filter_result').format(res) else: result = "{}, {}".format(result,res) Rcon.message_steam_name(steam_name,result)