private bool movePlayer(PlayerProfile player, int teamId, int squadId, bool force, bool ignore_white_list) { if (player == null) return false; if (!force && player.getTeamId() == teamId && player.getSquadId() == squadId) { DebugWrite("^1^bWARNING^0^n: not moving ^b" + player + "^n to same Team(" + TN(teamId) + ").Squad(" + SQN(squadId) + ")", 1); return false; } else if (!ignore_white_list && isInMoveWhiteList(player)) { DebugWrite("^b" + player.ToString() + "^n in white-list, will not move to Team(" + TN(teamId) + ").Squad(" + SQN(squadId) + ")", 1); return false; } /* first move player to the no-squad, to guarantee a spot (unless he is already going to the no-squad, or stays in the same team) */ if ((squadId != 0 || player.getTeamId() != teamId) && !(virtual_mode || getBooleanVarValue("virtual_mode"))) { if (sleep) Thread.Sleep(100); ExecCommand("admin.movePlayer", player.name, teamId.ToString(), "0", "true"); } /* in virtual mode, don't actually do the move */ if (!(virtual_mode || getBooleanVarValue("virtual_mode"))) { if (sleep) Thread.Sleep(100); ExecCommand("admin.movePlayer", player.name, teamId.ToString(), squadId.ToString(), "true"); } player.setTeamId(teamId); player.setSquadId(squadId); return true; }
private void enforceDelayedMove(PlayerProfile vp) { int dtid = vp.getDelayedTeamId(); int dsid = vp.getDelayedSquadId(); vp.resetDelayedTeamSquad(); /* if player is already in the delayed team, ignore him */ if (dtid == vp.getTeamId()) { DebugWrite("Player " + vp + " is already in to ^bDTeam(" + TN(dtid) + ")^n, will skip", 3); return; } /* if teams are already balanced, ignore this player */ DebugWrite("I will now re-check if teams are balanced", 3); if (teamsBalanced()) { DebugWrite("Teams are balanced, will not move player " + vp, 3); return; } else { /* if teams are not balanced we still have to check direction of inbalancing because of possible manual move or standart balancer work! */ Dictionary<int, int> player_count = getPlayerCount(); int team_sz = serverInfo.MaxPlayerCount / 2; int bigger_team = (player_count[1] > player_count[2]) ? 1 : 2; int smaller_team = (player_count[1] > player_count[2]) ? 2 : 1; if (bigger_team == dtid) { DebugWrite("Teams are unbalanced, but in other direction that was marked for this player. Will not move player " + vp, 3); return; } } DebugWrite("Moving player " + vp + " from ^bTeam(" + TN(vp.getTeamId()) + ").Squad(" + SQN(vp.getSquadId()) + ")^n to ^bDTeam(" + TN(dtid) + ").DSquad(" + SQN(dsid) + ")^n", 3); movePlayer(vp, dtid, dsid); }
private bool playerBelongs(PlayerProfile player) { return getTeamId() == player.getTeamId() && getSquadId() == player.getSquadId(); }