[CS:GO] Block Team for MG course maps

Denis Fypfyvr

Участник
Сообщения
18
Реакции
1
Настроить плагин/он не работает


Этот плагин блокирует присоединиться к команде плохой, для которых игроки не должны играть на курсовой карте.

Поддерживаемые игры:
Counter-Strike: Global Offensive
Установка:
blockteam.smx в / аддоны / SourceMod / плагины /
BlockTeam_MapConfig.cfg к / аддоны / SourceMod / конфиги /
Настройте настройки в файле CFG


Конфигурация:

Написать Конечно только карты в конфигурации, игроки смогут играть за любую команду в других картах.
GoodTeam - игроки будут играть только за эту команду на этой карте.​

PHP:
//Config
// 2 - T , 3 - CT

"BlockTeam_MapConfig"
{
"mg_metal_course_2"
{
"GoodTeam" "3"
}

"mg_your_map"
{
"GoodTeam" "2"
}
}


Переменные (cvars):

sm_block_team_version 1.0

Требования:
SourceMod 1.6.0+

Список изменений:

05.04.2015 (В1.0)

* Первый выпуск.

Посмотреть вложение blockteam.sp

Посмотреть вложение BlockTeam_MapConfig.cfg
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Ни чего, не понял. Описание убогое, как будто писал, 10 летний ребенок.
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
По мне так бесполезный плагин... на course картах, и так запрещено заходить за ту команду за коротую нет спавн точек...
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
А на других картах это каких? PVP и MultiGames? Там стоят спавны и На КТ и на Т, там это зачем...
 
Сообщения
161
Реакции
12
Парни помогите , как настроить карту чтоб играли не только два игрока а заходили все скольстоит слотов.
 

pashek71

Участник
Сообщения
232
Реакции
43
DexKekcuk #13, на некоторых картах(где должна быть только одна команда) можно зайти за обе. Но мне кажется, что лучшее решение для этой проблемы stripper
 
Сообщения
161
Реакции
12
DexKekcuk #13, на некоторых картах(где должна быть только одна команда) можно зайти за обе. Но мне кажется, что лучшее решение для этой проблемы stripper

а можно подробнее, плииз, а то не все понятно, как настроить сервер чтоб играли все , на сколько рассчитан по слотам , и если плагин есть то ссылку дайте плиииииззззз....
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
#pragma semicolon 1

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

#pragma newdecls required

#define VERSION "1.0newstyle"

int GoodTeam = -1;
int BadTeam = -1;

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


public void 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 void OnConfigsExecuted()
{
	Parse_MapConfig();
}

public Action Event_PlayerTeamSwitch(Event event, const char[] name, bool dontBroadcast)
{
	int NewTeam = event.GetInt("team");
	int OldTeam = event.GetInt("oldteam");
	int clientID = GetClientOfUserId(event.GetInt("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(Event event, const char[] name, bool dontBroadcast)
{
	if (GoodTeam != -1) 
	{
		int client = GetClientOfUserId(event.GetInt("userid"));
		if(!client || !IsClientInGame(client))
			return Plugin_Continue;

		ChangeClientTeam(client, GoodTeam);
		return Plugin_Handled;
	}

	return Plugin_Continue;
	
}

public Action Command_JoinTeam(int client, const char[] command, int args)
{
	if(!client || !IsClientInGame(client) || IsFakeClient(client))
	{
		return Plugin_Continue;
	}
	if (GoodTeam != -1) 
	{
		// Get the target team
		char teamString[3];
		GetCmdArg(1, teamString, sizeof(teamString));
		int Target_Team = StringToInt(teamString);
		// Get the players current team
		int 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;
}

void Parse_MapConfig()
{
	KeyValues hConfig = new KeyValues("BlockTeam_MapConfig");
	char sConfig[PLATFORM_MAX_PATH];
	char sMapName[128];
	GetCurrentMap(sMapName, sizeof(sMapName));

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

	if (hConfig.ImportFromFile(sConfig))
	{
		if (hConfig.JumpToKey(sMapName))
		{
			GoodTeam = hConfig.GetNum("GoodTeam", -1);
			if (GoodTeam == 2) BadTeam=3;
			else if (GoodTeam == 3) BadTeam=2;
			else BadTeam = -1;
		}
		else
		{
			GoodTeam = -1;
		}
	}
	else
	{
		GoodTeam = -1;
	}
	
	delete hConfig;
}
 
Сверху Снизу