Killing Floor 2

Killing Floor 2

Not enough ratings
Controlled Vote Collector
   
Award
Favorite
Favorited
Unfavorite
Maps and Mods: Mutators
File Size
Posted
Updated
126.923 KB
10 Aug, 2022 @ 10:05pm
26 Apr @ 1:24pm
9 Change Notes ( view )

Subscribe to download
Controlled Vote Collector

Description


Description
New vote collector with improvements and features.

Features
  • map statistics;
  • default/next map setting;
  • anonymous or public voting;
  • kick logging;
  • kick voting setup;
  • early kick protection.

(it would be logical to separate these features into several mutators, but this is a bad idea for technical reasons)

Whitelisted?
No. But I really hope that it will be whitelisted.

⚠️ I submitted whitelist request here:
https://forums.tripwireinteractive.com/index.php?threads/whitelisting-mods-and-mutators.120340/post-2353667

Usage (server)
Note: If you don't understand what is written here, read the article Dedicated Server (KF2 wiki)[wiki.killingfloor2.com] before following these instructions.
  1. Open your PCServer-KFEngine.ini / LinuxServer-KFEngine.ini;
  2. Find the [IpDrv.TcpNetDriver] section and make sure that there is a line (add if not):
    DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload
    ❗️ If there are several DownloadManagers= then the line above should be the first ❗️
  3. Add the following string to the [OnlineSubsystemSteamworks.KFWorkshopSteamworks] section (create one if it doesn't exist):
    ServerSubscribedWorkshopItems=2847465899
  4. Start the server and wait until the mutator is downloading;
  5. Add mutator to server start parameters: ?Mutator=CVC.Mut and restart the server.

Setup (KFCVC.ini)
Config will be created at the first start*.

[CVC.MapStat]
  • Set bEnable=True to start collecting maps stats. The following information is collected: number of full rounds on the map, total time (minutes), average time (minutes). Statistics are stored in the KFMapStats.ini. To reset the statistics, delete KFMapStats.ini and restart the server.
  • Set SortPolicy to sort the list of statistics. Possible values:
    • CounterAsc
    • CounterDesc
    • NameAsc
    • NameDesc
    • PlayTimeTotalAsc
    • PlayTimeTotalDesc
    • PlayTimeAvgAsc
    • PlayTimeAvgDesc

[CVC.MapVote]
This section sets the next map when no one voted for the map.
  • Set DefaultNextMap to choose which map will be next if no players voted for the next map. Possible values:
    • Any - any map from the current map cycle;
    • Official - official map from the current map cycle;
    • Custom - custom map from the current map cycle;
    • <MapName> - specified map (for example: KF-Nuked). If the specified map is not in the current map cycle, the next map from the cycle will be selected.
  • Set bRandomizeNextMap to True to randomize the next map (will be selected a random map that matches the DefaultNextMap parameter).

[CVC.SkipTraderVote]
  • bChatNotifications - set to True to see player votes in chat;
  • PositiveColorHex - hex color for yes vote in chat;
  • NegativeColorHex - hex color for no vote in chat;
  • bHudNotifications - set to True to see player votes in HUD;
  • DefferedClearHUD - HUD notification will remain on the screen for the specified number of seconds after voting ends;
  • VoteTime - time in seconds for voting (will be automatically reduced if it exceeds the trader's remaining time).

[CVC.PauseVote]
  • bChatNotifications - set to True to see player votes in chat;
  • PositiveColorHex - hex color for yes vote in chat;
  • NegativeColorHex - hex color for no vote in chat;
  • bHudNotifications - set to True to see player votes in HUD;
  • DefferedClearHUD - HUD notification will remain on the screen for the specified number of seconds after voting ends;
  • VoteTime - time in seconds for voting (will be automatically reduced if it exceeds the trader's remaining time).

[CVC.KickVote]
  • bChatNotifications - set to True to see player votes in chat;
  • WarningColorHex - hex color for chat warnings;
  • PositiveColorHex - hex color for yes vote in chat;
  • NegativeColorHex - hex color for no vote in chat;
  • bHudNotifications - set to True to see player votes in HUD;
  • bHudNotificationsOnlyOnTraderTime - set to True to show HUD notification only during the trader time;
  • DefferedClearHUD - HUD notification will remain on the screen for the specified number of seconds after voting ends.
  • bLogKickVote - set to True to log information about every kick vote;
  • MinVotingPlayersToStartKickVote - minimum number of voting players to start kick voting;
  • MaxKicks - maximum number of kicks per game;
  • VoteTime - time in seconds for voting.

[CVC.KickProtected]
  • Use PlayerID to set the list of players immune to kick. You can use UniqueID or SteamID;
  • Set NotifyPlayerAboutKickAttempt to True to let players on this list receive notifications of attempts to kick them.

[CVC.StartWaveKickProtection]
In this section, the system for preventing early kicks is configured (especially for lazy ass admins like me who don't want to consider player complaints about this).
  • Waves - the number of waves during which a new player has kick protection and cannot start kick vote;
  • MinLevel - the minimum level that a player needs to have in order to receive protection from a kick after joining the server.

How start wave kick protection works:
When a player joins a server, he is protected from a kick for the specified number of Waves. This keeps the server from being taken over by players, and it also forces current players to play with the new player for at least a little bit before they can kick him. This solves most of the unfair kicks in the game.

Along with receiving the kick protection, the new player loses the ability to start kick vote. This eliminates the ability for new players to remove existing players using kick protection for impunity.

When the player has played the specified number of Waves, he loses the kick protection and gets the opportunity to start kick vote.

The MinLevel parameter specifies an exception to these rules, giving kick protection only to players above or equal the specified level. All players can vote to exclude players with an unsuitable level, regardless of whether they have played enough Waves or not. This allows to remove low-level players without waiting for them to screw up in the game.

Troubleshooting
(*) If your config is not created for some reason, create it manually with the following content:
[CVC.CVC]
Version=0


Then start the server and check the file again - config content should be generated.

Translators:
cheungfatzong - Traditional Chinese [CHT], Simplified Chinese [CHN].

Sources
https://github.com/GenZmeY/KF2-ControlledVoteCollector (GNU GPLv3)
6 Comments
Hunter of Darkness 25 Apr @ 8:59pm 
Changing the colors of the text doesn't work
GenZmeY  [author] 16 Aug, 2022 @ 12:27am 
@SleepingD™ ツ, Done. VoteTime setting in [CVC.SkipTraderVote], [CVC.PauseVote] and [CVC.KickVote] sections
SleepingD 14 Aug, 2022 @ 3:37am 
yes wait for it :D
GenZmeY  [author] 13 Aug, 2022 @ 10:42pm 
@SleepingD™ ツ, it can't be configured right now, but I can add it. It shouldn't be hard
SleepingD 13 Aug, 2022 @ 7:29pm 
is this mutator have kick or skip vote customize time?
i try to compatible with my etarnal cd. cuz countdown timer is to fast.