-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Here in this wiki, we will be covering tutorials about the multimode core and questions about the plugin.
This is a utility plugin for Source Mod that recreates the mapchooser/UMC for multimode gamemode selector for multimode servers.
An alternative map chooser for community servers for multi-mode servers.
Inspired by Map Chooser from Source Mode and UMC (Ultimate Map Chooser).
Before using our plugin, please check the plugin compatibility for the following games... Multimode Core only works for games:
- Team Fortress 2
- Counter-Strike Source (Not Tested)
- Half-Life 2 Deathmatch (Not Tested)
- Left 4 Dead 2 (Not Tested)
- Left 4 Dead 1 (Not Tested)
(Warning: Remembering that this plugin is completely in beta and you need permission from the owner to use it on your server.)
Here you can find some of the things that the multimode core contains, it's worth taking a look!
Contains an administration menu for multimode with useful options for administrators such as forcing a map, starting an administrator or normal vote, and forcing a separate vote for just that group/subgroup.
Multimode Core was made to focus on multimode servers and to be a great alternative map chooser for developers to use, you can choose between doing a map cycle of groups and maps or just maps.
Subgroups are useful for voting with multiple choices, having two votes between groups and subgroups, if you are looking for this, you have found the right place.
Multimode Core contains its own rock the vote system, users can choose to force a vote to vote for the gamemodes or maps they want.
Multimode has its own nominate system focused on groups of gamemodes and maps to appear in the next vote if a user selects not to nominate, you can nominate groups, subgroups and maps to appear in the next vote, containing only one nomination per map (this limit can be turned off).
Multimode contains its own automatic end vote system, which creates a vote when a certain limit is reached, whether by time limit, frags or rounds.
The Multimode core has run-off votes. When a vote does not reach the required percentage of players for an option to win, or when there is a tie between items, a run-off vote starts with only those items, aiming to achieve a fair result.
The Multimode core has a random cycle system, where it chooses a random group, subgroup and map to define as the next map, either in the next round or when a map is initialized.
Multimode Core contain customizable sounds for opening vote and closing vote.
Multimode Core contains support for native votes that use the L4D/L4D2/TF2/CSGO built-in vote screens.
Multimode Core contains support for workshop maps, and is the easiest way to configure workshop maps, great for cloud maps.
Multimode Core contains a dynamic countdown system involving end vote, useful for showing players that an end vote is about to take place.
Multimode Core has support for discord, with support for dynamic third-party applications that is fully customizable and accessible for all developers to use.
Multimode core contains a system of descriptions, which are useful for people who don't know how a mode, map, or subgroup works, and also functions as a rotation viewer...
The multimode core has a download / precache system for customized content files for your group, subgroup, or maps directly from your map cycle.
This is a tutorial on how to install Multimode Core.
Install all files within the repository, this installs all files necessary for the plugin to work.
Click Here To Install Multimode Core!
Our plugin needs some dependencies to work, install the dependencies to make the plugin work:
- Sourcemod 1.12+
- Discord API (Optional - Only needed for Discord integration)
- More Colors
- Native Votes (Optional - Only needed for NativeVotes support)
With the Multimode Core installed in your computer, drop all the necessary files into the "/gamedir/addons/sourcemod" folder, the installation order should be like this:
Game Dir/
└── addons/
└── sourcemod/
├── configs/
│ ├── mmc_mapcycle.txt
│ └── countdown.txt
├── plugins/
│ ├── multimode_adminmenu.smx
│ ├── multimode_core.smx
│ ├── multimode_countdown.smx
│ ├── multimode_discord.smx (Optional)
│ ├── multimode_descriptions.smx (Optional)
│ ├── multimode_downloads.smx (Optional)
│ ├── multimode_endvote.smx
│ ├── multimode_extra.smx
│ ├── multimode_mapcommands.smx
│ ├── multimode_nativevotes.smx (Optional)
│ ├── multimode_nominations.smx
│ ├── multimode_randomcycle.smx
│ ├── multimode_rockthevote.smx
│ └── nativevotes.smx (Optional - Only if using NativeVotes)
├── scripting/
│ ├── multimode_adminmenu.sp
│ ├── multimode_core.sp
│ ├── multimode_countdown.sp
│ ├── multimode_discord.sp (Optional)
│ ├── multimode_descriptions.sp (Optional)
│ ├── multimode_downloads.sp (Optional)
│ ├── multimode_endvote.sp
│ ├── multimode_extra.sp
│ ├── multimode_mapcommands.sp
│ ├── multimode_nativevotes.sp (Optional)
│ ├── multimode_nominations.sp
│ ├── multimode_randomcycle.sp
│ ├── multimode_rockthevote.sp
│ ├── multimode_test.sp
│ ├── nativevotes.sp (Optional)
│ └── include/
│ ├── multimode.inc
│ ├── emitsoundany.inc
│ └── multimode/
│ ├── base.inc
│ ├── downloads.inc
│ ├── mapcyclecommands.inc
│ ├── randomcycle.inc
│ └── utils.inc
└── translations/
├── chi/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── da/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── de/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── es/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── fr/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── it/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── pt/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── ru/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── zho/
│ ├── multimode_extra.phrases.txt
│ └── multimode_voter.phrases.txt
├── multimode_extra.phrases.txt
└── multimode_voter.phrases.txt
Note: Plugins marked as "(Optional)" are not required for basic functionality. Install them only if you need their specific features.
If everything is ok, congratulations! You have installed the multimode core!
Updating the multimode core is very simple. Just replace a few specific files from the new update on your server.
Since these are specific files to add to your server, we will illustrate how to install them and what needs to be done to update the multimode core.
First, install the new version of the multimode core by simply installing the entire repository and replace the following files.
Game Dir/
└── addons/
└── sourcemod/
├── plugins/
│ ├── multimode_adminmenu.smx
│ ├── multimode_core.smx
│ ├── multimode_countdown.smx
│ ├── multimode_discord.smx (Optional)
│ ├── multimode_descriptions.smx (Optional)
│ ├── multimode_downloads.smx (Optional)
│ ├── multimode_endvote.smx
│ ├── multimode_extra.smx
│ ├── multimode_mapcommands.smx
│ ├── multimode_nativevotes.smx (Optional)
│ ├── multimode_nominations.smx
│ ├── multimode_randomcycle.smx
│ ├── multimode_rockthevote.smx
│ └── nativevotes.smx (Optional)
├── scripting/
│ ├── multimode_adminmenu.sp
│ ├── multimode_core.sp
│ ├── multimode_countdown.sp
│ ├── multimode_discord.sp (Optional)
│ ├── multimode_descriptions.sp (Optional)
│ ├── multimode_downloads.sp (Optional)
│ ├── multimode_endvote.sp
│ ├── multimode_extra.sp
│ ├── multimode_mapcommands.sp
│ ├── multimode_nativevotes.sp (Optional)
│ ├── multimode_nominations.sp
│ ├── multimode_randomcycle.sp
│ ├── multimode_rockthevote.sp
│ ├── multimode_test.sp
│ ├── nativevotes.sp (Optional)
│ └── include/
│ ├── multimode.inc
│ ├── emitsoundany.inc
│ └── multimode/
│ └── ... (All include files)
└── translations/
└── ... (All translation files)
Basically, just install everything except the "configs" folder, as it may overwrite your unique countdown configuration and your entire map cycle.
(Always check the multimode core version to verify whether it is new or not, using the "multimode_version" command.)
Now that we have installed the multimode core, we need to configure it to work the way we want.
When running the plugin on the server, the plugin itself creates a CFG inside the source mod cfg folder for each plugin:
gamedir/cfg/sourcemod/multimode_core.cfg
gamedir/cfg/sourcemod/multimode_rockthevote.cfg
gamedir/cfg/sourcemod/multimode_nominations.cfg
gamedir/cfg/sourcemod/multimode_endvote.cfg
gamedir/cfg/sourcemod/multimode_adminmenu.cfg
gamedir/cfg/sourcemod/multimode_countdown.cfg
gamedir/cfg/sourcemod/multimode_randomcycle.cfg
gamedir/cfg/sourcemod/multimode_nativevotes.cfg
gamedir/cfg/sourcemod/multimode_discord.cfg
Where we will have all the commands to configure and executed when each plugin is started.
To see all the commands of our plugin, you can view in: Multimode Core Commands
Once everything is configured, we will now configure the map cycle of the multimode core.
Important
This part is a bit complex so pay attention!
When we install the multimode core, we will have the map cycle configuration in the "gamemode.cfg" file inside the "/gamedir/addons/sourcemod/configs" folder, I left some example inside this file so as not to confuse users.
The map cycle environment looks the same as the UMC, but different to our gamemode voter...
I will share the example within this wiki...
"Mapcycle"
{
"Test Gamemode" // Gamemode Group, You can put any name, this name will appear in the gamemodes vote...
{ // You can disable groups in the "multimode_method" command but you will still need to make groups for the map cycle.
"enabled" "1" // Enable and disabled the gamemodes...
"minplayers" "6"
"maxplayers" "24"
"maps" // Within the group, we will have maps, which will be chosen by players when they vote for the group...
{
"cs_" {} // Wildcard maps, when a map name is "map_" the plugin will get all maps involving that name in game's maps folder and put them in the vote...
"balloon_race_v2b" {} // Normal maps (NO .bsp IN THE MAP NAME), manually inserted, this is great because you can use some commands just for this, where there is no wild card...
"balloon_race_v2b"
{
"command" "exec gamemodes/ballon_race" // Commands, executed when the map is initialized on the server...
"display" "Ballon Race Test Map!" // Display, replace the official map name with a custom one, appears in votes and nominates...
}
"dm_"
{
"command" "exec gamemodes/ballon_race" // Commands, wild cards can also use commands, but the "display" may not be compatible with wild cards, so we do not recommend using it on wildcards!
}
"workshop/tf2ware_ultimate.ugc3413262999" // Supports workshop maps
{
"command" "exec test.cfg" // Commands, now functional, but must be the same as the name used to initialize the map on the server, for example "workshop/tf2ware_ultimate.ugc3413262999", maps with only the id do not work, "workshop/3413262999".
"display" "TF2 Ware Ultimate" // Display, displays work for workshop maps.
}
} // Close the maps tab...
} // Close the gamemodes tab...
"Test Gamemode 2"
{
"enabled" "1" // Enable and disabled the gamemodes...
"maps"
{
"de_" {}
"surf_utopia_v3" {}
"ctf_turbine"
{
"display" "CTF Turbine"
"command" "mp_timelimit 20"
}
}
}
"Test Gamemode 3 Not Working Exemple :("
{
"enabled" "0" // Gamemode not working, disabled... :(
"adminonly" "1" // Only for admin tests...
"maps"
{
"de_" {}
}
}
}
Along with the map cycle configuration, we have subgroups, subgroups is useful for groups in another group, providing more customization for voting.
This will change the entire voting process of this group, from gamemode and map voting to gamemode voting, to subgroup voting and subgroup map voting.
But don't worry, the voting process will only change if that specific group is voted. Now, groups that only have maps will follow the same voting process as desired.
"Mapcycle"
{
"Test Gamemode"
{
"enabled" "1"
"subgroup" // Sub Groups, you add a subgroup and then a map, this will create another vote.
{
"Test Gamemode Sub Group 1" // The subgroup that contains a map for subgroup voting within that group.
{
"enabled" "1"
"maps" // The maps of this sub group.
{
"testmap_subgroup1"
{
"command" "command" "exec server.cfg"
"display" "Test Map Sub Group"
}
}
}
"Test Gamemode Sub Group 2"
{
"enabled" "1"
"maps"
{
"testmap_subgroup2"
{
"command" "command" "exec server.cfg"
"display" "Test Map Sub Group 2"
}
}
}
... // add more as needed.
}
}
}
Some commands to place within the group or maps of your available gamemode are:
"command" "command here"
Command executes a command on the server when this map is initialized and with the command defined in the map cycle of the voted map...
"pre-command" "command here"
Pre-command executes a command when the map is finished, when it is on the game over screen...
"vote-command" "command here"
Vote-command executes a command when the map is selected in the vote...
Important
Remember that this commands only works with the exact map name; server maps can be easily ignored. Now, for workshop maps, you need to enter the exact map name for it to work, as the gamemode voter only analyzes maps that are actually on the server...
"config" "cfghere"
Config, executes a configuration for that specific group, subgroup or map, an alternative to the "command" variants for executing CFG's.
"display" "Name a map here"
Display, custom display shows a new name of items for voting and in general everything involving the name of the gamemode and the map, removing the name of the map and putting a new custom one...
You can use the following templates in your display strings to dynamically insert values:
| Template | Description | Example Output |
|---|---|---|
{MAP} |
The map name (formatted if available) | cp_dustbowl |
{MIN_TIME} |
Minimum time for the item (from mintime) |
12 |
{MAX_TIME} |
Maximum time for the item (from maxtime) |
18 |
{MIN_PLAYERS} |
Minimum players required (from minplayers) |
6 |
{MAX_PLAYERS} |
Maximum players allowed (from maxplayers) |
24 |
{NOMINATE_FLAG} |
Admin flags required for nomination (from nominate_flags) |
z |
Note: Templates are replaced with empty strings if the corresponding value is not set or is 0/disabled.
"enabled" "1 / 0"
Enabled, it activates and deactivates the mode for everyone, including administrators... (unless forced)
"adminonly" "1 / 0"
Adminonly, activates and deactivates the admin only mode of the mode or map, only administrators can use this mode or map in their votes or force this map or gamemode...
"maxplayers" "Def"
Maxplayers, the maximum number of players for this map or gamemode...
"minplayers" "Def"
Minplayers, the minimum number of players for this map or gamemode...
"mintime" "Def"
MinTime, the real-life time range in which the group, subgroup, or map will be active.
"maxtime" "Def"
MaxTime, outside of this range, the content will be automatically disabled.
Important
When a group, subgroup or map has exceeded the "maxtime", you need to wait for the next map for the group, subgroup or map to no longer be available...
"maps_invote" "Def"
Invote item limit of map for votes...
"subgroups_invote" "Def"
Set the invote subgroup item limit for subgroup votes, only works for "subgroup" sections.
"nominate_flags" "Def"
Restrict players nominations of a group, subgroup or maps by admin flags.
"weight" "Def"
Defines the base weight of an item in the Multimode voting system, i.e., it controls how often a map, subgroup, or group can enter an automatic or advanced vote, even before the player votes.
Configurable weight with the command:
multimode_weight_scale “1.0” // Range: 0.1 to 10.0Scale examples:
-
scale = 1.0: Linear ratio (directly multiplies the base weight) -
scale = 2.0: Exponential ratio (higher weight have much more impact) -
scale = 0.5: Square root ratio (more balanced impact)
Important
As this plugin is under development, still in beta, we will have to make more commands for the map cycle, so stay tuned for updates!
Since multimode core support will always be active for now, updating and making multimode core a reality requires a lot of work and focused time, to support me, you can donate or give us a star on GitHub. It really motivates me! I appreciate it in advance!
Live Pix: https://livepix.gg/thedgb
