HLTV - Бот не в спектаторах

dimahail

Участник
Сообщения
101
Реакции
5
Включил Hltv бота.
После того как поставил плагин -
[CS:GO] Block Team for MG course maps
Бот стал появляться в команде КТ .
Как фиксить ?
upload_2018-2-11_23-17-26.png
 

Tonki_Ton

Script kiddie
Сообщения
614
Реакции
375
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define VERSION "1.0"

new GoodTeam = -1;
new BadTeam = -1;

public Plugin:myinfo =
{
    name = "Block Team for course maps",
    author = "Graffiti",
    description = "",
    version = VERSION,
    url = ""
};


public OnPluginStart()
{
    CreateConVar("sm_block_team_version", VERSION, "Block Team for course maps", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
  
    HookEvent("player_team",Event_PlayerTeamSwitch,EventHookMode_Pre);
    HookEvent("jointeam_failed", Event_JoinTeamFailed, EventHookMode_Pre);
    AddCommandListener(Command_JoinTeam, "jointeam");
}

public OnConfigsExecuted()
{
    Parse_MapConfig();
}

public Action:Event_PlayerTeamSwitch(Handle:event, const String:name[], bool:dontBroadcast)
{
    new NewTeam = GetEventInt(event, "team");
    new OldTeam = GetEventInt(event, "oldteam");
    new clientID = GetClientOfUserId(GetEventInt(event, "userid"));
    if (GoodTeam != -1)
    {
       if ((OldTeam == CS_TEAM_NONE || OldTeam == CS_TEAM_SPECTATOR) && NewTeam == BadTeam)
       {
            CreateTimer(0.0, Timer_SwapFirstJoin, clientID);
            return Plugin_Handled;
       }
       else if (OldTeam == GoodTeam && NewTeam == BadTeam)
       {
            return Plugin_Handled;
       }
    }
    return Plugin_Continue;
}

public Action:Event_JoinTeamFailed(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (GoodTeam != -1)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if(!client || !IsClientInGame(client))
            return Plugin_Continue;

        ChangeClientTeam(client, GoodTeam);
        return Plugin_Handled;
    }

    return Plugin_Continue;
  
}

public Action:Command_JoinTeam(client, const String:command[], args)
{
    if(!client || !IsClientInGame(client) || IsFakeClient(client) || !IsClientSourceTV(client))
    {
        return Plugin_Continue;
    }
    if (GoodTeam != -1)
    {
        // Get the target team
        decl String:teamString[3];
        GetCmdArg(1, teamString, sizeof(teamString));
        new Target_Team = StringToInt(teamString);
        // Get the players current team
        new Current_Team = GetClientTeam(client);
      
        if (Current_Team == Target_Team)
        {
            return Plugin_Handled;
        }
      
        if (Current_Team == BadTeam && Target_Team == GoodTeam)
        {
            ForcePlayerSuicide(client);
            return Plugin_Continue;
        }
      
        if (Current_Team == GoodTeam && Target_Team == BadTeam)
        {
            return Plugin_Handled;
        }
      
        if (!((Target_Team == GoodTeam) || (Target_Team == BadTeam) || (Target_Team == CS_TEAM_SPECTATOR)))
        { 
            CS_SwitchTeam(client, GoodTeam);
            ForcePlayerSuicide(client);
            return Plugin_Handled; 
        }
    }
  
    return Plugin_Continue;

}

public Action:Timer_SwapFirstJoin(Handle:timer, any:client)
{
    if (client)
    {
        CS_SwitchTeam(client, GoodTeam);
        ForcePlayerSuicide(client);
    }
    return Plugin_Stop;
}


Parse_MapConfig()
{
    new Handle:hConfig = CreateKeyValues("BlockTeam_MapConfig");
    new String:sConfig[PLATFORM_MAX_PATH];
    new String:sMapName[128];
    GetCurrentMap(sMapName, sizeof(sMapName));

    BuildPath(Path_SM, sConfig, sizeof(sConfig), "configs/BlockTeam_MapConfig.cfg");

    if (FileToKeyValues(hConfig, sConfig))
    {
        if (KvJumpToKey(hConfig, sMapName))
        {
            GoodTeam = KvGetNum(hConfig, "GoodTeam", -1);
            if (GoodTeam == 2) BadTeam=3;
            else if (GoodTeam == 3) BadTeam=2;
            else BadTeam = -1;
        }
        else
        {
            GoodTeam = -1;
        }
    }
    else
    {
        GoodTeam = -1;
    }
  
    CloseHandle(hConfig);
}
 
Последнее редактирование:

dimahail

Участник
Сообщения
101
Реакции
5
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define VERSION "1.0"

new GoodTeam = -1;
new BadTeam = -1;

public Plugin:myinfo =
{
    name = "Block Team for course maps",
    author = "Graffiti",
    description = "",
    version = VERSION,
    url = ""
};


public OnPluginStart()
{
    CreateConVar("sm_block_team_version", VERSION, "Block Team for course maps", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
  
    HookEvent("player_team",Event_PlayerTeamSwitch,EventHookMode_Pre);
    HookEvent("jointeam_failed", Event_JoinTeamFailed, EventHookMode_Pre);
    AddCommandListener(Command_JoinTeam, "jointeam");
}

public OnConfigsExecuted()
{
    Parse_MapConfig();
}

public Action:Event_PlayerTeamSwitch(Handle:event, const String:name[], bool:dontBroadcast)
{
    new NewTeam = GetEventInt(event, "team");
    new OldTeam = GetEventInt(event, "oldteam");
    new clientID = GetClientOfUserId(GetEventInt(event, "userid"));
    if (GoodTeam != -1)
    {
       if ((OldTeam == CS_TEAM_NONE || OldTeam == CS_TEAM_SPECTATOR) && NewTeam == BadTeam)
       {
            CreateTimer(0.0, Timer_SwapFirstJoin, clientID);
            return Plugin_Handled;
       }
       else if (OldTeam == GoodTeam && NewTeam == BadTeam)
       {
            return Plugin_Handled;
       }
    }
    return Plugin_Continue;
}

public Action:Event_JoinTeamFailed(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (GoodTeam != -1)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if(!client || !IsClientInGame(client))
            return Plugin_Continue;

        ChangeClientTeam(client, GoodTeam);
        return Plugin_Handled;
    }

    return Plugin_Continue;
  
}

public Action:Command_JoinTeam(client, const String:command[], args)
{
    if(!client || !IsClientInGame(client) || IsFakeClient(client) || IsClientSourceTV(client))
    {
        return Plugin_Continue;
    }
    if (GoodTeam != -1)
    {
        // Get the target team
        decl String:teamString[3];
        GetCmdArg(1, teamString, sizeof(teamString));
        new Target_Team = StringToInt(teamString);
        // Get the players current team
        new Current_Team = GetClientTeam(client);
      
        if (Current_Team == Target_Team)
        {
            return Plugin_Handled;
        }
      
        if (Current_Team == BadTeam && Target_Team == GoodTeam)
        {
            ForcePlayerSuicide(client);
            return Plugin_Continue;
        }
      
        if (Current_Team == GoodTeam && Target_Team == BadTeam)
        {
            return Plugin_Handled;
        }
      
        if (!((Target_Team == GoodTeam) || (Target_Team == BadTeam) || (Target_Team == CS_TEAM_SPECTATOR)))
        { 
            CS_SwitchTeam(client, GoodTeam);
            ForcePlayerSuicide(client);
            return Plugin_Handled; 
        }
    }
  
    return Plugin_Continue;

}

public Action:Timer_SwapFirstJoin(Handle:timer, any:client)
{
    if (client)
    {
        CS_SwitchTeam(client, GoodTeam);
        ForcePlayerSuicide(client);
    }
    return Plugin_Stop;
}


Parse_MapConfig()
{
    new Handle:hConfig = CreateKeyValues("BlockTeam_MapConfig");
    new String:sConfig[PLATFORM_MAX_PATH];
    new String:sMapName[128];
    GetCurrentMap(sMapName, sizeof(sMapName));

    BuildPath(Path_SM, sConfig, sizeof(sConfig), "configs/BlockTeam_MapConfig.cfg");

    if (FileToKeyValues(hConfig, sConfig))
    {
        if (KvJumpToKey(hConfig, sMapName))
        {
            GoodTeam = KvGetNum(hConfig, "GoodTeam", -1);
            if (GoodTeam == 2) BadTeam=3;
            else if (GoodTeam == 3) BadTeam=2;
            else BadTeam = -1;
        }
        else
        {
            GoodTeam = -1;
        }
    }
    else
    {
        GoodTeam = -1;
    }
  
    CloseHandle(hConfig);
}
При компилировании 1 Warning:
addons\sourcemod\scripting\blockteam.sp(24) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
585
Это никак не повлияет на работу плагина. Но если не хотите чтобы этот варнинг был - открываете код, находите этот FCVAR_PLUGIN и заменяете его на нолик. Самую обычную цифру ноль.
 

dimahail

Участник
Сообщения
101
Реакции
5
Все-ровно бот находится в команде кт .
--- Добавлено позже ---
Он появляется после того как я зайду за кт , до того как никого нету в командах , то и бота тоже нету .
--- Добавлено позже ---
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define VERSION "1.0"

new GoodTeam = -1;
new BadTeam = -1;

public Plugin:myinfo =
{
    name = "Block Team for course maps",
    author = "Graffiti",
    description = "",
    version = VERSION,
    url = ""
};


