Dr help

Vaata eelmist teemat Vaata järgmist teemat Go down

avatar
Muay Thai
Komeet
Postitusi : 124
Maine : 3
Liitus : 30/11/2014
Vaata kasutaja profiili

PostitamineMuay Thai on 27.08.15 22:54

mul on dr serveris selline mure et et terrodesse läheb rohkem terrosid kui 1 Mida ma pean lisama/muutma et saaks olla ainult 1 terro dr serveris.
avatar
Tonight


Postitusi : 14640
Maine : 2652
Liitus : 19/02/2012
Staatus : @Faval
Vaata kasutaja profiili

PostitamineTonight on 29.08.15 21:53

Selle scriptiga saad teha nii, et kõik lähevad automaatselt CTks:
Kood:
#include <amxmodx>

enum
{
   TEAM_NONE = 0,
   TEAM_T,
   TEAM_CT,
   TEAM_SPEC,
   
   MAX_TEAMS
};
new const g_cTeamChars[MAX_TEAMS] =
{
   'U',
   'T',
   'C',
   'S'
};
new const g_sTeamNums[MAX_TEAMS][] =
{
   "0",
   "1",
   "2",
   "3"
};
new const g_sClassNums[MAX_TEAMS][] =
{
   "1",
   "2",
   "3",
   "4"
};

// Old Style Menus
stock const FIRST_JOIN_MSG[] =      "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] =   "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] =      "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] =   "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM =      2;

new g_iTeam[33];
new g_iPlayers[MAX_TEAMS];

new tjm_join_team;
new tjm_switch_team;
new tjm_class[MAX_TEAMS];
new tjm_block_change;

public plugin_init()
{
   register_plugin("Team Join Management", "0.3", "Exolent");
   register_event("TeamInfo", "event_TeamInfo", "a");
   register_message(get_user_msgid("ShowMenu"), "message_ShowMenu");
   register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu");
   tjm_join_team = register_cvar("tjm_join_team", "2");
   tjm_switch_team = register_cvar("tjm_switch_team", "0");
   tjm_class[TEAM_T] = register_cvar("tjm_class_t", "5");
   tjm_class[TEAM_CT] = register_cvar("tjm_class_ct", "5");
   tjm_block_change = register_cvar("tjm_block_change", "1");
}

public plugin_cfg()
{
   set_cvar_num("mp_limitteams", 32);
   set_cvar_num("sv_restart", 1);
}

public client_disconnect(id)
{
   remove_task(id);
}

public event_TeamInfo()
{
   new id = read_data(1);
   new sTeam[32], iTeam;
   read_data(2, sTeam, sizeof(sTeam) - 1);
   for(new i = 0; i < MAX_TEAMS; i++)
   {
      if(g_cTeamChars[i] == sTeam[0])
      {
         iTeam = i;
         break;
      }
   }
   
   if(g_iTeam[id] != iTeam)
   {
      g_iPlayers[g_iTeam[id]]--;
      g_iTeam[id] = iTeam;
      g_iPlayers[iTeam]++;
   }
}

public message_ShowMenu(iMsgid, iDest, id)
{
   static sMenuCode[iMaxLen];
   get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
   if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC))
   {
      if(should_autojoin(id))
      {
         set_autojoin_task(id, iMsgid);
         return PLUGIN_HANDLED;
      }
   }
   else if(equal(sMenuCode, INGAME_JOIN_MSG) || equal(sMenuCode, INGAME_JOIN_MSG_SPEC))
   {
      if(should_autoswitch(id))
      {
         set_autoswitch_task(id, iMsgid);
         return PLUGIN_HANDLED;
      }
      else if(get_pcvar_num(tjm_block_change))
      {
         return PLUGIN_HANDLED;
      }
   }
   return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id)
{
   if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
   {
      return PLUGIN_CONTINUE;
   }
   
   if(should_autojoin(id))
   {
      set_autojoin_task(id, iMsgid);
      return PLUGIN_HANDLED;
   }
   else if(should_autoswitch(id))
   {
      set_autoswitch_task(id, iMsgid);
      return PLUGIN_HANDLED;
   }
   else if((TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && get_pcvar_num(tjm_block_change))
   {
      return PLUGIN_HANDLED;
   }
   return PLUGIN_CONTINUE;
}

public task_Autojoin(iParam[], id)
{
   new iTeam = get_new_team(get_pcvar_num(tjm_join_team));
   if(iTeam != -1)
   {
      handle_join(id, iParam[0], iTeam);
   }
}

public task_Autoswitch(iParam[], id)
{
   new iTeam = get_switch_team(id);
   if(iTeam != -1)
   {
      handle_join(id, iParam[0], iTeam);
   }
}

stock handle_join(id, iMsgid, iTeam)
{
   new iMsgBlock = get_msg_block(iMsgid);
   set_msg_block(iMsgid, BLOCK_SET);
   
   engclient_cmd(id, "jointeam", g_sTeamNums[iTeam]);
   
   new iClass = get_team_class(iTeam);
   if(1 <= iClass <= 4)
   {
      engclient_cmd(id, "joinclass", g_sClassNums[iClass - 1]);
   }
   set_msg_block(iMsgid, iMsgBlock);
}

stock get_new_team(iCvar)
{
   switch(iCvar)
   {
      case 1:
      {
         return TEAM_T;
      }
      case 2:
      {
         return TEAM_CT;
      }
      case 3:
      {
         return TEAM_SPEC;
      }
      case 4:
      {
         new iTCount = g_iPlayers[TEAM_T];
         new iCTCount = g_iPlayers[TEAM_CT];
         if(iTCount < iCTCount)
         {
            return TEAM_T;
         }
         else if(iTCount > iCTCount)
         {
            return TEAM_CT;
         }
         else
         {
            return random_num(TEAM_T, TEAM_CT);
         }
      }
   }
   return -1;
}

stock get_switch_team(id)
{
   new iTeam;
   
   new iTCount = g_iPlayers[TEAM_T];
   new iCTCount = g_iPlayers[TEAM_CT];
   switch(g_iTeam[id])
   {
      case TEAM_T: iTCount--;
      case TEAM_CT: iCTCount--;
   }
   if(iTCount < iCTCount)
   {
      iTeam = TEAM_T;
   }
   else if(iTCount > iCTCount)
   {
      iTeam = TEAM_CT;
   }
   else
   {
      iTeam = random_num(TEAM_T, TEAM_CT);
   }
   
   if(iTeam != g_iTeam[id])
   {
      return iTeam;
   }
   
   return -1;
}

stock get_team_class(iTeam)
{
   new iClass;
   if(TEAM_NONE < iTeam < TEAM_SPEC)
   {
      iClass = get_pcvar_num(tjm_class[iTeam]);
      if(iClass < 1 || iClass > 4)
      {
         iClass = random_num(1, 4);
      }
   }
   return iClass;
}

stock set_autojoin_task(id, iMsgid)
{
   new iParam[2];
   iParam[0] = iMsgid;
   set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock set_autoswitch_task(id, iMsgid)
{
   new iParam[2];
   iParam[0] = iMsgid;
   set_task(0.1, "task_Autoswitch", id, iParam, sizeof(iParam));
}

stock bool:should_autojoin(id)
{
   return ((5 > get_pcvar_num(tjm_join_team) > 0) && is_user_connected(id) && !(TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}

stock bool:should_autoswitch(id)
{
   return (get_pcvar_num(tjm_switch_team) && is_user_connected(id) && (TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}
Su Deathrun Manager peaks kellegi automaatselt T-ks tõstma.
Ise ma teeksin nii, et eemaldaksin pluginaga üleliigsed info_player_deathmatch entityd (T spawnid, jätaks ainult ühe). See nõuab aga pisut rohkem vaeva.

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid reklaamidest vabaneda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele