Help with balance algorithm
I can't figure it out.
I set autojoin only for CT team (Team Join Management). And want make balance-plugin, which transfer some CT player to Terrorists. I want play: [T] 3 vs. 9 [CT], 2 vs. 6, 4 vs. 12, 9 vs. 24, etc. (33,3% Players for Terrorists, rest — 67% for CTs).
I make this code:
PHP Code:
public check_players() { new players[32], plrsnum, pl, ts, cts get_players(players, plrsnum, "h") for(new j; j<plrsnum; j++) { pl = players[j] new CsTeams:team team = cs_get_user_team(pl) if(team == CS_TEAM_T) { ts++ } else if(team == CS_TEAM_CT) { cts++ } } new Float:ts_required_f ts_required_f = cts / get_pcvar_float(g_cvar_t_count_div) new ts_required = floatround(ts_required_f) if(ts <= ts_required) { move_player(2) // CT to T } else { move_player(1) // T to CT } }
public move_player(team) { new players[32], plrsnum, pl if(team == 1) { get_players(players, plrsnum, "he", "TERRORIST") } else { get_players(players, plrsnum, "he", "CT") }
if(team == 1) { cs_set_user_team(players[plrsnum - 1], CS_TEAM_CT) } else { cs_set_user_team(players[plrsnum - 1], CS_TEAM_T) } }
But it's ugly and buggy. This code forever move "last" player to opposite team (9 vs. 23 — 8 vs. 24).
Maybe anyone have better solution?
|