Oj, visste inte att ni hade en Mumble, får titta in lite senare ikväll.
Och det är sant som du säger, det är svårt att skapa balans, särskilt när [Wolf]-killarna är inne och härjar.
Nej men det finns väl ett "auto balance"-läge som justerade lagen utifrån hur mycket poäng man fick rundan innan. T ex om det fanns två spelare som låg på första plats med 12k poäng så skulle de kanske inte vara med i samma lag nästa runda.
Dock så skapar ju detta lite problem eftersom att man ofta har vänner som man sitter och snackar med - och dem vill man ju klart vara dela lag med.
Men ja, ett liknande balansläge som följer squads istället för enskilda spelare kanske?
Förra ggn vi försökte med ett script så kraschade vi servern så fick felsöka, hittade ett fel så drog igång det idag igen. Håller tummarna...
Om ni är nyfikna så finns hela beskrivningen nedanför, inte formaterad dock.
Insane Balancer - 0.0.0.5
Författare: micovery
Description
This is the draft impelementation for a flexible team balancer, which can balance teams by skill, rank, score, kdr and other rules. All of it, while doing best effort to maintain squads together, and clans on the same team.
Sort Methods
A sort method is a rule used for sorting a list of players or squads. The following balancing methods are supported:
kpm_asc_round , kpm_desc_round
Sorting based on the soldier round kills per minute
spm_asc_round , spm_desc_round
Sorting based on the soldier round score per minute
kdr_asc_round , kdr_desc_round
Sorting based on the soldier round kill to death ratio
score_asc_round , score_desc_round
Sorting based on the soldier round score
time_asc_round , time_desc_round
Sorting based on the time the player joined the server.
All the data for sorting rules ending in _round is obtained from the previous or current round statistics.
Live Balancing Logic
Insane Balancer tries to be as un-intrusive as posible while balancing a game that is in progress. If the teams become un-balanced while the game is in progess it will create two pools of players and sort them. (players chosen from the bigger team) One pool for players who are not in any squad, and another pool for squads. First it will chose the player at the top of the no-squad pool and move it to the other team until teams are balanced. If the no-squad pool becomes empty (and teams are still unbalanced) then squad at the top of the squad pool is moved to the other team if the number of players needed is greater than or equal to the size of the squad. If the number of players needed is less than the size of the top squad, a random random player is chosen from the squad and moved to the opposite team until teams are balanced. (players that were on the same squad are kept together)
Round Re-balancing Logic
If end of round balancing is enabled, Insane Balancer will completely re-sort teams, even if they are already balanced. The logic for the re-sort is as follows. Create two pools of players and sort them (choosing players from all teams). One pool for players who are not in squads, and another for players who are in squads. Then, move all all players and squads to the neutral team, in order to end up with two empty non-neutral teams. Then, pick the squad at the top of the squad pool, and move it to the losing team. Then pick the next squad on top of the squad pool, and move it to the team with the least players, and so on. Once the squad pool is empty, pick the player on top of the no-squad pool, and move it to the team with least players, and so on. If teams are still unbalanced after the no-squad pool is empty, then the live balancing logic is applied.
This is a high-level explanation explanation of the round-balancing logic algorithm. It does not mean that players are actually moved to the neutral team. This is not possible anymore with Battlefield 3. Instead, it's done virtually with 3 arrays of players to represent the three teams: Neutral, US, and RU. When all the calculations are done, and the plugin has determined the target teams and squad for each player ... it will then swap players between RU, and US one at a time.
Note that if the server is full, round-balacing logic will not be applied. It's not possible to move players when both teams are full. Also note that, it can happen that the server becomes full while the round-balancing is being applied. When this happens, the admin.movePlayer commands may fail. This was not a problem in Battlefield Bad Company 2, because there was a spare/neutral team that players could be moved to when balancing a full server.
Balanced Team Determination
Teams are determined to be balanced if the difference in number of players between teams is less than or equal to the balance_threshold. The balance_threshold has to be a number greater than 0. If the total number of players in the server is less than or equal to the balance_threshold, then the user set threshold is ignored, and a value of 1 is used instead. Technically, no team should ever be bigger than the other by more than the value of balance_threshold.
Keeping Squads Together
Insane Balancer is coded to keep squads together by default. However, you can set keep_squads to false and both round-balancing and live-balancing logics are changed a bit. What happens, is that all squads in the squad pool are broken, and players put into the no-squad pool, before balancing starts.
Note that for live-balancing, players are not actually moved out of the squad. (it would kill all players if you do that). They are just treated as if they were not in a squad. Also, If keep_squads is enabled, clan-squads will not be broken.
Keeping Clans On Same Team (requires Battlelog credentials)
During end-of round re-balancing, if keep_clans is enabled, players with the same clan tag are be removed from their current squad, and put into exclusive squads. These special clan squads are given priority over non-clan squads, so that clan-squads end up in the same team. Note that when keep_clans is enabled, teams may end up unbalanced in number, so the live-balancing logic may still need to be applied.
During live-balancing, if keep_clans is enabled, players with clan tags are given priority, as long as there is at least two members of the same clan in the server. When picking players to move to the other team, if a player has a clan tag, the player will be automatically skipped, if the majority of the clan is in the same team (otherwise the player is moved to the other team to join his clan buddies). If at the end of live-balancing phase, teams are still unbalanced, then keep_clans is disabled temporarily, and the live-balancer logic is applied again.
Settings
balance_threshold
(integer > 0) - maximum difference in team sizes before teams are considered unbalanced
Technically, no team will ever be bigger by more than the balance_threshold
live_interval_time
(integer > 0) - interval number of seconds at which team balance is checked during game
round_interval
(integer > 0) - interval number number of rounds at which the round balancer is applied
For example, if map Atacama has 6 rounds, and the value of round_interval is 2, then the round balancer is run at the end of rounds 2, 4, and 6.
This value is used for all maps, unless you provide a per-map interval value.
Per-map round interval values can be set in the "Round Interval" section of the plugin.
There you will see a list of maps, and game modes supported by BF3.
The following prefixes are used to identify game modes:
cl - conquest large
cs - conquest small
rl - rush large
sr - squad rush
td - team death-match
round_wait_time
(integer > 0) - number of seconds to wait after round-over event, before activating the round-end balancer
keep_squads_live
true - squads are preseved during live balancing
false - squads are intentionally broken up during live balancing
This setting only applies to the round-end balancer.
keep_squads_round
true - squads are preseved during end of round balancing
false - squads are intentionally broken up during end of round balancing
This setting only applies to the round-end balancer.
keep_clans_round
true - players with same clan tags are kept on the same team during end of round balancing
false - clan tags are ignored during end of round balancing
keep_clans_live
true - players with same clan tags are kept on the same team during live balancing
false - clan tags are ignored during live balancing
warn_say
true - send auto-balancer warning in chat
false - do not say the auto-balancer warning in chat
balance_round
true - enables the end of round balancer
false - disabled the end of round balancer
balance_live
true - enables the live balancer
false - disables the live balancer
admin_list
(string) - list of players who are allow to execute admin commands
round_sort
(string) - method used for sorting players and squads during end of round balancing
live_sort
(string) - method used for sorting players and squads during live balancing
console
(string) - here you can use to test the in-game commands from within procon.
For example: "!show round stats" will print the player statistic for the current round in the plugin console.
Public In-Game Commands
In-game commands are messages typed into the game chat box, which have special meaning to the plugin. Commands must start with one of the following characters: !,@, or /. This plugin interprets the following commands:
!move
This command can be used by regular players to move themselves to the opposite team as long as teams are balanced.
Admin In-Game Commands
These are the commands that only soldiers in the "admin_list" are allowed to execute. Reply messages generated by admin commands are sent only to the admin who executed the command.
!start check
This command puts the live balancer in started state, so that it periodically (every live_interval_time seconds) checks the teams for balance.
When this command is run balance_liveis implicitly set to true.
!stop check
This command puts the live balancer in stopped state. When this command is run balance_live is implicitly set to false.
!show round stats [player-name]
This command is used for showing the player statistics for the current round. The name of the player is optional. If you do not provide a player name, it will print statistics for all players.
!balance live
This command forces the live balancing logic to be applied whithout any warning period or countdown.
!balance round
This command forces the round balancing logic to be applied whithout any warning period or countdown.
1. !set {variable} {to|=} {value}
2. !set {variable} {value}
3. !set {variable}
This command is used for setting the value of this plugin's variables.
For the 2nd invocation syntax you cannot use "=" or "to" as the variable value.
For the 3rd invocation syntax the value is assumed to be "true".
!get {variable}
This command prints the value of the specified variable.
Forumregler | Synpunkter på moderering i forumet? Kontakta via PM, Email eller kontaktformuläret.
Huvudadmin för Geeks Discord - Mötesplatsen för gamers