示例#1
0
    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 = {}
示例#2
0
    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"
示例#3
0
 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)
示例#6
0
    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")
示例#7
0
 def unload_essentials(self):
     try:
         minqlx.unload_plugin('essentials')
     except Exception as e:
         pass
示例#8
0
 def unload_ban(self):
     try:
         minqlx.unload_plugin('ban')
     except Exception as e:
         pass
示例#9
0
 def unload_essentials(self):
     try:
         minqlx.unload_plugin('essentials')
     except Exception as e:
         pass
 def f():
     try:
         minqlx.unload_plugin("fun")
     except:
         pass
示例#11
0
    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)