Перейти к содержанию
Авторизация  
ANT

AntiAFK AutoTeamsBalancer Cod4 Cod4x

Рекомендуемые сообщения

Скрипт автобаланса и Атикемпа для Cod4 Cod4x сервера.

AFK_Camp_Watcher:

#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;

AFK_Camp_Watcher()
{
   level waittill("prematch_over");
   self endon("death");
   self endon("disconnect");
   self endon("joined_spectators");
   self endon("game_ended");
   my_afk_camp_time = 0;
   have_i_been_warned = false;
   camp_time = 20;
   while( 1 )
   {
       old_position = self.origin;
       old_angles = self.angles;
       wait 1;
       new_position = self.origin;
       new_angles = self.angles;
       distance = distance2d( old_position, new_position );
       if( distance == 0 && old_angles == new_angles ) {
           my_afk_camp_time++;
       }
       else {
           my_afk_camp_time = 0;
           have_i_been_warned = false;
       }
       if( my_afk_camp_time == camp_time && !have_i_been_warned )
       {
           self IprintLnBold("^7You appear to be ^1AFK^7!");
           self IprintLnBold("^710 seconds to move!");
           have_i_been_warned = true;
       }
       if( my_afk_camp_time == ( camp_time + 10 ) && have_i_been_warned ) {
           self IprintLnBold("^7You will be moved to spectators for ^1AFK ^7/ ^1Camping^7!");
           wait 2;
           self.sessionteam = "spectator";
           self.sessionstate = "spectator";
           self [[level.spawnSpectator]]();
           iPrintln("^7" +self.name + " ^7was moved to spectators for ^1AFK ^7/ ^1Camping^7!");
       }
   }
}

 

AutoTeamsBalancer:

#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;

getTeamPlayers(team) {
   result = [];
   players = level.players;
   for(i = 0; i < players.size; i++) {
       if (isDefined(players[i]) && players[i].pers["team"] == team){
           result[result.size] = players[i];
       }
   }
   return result;
}

getLowScorePlayers(team, nPlayers) {
   result = [];
   if (team.size > 0 && nPlayers > 0 && team.size >= nPlayers) {
       //Sorting team by score (bubble sort algorithm @TODO optimize)
       for (x = 0; x < team.size; x++) {
           for (y = 0; y < team.size - 1; y++) {
               if (isDefined(team[y]) && isDefined(team[y+1]) && team[y].pers["score"] > team[y+1].pers["score"]) {
                   temp = team[y+1];
                   team[y+1] = team[y];
                   team[y] = temp;
               }
           }
       }
       for (i = 0; i < nPlayers; i++) {
           if (isDefined(team[i])) {
               result[i] = team[i];
           }
       }
   }
   return result;
}

AutoTeamsBalancer() {
   if(level.gametype == "dm")
       return;
   pl_change_team = [];
   changeteam = "";
   offset = 0;
   while(1) {
       wait 20;
       if (isDefined(game["state"]) && game["state"] == "playing") {
           pl_change_team = [];
           changeteam = "";
           offset = 0;
           team["axis"] = getTeamPlayers("axis");
           team["allies"] = getTeamPlayers("allies");
           if(team["axis"].size == team["allies"].size)
               continue;
           
           if(team["axis"].size < team["allies"].size) {
               changeteam = "axis";
               offset = team["allies"].size - team["axis"].size;
           }
           else {
               changeteam = "allies";
               offset = team["axis"].size - team["allies"].size;
           }
           if (offset < 2)
               continue;
           iPrintln("^7Teams will be balanced in 5 sec...");
           wait 5;
           if (isDefined(game["state"]) && game["state"] == "playing") {
               team["axis"] = getTeamPlayers("axis");
               team["allies"] = getTeamPlayers("allies");
               if(team["axis"].size == team["allies"].size) {
                   iPrintln("^7AutoBalance aborted: teams are already balanced!");
                   continue;
               }
               if(team["axis"].size < team["allies"].size) {
                   changeteam = "axis";
                   offset = team["allies"].size - team["axis"].size;
               }
               else {
                   changeteam = "allies";
                   offset = team["axis"].size - team["allies"].size;
               }
               if (offset < 2) {
                   iPrintln("^7AutoBalance aborted: teams are already balanced!");
                   continue;
               }
               offset = offset / 2;
               pl_to_add = int(offset) - (int(offset) > offset);
               pl_change_team = [];
               bigger_team = [];
               if (changeteam == "allies"){
                   bigger_team = team["axis"];
               }
               else {
                   bigger_team = team["allies"];
               }
               pl_change_team = getLowScorePlayers(bigger_team, pl_to_add);
               for(i = 0; i < pl_change_team.size; i++) {
                   if(changeteam == "axis")
                       pl_change_team[i] [[level.axis]]();
                   else 
                       pl_change_team[i] [[level.allies]]();
               }
               iPrintln("^7Teams were balanced!");
               iPrintlnbold("^7Teams were balanced!");
           }
       }
   }
}

AntiAFK_AutoTeamsBalancer_Script.zip

Поделиться сообщением


Ссылка на сообщение

Ваш контент должен быть одобрен модератором перед публикацией

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
Цвет ссылок