def __init__(self): super().__init__() try: minqlx.unload_plugin('ban') except Exception as e: pass self.add_hook("player_connect", self.handle_player_connect, priority=minqlx.PRI_HIGH) self.add_hook("player_loaded", self.handle_player_loaded) self.add_hook("player_disconnect", self.handle_player_disconnect) self.add_hook("game_countdown", self.handle_game_countdown) self.add_hook("game_start", self.handle_game_start) self.add_hook("game_end", self.handle_game_end) self.add_hook("team_switch", self.handle_team_switch) self.add_command("ban", self.cmd_ban, 2, usage="<id> <length> seconds|minutes|hours|days|... [reason]") self.add_command("unban", self.cmd_unban, 2, usage="<id>") self.add_command("checkban", self.cmd_checkban, usage="<id>") self.add_command("forgive", self.cmd_forgive, 2, usage="<id> [leaves_to_forgive]") self.add_command("v_myban", self.cmd_version) # Cvars. self.set_cvar_once("qlx_leaverBan", "0") self.set_cvar_limit_once("qlx_leaverBanThreshold", "0.63", "0", "1") self.set_cvar_limit_once("qlx_leaverBanWarnThreshold", "0.78", "0", "1") self.set_cvar_once("qlx_leaverBanMinimumGames", "15") # List of players playing that could potentially be considered leavers. self.players_start = [] self.pending_warnings = {}
def __init__(self): if not self.get_cvar("qlx_commlinkIdentity"): self.msg("^1Error: ^7Please set your ^4qlx_commlinkIdentity^7 cvar in your server.cfg.") minqlx.unload_plugin("commlink") return self.add_hook("unload", self.handle_unload) self.add_hook("player_connect", self.handle_player_connect, priority=minqlx.PRI_LOWEST) self.add_hook("player_disconnect", self.handle_player_disconnect, priority=minqlx.PRI_LOWEST) self.add_hook("game_countdown", self.game_countdown) self.set_cvar_once("qlx_commlinkServerName", "Server-{}".format(random.randint(1000, 9999))) self.set_cvar_once("qlx_enableConnectDisconnectMessages", "1") self.set_cvar_once("qlx_enableCommlinkMessages", "1") self.server = "irc.tomtecsolutions.com.au" self.identity = ("#" + self.get_cvar("qlx_commlinkIdentity")) self.clientName = self.get_cvar("qlx_commlinkServerName") self.add_command(("world", "say_world"), self.send_commlink_message, priority=minqlx.PRI_LOWEST, usage="<message>") self.add_command("tomtec_versions", self.cmd_showversion) self.add_command("commlink", self.cmd_toggle_commlink) self.irc = SimpleAsyncIrc(self.server, self.clientName, self.handle_msg, self.handle_perform, self.handle_raw) self.irc.start() self.logger.info("Connecting to {}...".format(self.server)) self.msg("Connecting to ^3CommLink^7 server...") self.plugin_version = "1.1"
def cmd_unload(self, player, msg, channel): if len(msg) < 2: return minqlx.CMD_USAGE else: try: minqlx.unload_plugin(msg[1]) channel.reply("^7Plugin ^6{} ^7has been successfully unloaded." .format(msg[1])) except Exception as e: channel.reply("^7Plugin ^6{} ^7has failed to unload: {} - {}" .format(msg[1], e.__class__.__name__, e)) minqlx.log_exception(self)
def cmd_unloadall(self, player, msg, channel): for plugin in self.plugins: if plugin != self.__class__.__name__: try: minqlx.unload_plugin(plugin) except Exception as e: channel.reply("Plugin ^6{} ^7has failed to unload: {} - {}" .format(plugin, e.__class__.__name__, e)) minqlx.log_exception(self) channel.reply("Successfully unloaded all plugins except {}." .format(self.__class__.__name__))
def cmd_unload(self, player, msg, channel): if len(msg) < 2: return minqlx.CMD_USAGE else: try: minqlx.unload_plugin(msg[1]) channel.reply("Plugin ^6{} ^7has been successfully unloaded." .format(msg[1])) except Exception as e: channel.reply("Plugin ^6{} ^7has failed to unload: {} - {}" .format(msg[1], e.__class__.__name__, e)) minqlx.log_exception(self)
def handle_map(self, map_name, factory): """Brands map title and updates list of race maps on map change. Also sets correct starting weapons for the map and clears savepos and move_player dicts. """ map_name = map_name.lower() if self.get_cvar("qlx_raceBrand"): self.brand_map(map_name) self.get_maps() self.savepos = {} self.move_player = {} self.lagged = {} self.current_frame = 0 if self.game.factory not in ("qlrace_classic", "qlrace_turbo"): return self.set_starting_weapons(map_name) self.set_starting_ammo(map_name) if self.get_cvar("qlx_raceMode", int) == 0: gl_v = "700" if map_name in ("k4n", "uprising", "jjm2") else "800" self.set_cvar("g_velocity_gl", gl_v) ramp_jump = "0" if map_name == "10towers" else "1" self.set_cvar("pmove_rampJump", ramp_jump) elif self.get_cvar("qlx_raceMode", int) == 2: ramp_jump = "1" if map_name == "dontlookdown" else "0" self.set_cvar("pmove_RampJump", ramp_jump) if map_name == "puzzlemap": self.set_cvar("g_infiniteAmmo", "1") self.set_cvar("g_startingWeapons", "3") minqlx.load_plugin("puzzlemap") else: if "puzzlemap" in self.plugins: minqlx.unload_plugin("puzzlemap") if map_name == "walkathon": self.set_cvar("g_respawn_delay_min", "1000") self.set_cvar("g_respawn_delay_max", "1000") else: self.set_cvar("g_respawn_delay_min", "10") self.set_cvar("g_respawn_delay_max", "10") if map_name == "pornstarghost3": self.set_cvar("g_maxFlightFuel", "10000") elif map_name == "tomb": self.set_cvar("g_maxFlightFuel", "2500") elif map_name == "tatmt_long": self.set_cvar("g_maxFlightFuel", "500") elif map_name == "bokluk": self.set_cvar("g_maxFlightFuel", "3500") elif map_name == "dkr14": self.set_cvar("g_maxFlightFuel", "3000") else: self.set_cvar("g_maxFlightFuel", "16000") if map_name == "gl": if self.get_cvar("g_startingHealth", int) != 3000: self.map_restart = True self.set_cvar("g_startingHealth", "3000") else: self.set_cvar("g_startingHealth", "100") if map_name in ("track_comp", "track_comp_barriers"): self.set_cvar("pmove_noPlayerClip", "0") self.set_cvar("g_damage_g", "1") self.set_cvar("g_damage_mg", "1") self.set_cvar("g_knockback_g", "0") self.set_cvar("g_knockback_mg", "0") elif map_name == "track_comp_weap": self.set_cvar("pmove_noPlayerClip", "0") self.set_cvar("g_damage_g", "25") self.set_cvar("g_damage_mg", "3") self.set_cvar("g_damage_gl", "20") self.set_cvar("g_damage_rl", "20") self.set_cvar("g_damage_rg", "10") self.set_cvar("g_knockback_g", "1.2") self.set_cvar("g_knockback_mg", "0") self.set_cvar("g_knockback_gl", "1.2") self.set_cvar("g_knockback_gl_self", "0") self.set_cvar("g_knockback_rl", "1") self.set_cvar("g_knockback_rl_self", "0") self.set_cvar("g_knockback_rg", "10") self.set_cvar("g_splashdamage_gl", "20") self.set_cvar("g_splashdamage_rl", "16") else: self.set_cvar("pmove_noPlayerClip", "1") self.set_cvar("g_knockback_gl_self", "1.10") self.set_cvar("g_knockback_rl_self", "1.10")
def unload_essentials(self): try: minqlx.unload_plugin('essentials') except Exception as e: pass
def unload_ban(self): try: minqlx.unload_plugin('ban') except Exception as e: pass
def f(): try: minqlx.unload_plugin("fun") except: pass
def __init__(self): super().__init__() try: minqlx.unload_plugin('essentials') except Exception as e: pass self.add_hook("player_connect", self.handle_player_connect) self.add_hook("player_disconnect", self.handle_player_disconnect) self.add_hook("vote_called", self.handle_vote_called) self.add_hook("command", self.handle_command, priority=minqlx.PRI_LOW) self.add_command("id", self.cmd_id, 1, usage="[part_of_name] ...") self.add_command("players", self.cmd_players, 1) self.add_command(("disconnects", "dcs"), self.cmd_disconnects, 1) self.add_command(("commands", "cmds"), self.cmd_commands, 2) self.add_command("shuffle", self.cmd_shuffle, 1) self.add_command(("pause", "timeout"), self.cmd_pause, 1) self.add_command(("unpause", "timein"), self.cmd_unpause, 1) self.add_command("slap", self.cmd_slap, 2, usage="<id> [damage]") self.add_command("slay", self.cmd_slay, 2, usage="<id>") self.add_command("sounds", self.cmd_enable_sounds, usage="<0/1>") self.add_command("sound", self.cmd_sound, 1, usage="<path>") self.add_command("music", self.cmd_music, 1, usage="<path>") self.add_command("stopsound", self.cmd_stopsound, 1) self.add_command("stopmusic", self.cmd_stopmusic, 1) self.add_command("kick", self.cmd_kick, 2, usage="<id>") self.add_command(("kickban", "tempban"), self.cmd_kickban, 2, usage="<id>") self.add_command("yes", self.cmd_yes, 2) self.add_command("no", self.cmd_no, 2) self.add_command("random", self.cmd_random, 1, usage="<limit>") self.add_command("cointoss", self.cmd_cointoss, 1) self.add_command("switch", self.cmd_switch, 1, usage="<id> <id>") self.add_command("red", self.cmd_red, 1, usage="<id>") self.add_command("blue", self.cmd_blue, 1, usage="<id>") self.add_command(("spectate", "spec", "spectator"), self.cmd_spectate, 1, usage="<id>") self.add_command("free", self.cmd_free, 1, usage="<id>") self.add_command("addmod", self.cmd_addmod, 5, usage="<id>") self.add_command("addadmin", self.cmd_addadmin, 5, usage="<id>") self.add_command("demote", self.cmd_demote, 5, usage="<id>") self.add_command("mute", self.cmd_mute, 1, usage="<id>") self.add_command("unmute", self.cmd_unmute, 1, usage="<id>") self.add_command("lock", self.cmd_lock, 1, usage="[team]") self.add_command("unlock", self.cmd_unlock, 1, usage="[team]") self.add_command("allready", self.cmd_allready, 2) self.add_command("abort", self.cmd_abort, 2) self.add_command(("map", "changemap"), self.cmd_map, 2, usage="<mapname> [factory]") self.add_command(("help", "about", "version"), self.cmd_help) self.add_command("db", self.cmd_db, 5, usage="<key> [value]") self.add_command("seen", self.cmd_seen, usage="<steam_id>") self.add_command("time", self.cmd_time, usage="[timezone_offset]") self.add_command(("teamsize", "ts"), self.cmd_teamsize, 2, usage="<size>") self.add_command("rcon", self.cmd_rcon, 5) self.add_command(("mappool", "maps", "maplist"), self.cmd_mappool, client_cmd_perm=0) self.add_command("v_myessentials", self.cmd_version) # Cvars. self.set_cvar_once("qlx_votepass", "1") self.set_cvar_limit_once("qlx_votepassThreshold", "0.33", "0", "1") self.set_cvar_once("qlx_teamsizeMinimum", "1") self.set_cvar_once("qlx_teamsizeMaximum", "8") self.set_cvar_once("qlx_enforceMappool", "0") # Vote counter. We use this to avoid automatically passing votes we shouldn't. self.vote_count = itertools.count() self.last_vote = 0 # A short history of recently executed commands. self.recent_cmds = deque(maxlen=11) # A short history of recently disconnected players. self.recent_dcs = deque(maxlen=10) # Map voting stuff. fs_homepath takes precedence. self.mappool = None mphome = os.path.join(self.get_cvar("fs_homepath", str), "baseq3", self.get_cvar("sv_mappoolfile")) if os.path.isfile(mphome): self.mappool = self.parse_mappool(mphome) else: mpbase = os.path.join(self.get_cvar("fs_basepath", str), "baseq3", self.get_cvar("sv_mappoolfile")) if os.path.isfile(mpbase): self.mappool = self.parse_mappool(mpbase)