Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- getSpawnpoint_NearTeam(spawnpoints)
- {
- // level endon("intermission");
- // There are no valid spawnpoints in the map
- if(!isdefined(spawnpoints))
- return undefined;
- // Make a list of fully connected, non-spectating, alive players
- players = getentarray("player", "classname");
- for(i = 0; i < players.size; i++)
- {
- player = players[i];
- if(player.sessionstate == "spectator" || player.sessionstate == "dead" || player == self)
- {
- // println("### ", player.name, " not considered:");
- //
- // println(" player.sessionstate == ", player.sessionstate);
- //
- // if(player == self)
- // println(" player == self");
- continue;
- }
- aliveplayers = add_to_array(aliveplayers, player);
- // println("*** ", player.name, " on team ", player.pers["team"], " added to consider list");
- }
- // Spawn away from players if they exist, otherwise spawn at a random spawnpoint
- if(isdefined(aliveplayers))
- {
- // println("*** SPAWNING FARTHEST: ", self.name);
- distlargest = -33554432;
- for(i = 0; i < spawnpoints.size; i++)
- {
- if(wouldtelefrag(spawnpoint.origin))
- continue;
- dist = 0;
- for(j = 0; j < aliveplayers.size; j++)
- {
- if(aliveplayers[j].pers["team"] == self.pers["team"])
- dist = dist - (distance(spawnpoints[i].origin, aliveplayers[j].origin) * 2);
- else
- dist = dist + distance(spawnpoints[i].origin, aliveplayers[j].origin);
- }
- if(dist > distlargest)
- {
- distlargest = dist;
- bestposition = spawnpoints[i];
- }
- }
- spawnpoint = bestposition;
- }
- else
- {
- // println("*** SPAWNING RANDOM: ", self.name);
- spawnpoint = getSpawnpoint_Random(spawnpoints);
- }
- return spawnpoint;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement