Запрет автовыбора команды

Тема в разделе "Программирование / Скриптинг", создана пользователем zloykif, 29 янв 2013.

  1. zloykif

    zloykif

    Сообщения:
    137
    Симпатии:
    24
    Подходящего плагина я не нашел, по этому хочу переделать какой нибудь похожий.
    Вот к примеру, можно из этого убрать лишнее и добавить нужное. А нужно мне, что бы при нажатии на автовыбор игрока кидало в спеки, как бы это сделать? Как определить что была нажата кнопка автовыбора?
    0 == unassigned, 1 == Spectator, 2 == T and 3 == CT

    Код:
    #include <sourcemod>
    #include <sdktools>
    #include <cstrike>
    #pragma semicolon 1
    #define PLUGIN_VERSION "2.0"
    new Float:RecentChange[MAXPLAYERS+1];
    new Handle:auto_team = INVALID_HANDLE;
    public Plugin:myinfo =
    {
    	name = "Auto Assign",
    	author = "Mitchell, translator 23neon23",
    	description = "Makes it so you cant choose your team.",
    	version = PLUGIN_VERSION,
    	url = "http://prem-serv.ru/"
    }
    public OnPluginStart( )
    {
    	CreateConVar("sm_auto_assign", PLUGIN_VERSION, "Autoassign", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD);
    	auto_team =	CreateConVar( "sm_autoassign_team", "3", "0 - Disables, 1 - Any Team, 2 - T, 3 - CT" );
    	RegConsoleCmd("joingame", JOINgAME);
    	RegConsoleCmd("jointeam", JOINgAME);
    }
    public Action:JOINgAME(client, args)
    {
    	if(!IsFakeClient(client) && ((GetGameTime() - RecentChange[client]) >= 15.0))
    	{
    		new cTeam = GetConVarInt(auto_team);
    		switch (cTeam)
    		{
    			case 0:
    				return Plugin_Continue;
    			case 1:
    			{
    				if (GetTeamClientCount(CS_TEAM_T) > GetTeamClientCount(CS_TEAM_CT)) {
    					CS_SwitchTeam(client, CS_TEAM_CT);
    					CS_RespawnPlayer(client);
    					RecentChange[client] = GetGameTime();
    					return Plugin_Handled;
    				}
    				if (GetTeamClientCount(CS_TEAM_CT) > GetTeamClientCount(CS_TEAM_T)) {
    					CS_SwitchTeam(client, CS_TEAM_T);
    					CS_RespawnPlayer(client);
    					RecentChange[client] = GetGameTime();
    					return Plugin_Handled;
    				}
    				if (GetTeamClientCount(CS_TEAM_CT) == GetTeamClientCount(CS_TEAM_T)) {
    					CS_SwitchTeam(client, GetRandomInt(2, 3));
    					CS_RespawnPlayer(client);
    					RecentChange[client] = GetGameTime();
    					return Plugin_Handled;
    				}
    			}
    			case 2,3:
    			{
    				CS_SwitchTeam(client, cTeam);
    				CS_RespawnPlayer(client);
    				RecentChange[client] = GetGameTime();
    				return Plugin_Handled;
    			}
    		}
    	}
    	else {
    		PrintToChat(client, "\x03[\x05Auto-Assign\x03] \x01Вы должны подождать до смены команды.");
    		return Plugin_Handled;
    	}
    	return Plugin_Continue;
    }
    public OnClientPutInServer(client)
    {
    	RecentChange[client] = GetGameTime();
    }
     
  2. zloykif

    zloykif

    Сообщения:
    137
    Симпатии:
    24
    Спасибыыы ^^
    пойду проверять
     
  3. zloykif

    zloykif

    Сообщения:
    137
    Симпатии:
    24
    Да, сам по себе плагин работает как надо вроде бы, но если параллельно с ним использовать deathrun плагин от тушканчика (на ес питоне который) то автовыбор работает как обычно (кидает за КТ и предлагает выбрать скин) ни звука ни сообщения в чат... Печалька, а от дезрана этого исходников нет вроде бы.
    ПС: а нет, модуль рестрикта команды у дезрана открыт, пойду править ^^ еще раз спасибо
    upd: там был прехук выбора команды в дезране, убрал его и всё ок

    Добавлено через 11 часов 59 минут
    Всё хорошо, разве что для удобства можно добавить что-бы после отказа, диалог выбора команды открывался автоматически %)
     
    Последнее редактирование: 30 янв 2013