public OnPluginStart()
{
    CreateConVar("sm_block_team_version", VERSION, "Block Team for course maps", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
  
    HookEvent("player_team",Event_PlayerTeamSwitch,EventHookMode_Pre);
    HookEvent("jointeam_failed", Event_JoinTeamFailed, EventHookMode_Pre);
    AddCommandListener(Command_JoinTeam, "jointeam");
}

public OnConfigsExecuted()
{
    Parse_MapConfig();
}

public Action:Event_PlayerTeamSwitch(Handle:event, const String:name[], bool:dontBroadcast)
{
    new NewTeam = GetEventInt(event, "team");
    new OldTeam = GetEventInt(event, "oldteam");
    new clientID = GetClientOfUserId(GetEventInt(event, "userid"));
    if (GoodTeam != -1)
    {
       if ((OldTeam == CS_TEAM_NONE || OldTeam == CS_TEAM_SPECTATOR) && NewTeam == BadTeam)
       {
            CreateTimer(0.0, Timer_SwapFirstJoin, clientID);
            return Plugin_Handled;
       }
       else if (OldTeam == GoodTeam && NewTeam == BadTeam)
       {
            return Plugin_Handled;
       }
    }
    return Plugin_Continue;
}

public Action:Event_JoinTeamFailed(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (GoodTeam != -1)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if(!client || !IsClientInGame(client))
            return Plugin_Continue;

        ChangeClientTeam(client, GoodTeam);
        return Plugin_Handled;
    }

    return Plugin_Continue;
  
}

public Action:Command_JoinTeam(client, const String:command[], args)
{
    if(!client || !IsClientInGame(client) || IsFakeClient(client) || IsClientSourceTV(client))
    {
        return Plugin_Continue;
    }
    if (GoodTeam != -1)
    {
        // Get the target team
        decl String:teamString[3];
        GetCmdArg(1, teamString, sizeof(teamString));
        new Target_Team = StringToInt(teamString);
        // Get the players current team
        new Current_Team = GetClientTeam(client);
      
        if (Current_Team == Target_Team)
        {
            return Plugin_Handled;
        }
      
        if (Current_Team == BadTeam && Target_Team == GoodTeam)
        {
            ForcePlayerSuicide(client);
            return Plugin_Continue;
        }
      
        if (Current_Team == GoodTeam && Target_Team == BadTeam)
        {
            return Plugin_Handled;
        }
      
        if (!((Target_Team == GoodTeam) || (Target_Team == BadTeam) || (Target_Team == CS_TEAM_SPECTATOR)))
        { 
            CS_SwitchTeam(client, GoodTeam);
            ForcePlayerSuicide(client);
            return Plugin_Handled; 
        }
    }
  
    return Plugin_Continue;

}

public Action:Timer_SwapFirstJoin(Handle:timer, any:client)
{
    if (client)
    {
        CS_SwitchTeam(client, GoodTeam);
        ForcePlayerSuicide(client);
    }
    return Plugin_Stop;
}


Parse_MapConfig()
{
    new Handle:hConfig = CreateKeyValues("BlockTeam_MapConfig");
    new String:sConfig[PLATFORM_MAX_PATH];
    new String:sMapName[128];
    GetCurrentMap(sMapName, sizeof(sMapName));

    BuildPath(Path_SM, sConfig, sizeof(sConfig), "configs/BlockTeam_MapConfig.cfg");

    if (FileToKeyValues(hConfig, sConfig))
    {
        if (KvJumpToKey(hConfig, sMapName))
        {
            GoodTeam = KvGetNum(hConfig, "GoodTeam", -1);
            if (GoodTeam == 2) BadTeam=3;
            else if (GoodTeam == 3) BadTeam=2;
            else BadTeam = -1;
        }
        else
        {
            GoodTeam = -1;
        }
    }
    else
    {
        GoodTeam = -1;
    }
  
    CloseHandle(hConfig);
}
Все так-же осталось .
 
Последнее редактирование:

Tonki_Ton

Script kiddie
Сообщения
614
Реакции
375
Все-ровно бот находится в команде кт .
--- Добавлено позже ---
Он появляется после того как я зайду за кт , до того как никого нету в командах , то и бота тоже нету .
--- Добавлено позже ---

Все так-же осталось .
поправил, проверь
 

dimahail

Участник
Сообщения
101
Реакции
5
поправил, проверь
Не робит , все так-же , спасибо за оказанную помощь .
--- Добавлено позже ---
Куда рациональней было убрать точки спавна у одной из сторон, а так:
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define VERSION "1.0"

new GoodTeam = -1;
new BadTeam = -1;

public Plugin:myinfo =
{
    name = "Block Team for course maps",
    author = "Graffiti",
    description = "",
    version = VERSION,
    url = ""
};


public OnPluginStart()
{
    CreateConVar("sm_block_team_version", VERSION, "Block Team for course maps", FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY);
 
    HookEvent("player_team",Event_PlayerTeamSwitch,EventHookMode_Pre);
    HookEvent("jointeam_failed", Event_JoinTeamFailed, EventHookMode_Pre);
    AddCommandListener(Command_JoinTeam, "jointeam");
}

public OnConfigsExecuted()
{
    Parse_MapConfig();
}

public Action:Event_PlayerTeamSwitch(Handle:event, const String:name[], bool:dontBroadcast)
{
    new NewTeam = GetEventInt(event, "team");
    new OldTeam = GetEventInt(event, "oldteam");
    new clientID = GetClientOfUserId(GetEventInt(event, "userid"));
    if (GoodTeam != -1)
    {
       if ((OldTeam == CS_TEAM_NONE || OldTeam == CS_TEAM_SPECTATOR) && NewTeam == BadTeam)
       {
            CreateTimer(0.0, Timer_SwapFirstJoin, clientID);
            return Plugin_Handled;
       }
       else if (OldTeam == GoodTeam && NewTeam == BadTeam)
       {
            return Plugin_Handled;
       }
    }
    return Plugin_Continue;
}

public Action:Event_JoinTeamFailed(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (GoodTeam != -1)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if(!IsValidClient(client)) return Plugin_Continue;

        ChangeClientTeam(client, GoodTeam);
        return Plugin_Handled;
    }

    return Plugin_Continue;
 
}

public Action:Command_JoinTeam(client, const String:command[], args)
{
    if(!IsValidClient(client))
    {
        return Plugin_Continue;
    }
    if (GoodTeam != -1)
    {
        // Get the target team
        decl String:teamString[3];
        GetCmdArg(1, teamString, sizeof(teamString));
        new Target_Team = StringToInt(teamString);
        // Get the players current team
        new Current_Team = GetClientTeam(client);
    
        if (Current_Team == Target_Team)
        {
            return Plugin_Handled;
        }
    
        if (Current_Team == BadTeam && Target_Team == GoodTeam)
        {
            ForcePlayerSuicide(client);
            return Plugin_Continue;
        }
    
        if (Current_Team == GoodTeam && Target_Team == BadTeam)
        {
            return Plugin_Handled;
        }
    
        if (!((Target_Team == GoodTeam) || (Target_Team == BadTeam) || (Target_Team == CS_TEAM_SPECTATOR)))
        {
            CS_SwitchTeam(client, GoodTeam);
            ForcePlayerSuicide(client);
            return Plugin_Handled;
        }
    }
 
    return Plugin_Continue;

}

public Action:Timer_SwapFirstJoin(Handle:timer, any:client)
{
    if (IsValidClient(client))
    {
        CS_SwitchTeam(client, GoodTeam);
        ForcePlayerSuicide(client);
    }
    return Plugin_Stop;
}


Parse_MapConfig()
{
    new Handle:hConfig = CreateKeyValues("BlockTeam_MapConfig");
    new String:sConfig[PLATFORM_MAX_PATH];
    new String:sMapName[128];
    GetCurrentMap(sMapName, sizeof(sMapName));

    BuildPath(Path_SM, sConfig, sizeof(sConfig), "configs/BlockTeam_MapConfig.cfg");

    if (FileToKeyValues(hConfig, sConfig))
    {
        if (KvJumpToKey(hConfig, sMapName))
        {
            GoodTeam = KvGetNum(hConfig, "GoodTeam", -1);
            if (GoodTeam == 2) BadTeam=3;
            else if (GoodTeam == 3) BadTeam=2;
            else BadTeam = -1;
        }
        else
        {
            GoodTeam = -1;
        }
    }
    else
    {
        GoodTeam = -1;
    }
 
    CloseHandle(hConfig);
}

bool IsValidClient(int client)
{
    if(client > 0 && client <= MaxClients)
    {
        if(IsClientInGame(client))
        {
            if(!IsFakeClient(client) && !IsClientSourceTV(client))
            {
                return true;
            }
            return false;
        }
        return false;
    }
    return false;
}
Спасибо , все работает .
А как убрать правильно точки спавна ?
 

dimahail

Участник
Сообщения
101
Реакции
5
Окей удалил спавны для Террористов , теперь за них нельзя зайти (как я и хотел ) , Но как убрать "Разрешено только 1 изменение команды" ?
Просто если перейти за кт , а потом в наблюдатели , то потом ты больше не можешь зайти в команду .
 

noBap

Участник
Сообщения
395
Реакции
169
Окей удалил спавны для Террористов , теперь за них нельзя зайти (как я и хотел ) , Но как убрать "Разрешено только 1 изменение команды" ?
Просто если перейти за кт , а потом в наблюдатели , то потом ты больше не можешь зайти в команду .
[ANY] TeamChange Unlimited (1.2.2) - AlliedModders
 
Сверху Снизу