Иконка ресурса

BuyZone Protector 2.2.2

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #1
BuyZone Protector

Описание:
Плагин защищает игроков на их закупочной зоне определенный промежуток времени от начала раунда. Как только игрок покидает зону, защита снимается. Если он вернется, то, если время защиты не истекло, защита будет возвращена.
Так же есть возможность установить вокруг закупочных зон линии, обозначающие область защиты (подробнее об этом в консольных переменных плагина). По истечению времени защиты они пропадают.

73ce2429b971.jpg
cf048d0af7da.jpg

65e0e8caa660.jpg
392a6a7bb73a.jpg

Требования:

Поддерживаются игры:
  • CS: Source
  • CS: Global Offensive

Установка:
Распаковать содержимое архива в папку addons

Переменные:
C-подобный:
[I]sm_bzp_prottime[/I] - как долго в секундах будет длится защита зон покупок. По умолчанию: 20.0.
[I]sm_bzp_drawzone[/I] - рисовать (1) или нет (0) зону защиты. По умолчанию: 1.
[I]sm_bzp_ctlinecolor[/I] - цвет зоны КТ. По умолчанию: 0 0 255 255.
[I]sm_bzp_tlinecolor[/I] - цвет зоны Т. По умолчанию: 255 0 0 255.
[I]sm_bzp_restrictshoot[/I] - запрет (1) или нет (0) стрельбы, будучи защищенным. По умолчанию: 1.
[I]sm_bzp_changecolor[/I] - менять (1) или нет (0) цвет игрока в своей зоне защиты. По умолчанию: 1.
[I]sm_bzp_changecolorct[/I] - цвет защищенного КТ. По умолчанию: 0 0 255 125.
[I]sm_bzp_changecolort[/I] - цвет защищенного Т. По умолчанию: 255 0 0 125.
[I]sm_bzp_notice[/I] - выводить (1) или нет (0) сообщения о входе или выходе из зоны защиты. По умолчанию: 1.

C-подобный:
(17-07-2013) Версия 1.0 - появление плагина. Возможна только защита зон.
(16-11-2013) Версия 2.0 - плагин переписан, добавлена возможность обозначения зон закупок.
(17-11-2013) Версия 2.1 - добавлена возможность вывода сообщений игрокам в чат, изменения цвета игроков, запрета стрельбы из зон защиты.
 
Последнее редактирование модератором:

★Сириус★

Участник
Сообщения
743
Реакции
197
а можно ли сделать, чтобы в нужных местах самому рисовать эти зоны бессмертия?
хочу на серф поставить этот плагин, но там же вроде нет зон закупок
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #3
Обновил плагин до версии 2.1:
Добавлена возможность вывода сообщений игрокам в чат, изменения цвета игроков, запрета стрельбы из зон защиты.

Новые консольные переменные:
sm_bzp_restrictshoot - запрет (1) или нет (0) стрельбы, будучи защищенным. По умолчанию: 1.
sm_bzp_changecolor - менять (1) или нет (0) цвет игрока в своей зоне защиты. По умолчанию: 1.
sm_bzp_changecolorct - цвет защищенного КТ. По умолчанию: 0 0 255 125.
sm_bzp_changecolort - цвет защищенного Т. По умолчанию: 255 0 0 125.
sm_bzp_notice - выводить (1) или нет (0) сообщения о входе или выходе из зоны защиты. По умолчанию: 1.

Поместил скриншоты под спойлер, и добавил еще парочку.

// ===========================================================================
★Сириус★, думаю, для твоего запроса нужно делать отдельный плагин. Посмотрю позже, если будет время.
 
Сообщения
2,587
Реакции
1,344
Где то на АМ есть вроде похожий плагин, там только зоны можно самому ставить.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
Думаю, можно юзать совместно с этим
 
Последнее редактирование модератором:

marlboro

Участник
Сообщения
146
Реакции
36
плагин работает не корректно, после 30 секунд выделенная зона покупки исчезает, а защита досехпор работает! Как это исправить?
C-подобный:
// This file was auto-generated by SourceMod (v1.5.0-dev+3871)

// ConVars for plugin "buyzone_protector.smx"





// ENG: change (0) or not (1) player color in their zone

// RUS: изменять (0) или нет (1) цвет игроков в своих зонах

// -

// Default: "1"

sm_bzp_changecolor "1"



// ENG: color of CT in their zone while protect lasts

// RUS: цвет КТ в своей зоне, пока защита активна

// -

// Default: "0 0 255 125"

sm_bzp_changecolorct "0 0 255 125"



// ENG: color of T in their zone while protect lasts

// RUS: цвет Т в своей зоне, пока защита активна

// -

// Default: "255 0 0 125"

sm_bzp_changecolort "255 0 0 125"



// ENG: color of lines ct zone

// RUS: цвет зоны КТ

// -

// Default: "0 0 255 255"

sm_bzp_ctlinecolor "0 0 255 255"



// ENG: draw (1) or not (0) zone of protection

// RUS: рисовать (1) или нет (0) зону защиты

// -

// Default: "1"

sm_bzp_drawzone "1"



// ENG: allow (0) or not (1) sending messages about entering/leaving zones

// RUS: разрешить (0) или нет (1) плагину сообщать игрокам о входе/покидании зоны

// -

// Default: "1"

sm_bzp_notice "1"



// ENG: how long in seconds will lasts protection of buyzone

// RUS: как долго в секундах будет длится защита зон покупок

// -

// Default: "20.0"

sm_bzp_prottime "30.0"



// ENG: allow (0) or not (1) shooting from their zone or not

// RUS: разрешить (0) или нет (1) стрелять из своих зон или нет

// -

// Default: "1"

sm_bzp_restrictshoot "1"



// ENG: color of lines t zone

// RUS: цвет зоны Т

// -

// Default: "255 0 0 255"

sm_bzp_tlinecolor "255 0 0 255"
[SM] Listing 41 plugins:
01 "Basic Chat" (1.5.1) by AlliedModders LLC
02 "Basic Commands" (1.5.1) by AlliedModders LLC
03 "Admin Help" (1.5.1) by AlliedModders LLC
04 "Resetscore" (1.1) by tuty
05 "Radio Spam Block" (1.0.0) by exvel
06 "No Fall Damage" (0.0.1.9) by alexip121093
07 "Advertisements" (0.6.2) by Tsunami, Otstrel.ru Team
08 "Anti-Flood" (1.5.1) by AlliedModders LLC
09 "sm_deathbeam" (PLUGIN_VERSION) by Meng
10 "Player Commands" (1.5.1) by AlliedModders LLC
11 "RankMe" (2.8.3) by lok1
12 "MapChooser" (1.5.1) by AlliedModders LLC
13 "Basic Info Triggers" (1.5.1) by AlliedModders LLC
14 "Basic Votes" (1.5.1) by AlliedModders LLC
15 "Show Damage" (1.0.7) by exvel
16 "Weapon Restrict" (3.1.4) by Dr!fter
17 "Sound Commands" (1.5.1) by AlliedModders LLC
18 "Anticamp CS:S and CS:GO" (2.5.2) by stachi
19 "Basic Comm Control" (1.5.1) by AlliedModders LLC
20 "SourceBans" (1.4.9) by SourceBans Development Team
21 "Admin File Reader" (1.5.1) by AlliedModders LLC
22 "TeamSwitch" (1.4) by MistaGee (Modify by Snake 60)
23 "Admin Menu" (1.5.1) by AlliedModders LLC
24 "[ BuyZone Protector ]" (2.1) by Regent
25 "Map Nominations" (1.5.1) by AlliedModders LLC
26 "Fun Votes" (1.5.1) by AlliedModders LLC
27 "Reserved Slots" (1.5.1) by AlliedModders LLC
28 "Players Votes Redux" (1.1.2) by ReFlexPoison
29 "Rock The Vote" (1.5.1) by AlliedModders LLC
30 "NoBlock" (1.4.2) by Otstrel.ru Team
31 "Nextmap" (1.5.1) by AlliedModders LLC
32 "Quake Sounds" (1.8) by dalto
33 "Client Preferences" (1.5.1) by AlliedModders LLC
34 "Extra Cash" (0.2) by Peoples Army
35 "Fun Commands" (1.5.1) by AlliedModders LLC
36 "SourceComms" (0.9.259) by Alex
37 "Round and Map End Sound" (2.5.0Beta9) by FrozDark (HLModders LLC)
38 "Auto change map" (1.3) by Mleczam
39 "THC RPG LVL UP SETTINGS ADDON" (1.0) by [RUS] SenatoR
40 "[THC RPG] Total HardCore RPG modification by [RUS] SenatoR" (0.9.4) by ArsiRC, modification: [RUS] SenatoR
41 "THC RPG Team Bets ADDON" (1.0) by GrimReaper,heavily altered by Necavi,altered for THC RPG SenatoR
 

trueattack

Участник
Сообщения
134
Реакции
26
Вот, исправленный. Попросил у Reiko, он сделал. Я лишь добавил morecolors.
PHP:
// =============================================================
// >> INCLUDES
// =============================================================
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <morecolors>


// =============================================================
// >> PLUGIN INFORMATION
// =============================================================
public Plugin:myinfo = 
{
	name 		= "[ BuyZone Protector ]",
	author 		= "Regent",
	description = "protects certain time players, which inside of their buy zone",
	version 	= "2.1",
	url 		= ""
};


// =============================================================
// >> DEFINES
// =============================================================
#define EFFECT_MODEL		"materials/sprites/lgtning.vmt"


// =============================================================
// >> CONSOLE VARIABLES
// =============================================================
new Handle:	g_hConVar_sCTLineColor;
new Handle:	g_hConVar_sTLineColor;
new Handle:	g_hConVar_flProtectionTime;
new Handle:	g_hConVar_bDrawProtectionZone;
new Handle:	g_hConVar_bRestrictShootFromZone;
new Handle:	g_hConVar_bChangeColor;
new Handle:	g_hConVar_sChangeColorCT;
new Handle:	g_hConVar_sChangeColorT;
new Handle:	g_hConVar_bNotice;


// =============================================================
// >> SHADOW CONSOLE VARIABLES
// =============================================================
new Float:	g_flProtectionTime;
new bool:	g_bDrawProtectionZone;
new bool:	g_bRestrictShootFromZone;
new bool:	g_bChangeColor;
new bool:	g_bNotice;
new 		g_iCTLineColor[4];
new 		g_iTLineColor[4];
new 		g_iCTColor[4];
new 		g_iTColor[4];


// =============================================================
// >> GLOBAL VARIABLES
// =============================================================
new Handle:	g_hProtectionTimer	= INVALID_HANDLE;

new Float:	g_flTBuyZoneMins[2][3];
new Float:	g_flTBuyZoneMaxs[2][3];
new Float:	g_flCTBuyZoneMins[2][3];
new Float:	g_flCTBuyZoneMaxs[2][3];

new			g_iModelEntity;


// =============================================================
// >> PLUGIN SOURCE CODE
// =============================================================
public OnPluginStart()
{
	LoadTranslations("buyzone_protector.phrases.txt");
	
	g_hConVar_bDrawProtectionZone 		= CreateConVar("sm_bzp_drawzone", "1", "ENG: draw (1) or not (0) zone of protection\nRUS: рисовать (1) или нет (0) зону защиты", FCVAR_PLUGIN);
	g_hConVar_flProtectionTime 			= CreateConVar("sm_bzp_prottime", "20.0", "ENG: how long in seconds will lasts protection of buyzone\nRUS: как долго в секундах будет длится защита зон покупок", FCVAR_PLUGIN);
	g_hConVar_sCTLineColor 				= CreateConVar("sm_bzp_ctlinecolor", "0 0 255 255", "ENG: color of lines ct zone\nRUS: цвет зоны КТ", FCVAR_PLUGIN);
	g_hConVar_sTLineColor 				= CreateConVar("sm_bzp_tlinecolor", "255 0 0 255", "ENG: color of lines t zone\nRUS: цвет зоны Т", FCVAR_PLUGIN);
	g_hConVar_bRestrictShootFromZone 	= CreateConVar("sm_bzp_restrictshoot", "1", "ENG: allow (0) or not (1) shooting from their zone or not\nRUS: разрешить (0) или нет (1) стрелять из своих зон или нет", FCVAR_PLUGIN);
	g_hConVar_bChangeColor				= CreateConVar("sm_bzp_changecolor", "1", "ENG: change (0) or not (1) player color in their zone\nRUS: изменять (0) или нет (1) цвет игроков в своих зонах", FCVAR_PLUGIN);
	g_hConVar_sChangeColorCT			= CreateConVar("sm_bzp_changecolorct", "0 0 255 125", "ENG: color of CT in their zone while protect lasts\nRUS: цвет КТ в своей зоне, пока защита активна", FCVAR_PLUGIN);
	g_hConVar_sChangeColorT				= CreateConVar("sm_bzp_changecolort", "255 0 0 125", "ENG: color of T in their zone while protect lasts\nRUS: цвет Т в своей зоне, пока защита активна", FCVAR_PLUGIN);
	g_hConVar_bNotice					= CreateConVar("sm_bzp_notice", "1", "ENG: allow (0) or not (1) sending messages about entering/leaving zones\nRUS: разрешить (0) или нет (1) плагину сообщать игрокам о входе/покидании зоны", FCVAR_PLUGIN);
	
	HookConVarChange(g_hConVar_bDrawProtectionZone, 	Hook_ConVarChanged);
	HookConVarChange(g_hConVar_flProtectionTime, 		Hook_ConVarChanged);
	HookConVarChange(g_hConVar_sCTLineColor, 			Hook_ConVarChanged);
	HookConVarChange(g_hConVar_sTLineColor, 			Hook_ConVarChanged);
	HookConVarChange(g_hConVar_bRestrictShootFromZone, 	Hook_ConVarChanged);
	HookConVarChange(g_hConVar_bChangeColor, 			Hook_ConVarChanged);
	HookConVarChange(g_hConVar_sChangeColorCT, 			Hook_ConVarChanged);
	HookConVarChange(g_hConVar_sChangeColorT, 			Hook_ConVarChanged);
	HookConVarChange(g_hConVar_bNotice, 				Hook_ConVarChanged);
	
	HookEvent("round_start", Ev_RoundStart);
	AutoExecConfig(true, "buyzone_protector");
	CreateConVar("sm_bzp_version",	"2.0 by Regent", "version of plugin", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD);
}

public Hook_ConVarChanged(Handle:hConVar, const String:sOldValue[], const String:sNewValue[])
{
	if ( hConVar == g_hConVar_bDrawProtectionZone )
	{
		g_bDrawProtectionZone = GetConVarBool(g_hConVar_bDrawProtectionZone);
	}
	else if ( hConVar == g_hConVar_flProtectionTime )
	{
		g_flProtectionTime = GetConVarFloat(g_hConVar_flProtectionTime);
	}
	else if ( hConVar == g_hConVar_sCTLineColor )
	{
		StringToIntArray(sNewValue, g_iCTLineColor);
	}
	else if ( hConVar == g_hConVar_sTLineColor )
	{
		StringToIntArray(sNewValue, g_iTLineColor);
	}
	else if ( hConVar == g_hConVar_bRestrictShootFromZone )
	{
		g_bRestrictShootFromZone = GetConVarBool(g_hConVar_bRestrictShootFromZone);
	}
	else if ( hConVar == g_hConVar_bChangeColor )
	{
		g_bChangeColor = GetConVarBool(g_hConVar_bChangeColor);
	}
	else if ( hConVar == g_hConVar_bNotice )
	{
		g_bNotice = GetConVarBool(g_hConVar_bNotice);
	}
	else if ( hConVar == g_hConVar_sChangeColorCT )
	{
		StringToIntArray(sNewValue, g_iCTColor);
	}
	else if ( hConVar == g_hConVar_sChangeColorT )
	{
		StringToIntArray(sNewValue, g_iTColor);
	}
}

public OnPluginEnd()
{
	if ( g_hProtectionTimer != INVALID_HANDLE )
	{
		KillTimer(g_hProtectionTimer);
		g_hProtectionTimer = INVALID_HANDLE;
	}
}

public OnMapStart()
{
	g_hProtectionTimer = INVALID_HANDLE;
	
	new iEntity = -1;
	while ((iEntity = FindEntityByClassname(iEntity, "func_buyzone")) != -1)
    {
		decl Float:flOrigin[3], Float:flVecMins[3], Float:flVecMaxs[3];
		new iTeam = GetEntProp(iEntity, Prop_Send, "m_iTeamNum");
		GetEntPropVector(iEntity, Prop_Send, "m_vecMins", flVecMins);
		GetEntPropVector(iEntity, Prop_Send, "m_vecMaxs", flVecMaxs);
		GetEntPropVector(iEntity, Prop_Send, "m_vecOrigin", flOrigin);
		
		if ( iTeam == 2 )
		{
			g_flTBuyZoneMins[0][0] = flOrigin[0] + flVecMins[0];
			g_flTBuyZoneMins[0][1] = flOrigin[1] + flVecMins[1];
			g_flTBuyZoneMins[0][2] = flOrigin[2] + flVecMins[2];
			g_flTBuyZoneMaxs[0][0] = flOrigin[0] + flVecMaxs[0];
			g_flTBuyZoneMaxs[0][1] = flOrigin[1] + flVecMaxs[1];
			g_flTBuyZoneMaxs[0][2] = flOrigin[2] + flVecMaxs[2];
			
			g_flTBuyZoneMins[1][0] = flOrigin[0] + flVecMins[0];
			g_flTBuyZoneMins[1][1] = flOrigin[1] + flVecMaxs[1];
			g_flTBuyZoneMins[1][2] = flOrigin[2] + flVecMins[2];
			g_flTBuyZoneMaxs[1][0] = flOrigin[0] + flVecMaxs[0];
			g_flTBuyZoneMaxs[1][1] = flOrigin[1] + flVecMins[1];
			g_flTBuyZoneMaxs[1][2] = flOrigin[2] + flVecMaxs[2];
			
			SDKHook(iEntity, SDKHook_StartTouch, OnTZoneStartTouch);
			SDKHook(iEntity, SDKHook_EndTouch, OnTZoneEndTouch);
		}
		else if ( iTeam == 3 )
		{
			g_flCTBuyZoneMins[0][0] = flOrigin[0] + flVecMins[0];
			g_flCTBuyZoneMins[0][1] = flOrigin[1] + flVecMins[1];
			g_flCTBuyZoneMins[0][2] = flOrigin[2] + flVecMins[2];
			g_flCTBuyZoneMaxs[0][0] = flOrigin[0] + flVecMaxs[0];
			g_flCTBuyZoneMaxs[0][1] = flOrigin[1] + flVecMaxs[1];
			g_flCTBuyZoneMaxs[0][2] = flOrigin[2] + flVecMaxs[2];
			
			g_flCTBuyZoneMins[1][0] = flOrigin[0] + flVecMins[0];
			g_flCTBuyZoneMins[1][1] = flOrigin[1] + flVecMaxs[1];
			g_flCTBuyZoneMins[1][2] = flOrigin[2] + flVecMins[2];
			g_flCTBuyZoneMaxs[1][0] = flOrigin[0] + flVecMaxs[0];
			g_flCTBuyZoneMaxs[1][1] = flOrigin[1] + flVecMins[1];
			g_flCTBuyZoneMaxs[1][2] = flOrigin[2] + flVecMaxs[2];
			
			SDKHook(iEntity, SDKHook_StartTouch, OnCTZoneStartTouch);
			SDKHook(iEntity, SDKHook_EndTouch, OnCTZoneEndTouch);
		}
	}
	
	g_iModelEntity = PrecacheModel(EFFECT_MODEL);
}

public OnConfigsExecuted()
{
	g_bDrawProtectionZone 		= GetConVarBool	(g_hConVar_bDrawProtectionZone);
	g_bRestrictShootFromZone 	= GetConVarBool	(g_hConVar_bRestrictShootFromZone);
	g_bChangeColor 				= GetConVarBool	(g_hConVar_bChangeColor);
	g_bNotice 					= GetConVarBool	(g_hConVar_bNotice);
	g_flProtectionTime 			= GetConVarFloat(g_hConVar_flProtectionTime);
	
	decl String:sBuffer[20];
	GetConVarString(g_hConVar_sCTLineColor, sBuffer, sizeof(sBuffer) - 1);
	StringToIntArray(sBuffer, g_iCTLineColor);
	
	GetConVarString(g_hConVar_sTLineColor, sBuffer, sizeof(sBuffer) - 1);
	StringToIntArray(sBuffer, g_iTLineColor);
	
	GetConVarString(g_hConVar_sChangeColorCT, sBuffer, sizeof(sBuffer) - 1);
	StringToIntArray(sBuffer, g_iCTColor);
	
	GetConVarString(g_hConVar_sChangeColorT, sBuffer, sizeof(sBuffer) - 1);
	StringToIntArray(sBuffer, g_iTColor);
	
	for ( new i = 1; i <= MaxClients; i++ )
	{
		if ( IsClientInGame(i) )
		{
			OnClientPutInServer(i);
		}
	}
}

StringToIntArray(const String:sInput[], Array[])
{
	decl String:sBuffer[4][5]
	ExplodeString(sInput, " ", sBuffer, sizeof(sBuffer), sizeof(sBuffer[]) - 1);
	Array[0] = StringToInt(sBuffer[0]);
	Array[1] = StringToInt(sBuffer[1]);
	Array[2] = StringToInt(sBuffer[2]);
	Array[3] = StringToInt(sBuffer[3]);
}

public OnClientPutInServer(iClient)
{
	SDKHook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public OnClientDisconnect_Post(iClient)
{
	SDKUnhook(iClient, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action:OnTakeDamage(iClient, &iAttacker, &iInflictor, &Float:flDamage, &iDamageType)
{
	if ( g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( GetEntProp(iClient, Prop_Send, "m_bInBuyZone") == 1 )
		{
			if ( GetClientTeam(iClient) == 2 )
			{
				if ( IsClientInside(iClient, g_flTBuyZoneMins[0], g_flTBuyZoneMaxs[0]) )
				{
					flDamage = 0.0;
					return Plugin_Changed;
				}
			}
			else if ( GetClientTeam(iClient) == 3 )
			{
				if ( IsClientInside(iClient, g_flCTBuyZoneMins[0], g_flCTBuyZoneMaxs[0]) )
				{
					flDamage = 0.0;
					return Plugin_Changed;
				}
			}
		}
	}
			
	return Plugin_Continue;
}

public Ev_RoundStart(Handle:hEvent, const String:sEvName[], bool:bSilent)
{
	if ( g_bDrawProtectionZone )
	{
		DrawZoneByCoords(g_flCTBuyZoneMins, g_flCTBuyZoneMaxs, g_iCTLineColor);
		DrawZoneByCoords(g_flTBuyZoneMins, g_flTBuyZoneMaxs, g_iTLineColor);
	}
	
	if ( g_hProtectionTimer != INVALID_HANDLE )
	{
		KillTimer(g_hProtectionTimer);
	}
	g_hProtectionTimer = CreateTimer(g_flProtectionTime, Timer_RemoveProtection, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:Timer_RemoveProtection(Handle:hTimer, any:data)
{
	for ( new i = 1; i <= MaxClients; i++ )
	{
		if ( IsClientInGame(i) )
		{
			if ( GetClientTeam(i) == 2 )
			{
				if ( IsClientInside(i, g_flTBuyZoneMins[0], g_flTBuyZoneMaxs[0]) )
				{
					if ( g_bNotice )
					{
						CPrintToChat(i, "%t", "ended");
					}
					if ( g_bChangeColor )
					{
						SetEntityRenderColor(i, 255, 255, 255, 255);
						SetEntityRenderMode(i, RENDER_NORMAL);
					}
				}
			}
			else if ( GetClientTeam(i) == 3 )
			{
				if ( IsClientInside(i, g_flCTBuyZoneMins[0], g_flCTBuyZoneMaxs[0]) )
				{
					if ( g_bNotice )
					{
						CPrintToChat(i, "%t", "ended");
					}
					if ( g_bChangeColor )
					{
						SetEntityRenderColor(i, 255, 255, 255, 255);
						SetEntityRenderMode(i, RENDER_NORMAL);
					}
				}
			}
		}
	}
	
	g_hProtectionTimer = INVALID_HANDLE;
	return Plugin_Stop;
}

DrawZoneByCoords(const Float:flMins[2][3], const Float:flMaxs[2][3], const iColor[4])
{
	decl Float:flBuffer1[3], Float:flBuffer2[3];
	
	flBuffer1[0] = flMaxs[0][0];
	flBuffer1[1] = flMaxs[0][1];
	flBuffer1[2] = flMaxs[0][2];
	flBuffer2[0] = flMaxs[1][0];
	flBuffer2[1] = flMaxs[1][1];
	flBuffer2[2] = flMaxs[0][2];
	
	TE_SetupBeamPoints(flBuffer1, flBuffer2, g_iModelEntity, 0, 0, 0, g_flProtectionTime, 20.0, 20.0, 0, 0.0, iColor, 0);
	TE_SendToAll();
	
	flBuffer1[0] = flMaxs[0][0];
	flBuffer1[1] = flMaxs[0][1];
	flBuffer1[2] = flMaxs[0][2];
	flBuffer2[0] = flMins[1][0];
	flBuffer2[1] = flMins[1][1];
	flBuffer2[2] = flMaxs[0][2];
	TE_SetupBeamPoints(flBuffer1, flBuffer2, g_iModelEntity, 0, 0, 0, g_flProtectionTime, 20.0, 20.0, 0, 0.0, iColor, 0);
	TE_SendToAll();
	
	flBuffer1[0] = flMins[0][0];
	flBuffer1[1] = flMins[0][1];
	flBuffer1[2] = flMaxs[0][2];
	flBuffer2[0] = flMaxs[1][0];
	flBuffer2[1] = flMaxs[1][1];
	flBuffer2[2] = flMaxs[0][2];
	TE_SetupBeamPoints(flBuffer1, flBuffer2, g_iModelEntity, 0, 0, 0, g_flProtectionTime, 20.0, 20.0, 0, 0.0, iColor, 0);
	TE_SendToAll();
	
	flBuffer1[0] = flMins[0][0];
	flBuffer1[1] = flMins[0][1];
	flBuffer1[2] = flMaxs[0][2];
	flBuffer2[0] = flMins[1][0];
	flBuffer2[1] = flMins[1][1];
	flBuffer2[2] = flMaxs[0][2];
	TE_SetupBeamPoints(flBuffer1, flBuffer2, g_iModelEntity, 0, 0, 0, g_flProtectionTime, 20.0, 20.0, 0, 0.0, iColor, 0);
	TE_SendToAll();
}

bool:IsClientInside(const &iClient, const Float:flMins[3], const Float:flMaxs[3])
{
	decl Float:flOrigin[3];
	GetClientAbsOrigin(iClient, flOrigin);
	
	if (flOrigin[0] >= flMins[0] && flOrigin[0] <= flMaxs[0] &&
		flOrigin[1] >= flMins[1] && flOrigin[1] <= flMaxs[1] &&
		flOrigin[2] >= flMins[2] && flOrigin[2] <= flMaxs[2])
	{
		return true;
	}
	else
	{
		return false;
	}
}

public Action:OnPlayerRunCmd(iClient, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon, &subtype, &cmdnum, &tickcount, &seed, mouse[2])
{
	if ( g_bRestrictShootFromZone && g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( GetEntProp(iClient, Prop_Send, "m_bInBuyZone") == 1 )
		{
			if ( buttons & IN_ATTACK )
			{
				if ( GetClientTeam(iClient) == 2 )
				{
					if ( IsClientInside(iClient, g_flTBuyZoneMins[0], g_flTBuyZoneMaxs[0]) )
					{
						buttons &= ~IN_ATTACK;
						PrintCenterText(iClient, "%t", "shoot blocked");
					}
				}
				else if ( GetClientTeam(iClient) == 3 )
				{
					if ( IsClientInside(iClient, g_flCTBuyZoneMins[0], g_flCTBuyZoneMaxs[0]) )
					{
						buttons &= ~IN_ATTACK;
						PrintCenterText(iClient, "%t", "shoot blocked");
					}
				}
			}
		}
	}
}

public OnTZoneStartTouch(iEntity, iToucher)
{
	if ( 0 < iToucher <= MaxClients && g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( GetClientTeam(iToucher) == 2 )
		{
			if ( g_bNotice )
			{
				CPrintToChat(iToucher, "%t", "entered");
			}
			if ( g_bChangeColor )
			{
				SetEntityRenderMode(iToucher, RENDER_TRANSCOLOR);
				SetEntityRenderColor(iToucher, g_iTColor[0], g_iTColor[1], g_iTColor[2], g_iTColor[3]);
			}
		}
	}
}

public OnCTZoneStartTouch(iEntity, iToucher)
{
	if ( 0 < iToucher <= MaxClients && g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( GetClientTeam(iToucher) == 3 )
		{
			if ( g_bNotice )
			{
				CPrintToChat(iToucher, "%t", "entered");
			}
			if ( g_bChangeColor )
			{
				SetEntityRenderMode(iToucher, RENDER_TRANSCOLOR);
				SetEntityRenderColor(iToucher, g_iCTColor[0], g_iCTColor[1], g_iCTColor[2], g_iCTColor[3]);
			}
		}
	}
}

public OnTZoneEndTouch(iEntity, iToucher)
{
	if ( 0 < iToucher <= MaxClients && g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( !IsClientInGame(iToucher) )
		{
			return;
		}
		
		if ( GetClientTeam(iToucher) == 2 )
		{
			if ( g_bNotice )
			{
				CPrintToChat(iToucher, "%t", "leaved");
			}
			if ( g_bChangeColor )
			{
				SetEntityRenderColor(iToucher, 255, 255, 255, 255);
				SetEntityRenderMode(iToucher, RENDER_NORMAL);
			}
		}
	}
}

public OnCTZoneEndTouch(iEntity, iToucher)
{
	if ( 0 < iToucher <= MaxClients && g_hProtectionTimer != INVALID_HANDLE )
	{
		if ( !IsClientInGame(iToucher) )
		{
			return;
		}
		
		if ( GetClientTeam(iToucher) == 3 )
		{
			if ( g_bNotice )
			{
				CPrintToChat(iToucher, "%t", "leaved");
			}
			if ( g_bChangeColor )
			{
				SetEntityRenderColor(iToucher, 255, 255, 255, 255);
				SetEntityRenderMode(iToucher, RENDER_NORMAL);
			}
		}
	}
}
 

Parlament Admin

Участник
Сообщения
69
Реакции
2
У меня вопрос, как выделить свою зону в которой игроки не смогут стрелять?
P.s в первом посту написанно что такая возможность есть, но описания не нашол.
 

trueattack

Участник
Сообщения
134
Реакции
26
У меня вопрос, как выделить свою зону в которой игроки не смогут стрелять?
P.s в первом посту написанно что такая возможность есть, но описания не нашол.

Если ты об этом:
(16-11-2013) Версия 2.0 - плагин переписан, добавлена возможность обозначения зон закупок.
Я думаю имелось ввиду выделение зоны спрайтом. А менять зоны, редактировать и добавлять свои - пока нет такой возможности. В скором будущем, возможно, Reiko доработает плагин.
 

Parlament Admin

Участник
Сообщения
69
Реакции
2
Если ты об этом:
(16-11-2013) Версия 2.0 - плагин переписан, добавлена возможность обозначения зон закупок.
Я думаю имелось ввиду выделение зоны спрайтом. А менять зоны, редактировать и добавлять свои - пока нет такой возможности. В скором будущем, возможно, Reiko доработает плагин.

Оффтоп
 

marlboro

Участник
Сообщения
146
Реакции
36
Привет ребят! Кто может поправить:
Сервер CS: GO
C-подобный:
L 08/05/2015 - 21:41:08: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:41:08: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:42:16: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:42:16: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:42:16: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:43:29: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:43:29: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:43:29: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:44:48: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:44:48: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:44:48: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:46:16: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:46:16: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:46:16: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:49:26: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:49:26: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:49:26: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:52:32: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:52:32: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:52:32: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
L 08/05/2015 - 21:54:23: [SM] Native "KillTimer" reported: Invalid timer handle 5da8094b (error 7)
L 08/05/2015 - 21:54:23: [SM] Displaying call stack trace for plugin "buyzone_protector.smx":
L 08/05/2015 - 21:54:23: [SM]   [0]  Line 292, C:\Users\Reiko\Desktop\sm15\css\buyzone_protector.sp::Ev_RoundStart()
[SM] Listing 37 plugins:
01 "Advertisements" (0.6 CSGO-1.1) by Tsunami (CSGO FIX Феникс)
02 "Player Commands" (1.7.2) by AlliedModders LLC
03 "Admin Help" (1.7.2) by AlliedModders LLC
04 "Resetscore" (2.6.0) by shavit
05 "[THC RPG] Total HardCore RPG modification by [RUS] SenatoR" (0.9.7) by ArsiRC, modification: [RUS] SenatoR
06 "Fun Votes" (1.7.2) by AlliedModders LLC
07 "MapChooser" (1.7.2) by AlliedModders LLC
08 "SuperLogs: CSS" (1.2.4) by psychonic
09 "HLstatsX CE Ingame Plugin" (1.6.19) by psychonic
10 "Basic Chat" (1.7.2) by AlliedModders LLC
11 "Levels Ranks" (v1.0.3) by RoadSide Romeo
12 "Basic Info Triggers" (1.7.2) by AlliedModders LLC
13 "THC RPG LVL UP SETTINGS ADDON" (1.0) by [RUS] SenatoR
14 "Anti-Flood" (1.7.2) by AlliedModders LLC
15 "Map Nominations" (1.7.2) by AlliedModders LLC
16 "SM Parachute" (2.0) by Translate OT Frol
17 "Anticamp CS:S and CS:GO" (2.5.2) by stachi
18 "Rock The Vote" (1.7.2) by AlliedModders LLC
19 "Client Preferences" (1.7.2) by AlliedModders LLC
20 "NoBlock" (1.4.2) by Otstrel.ru Team
21 "RandomCycle" (1.7.2) by AlliedModders LLC
22 "Admin File Reader" (1.7.2) by AlliedModders LLC
23 "Spawn Protection [Added CS:GO Support]" (1.5 [CS:GO Support]) by Fredd
24 "Reserved Slots" (1.7.2) by AlliedModders LLC
25 "Basic Commands" (1.7.2) by AlliedModders LLC
26 "No Fall Damage" (0.0.1.9) by alexip121093
27 "Fun Commands" (1.7.2) by AlliedModders LLC
28 "Admin Menu" (1.7.2) by AlliedModders LLC
29 "Basic Votes" (1.7.2) by AlliedModders LLC
30 "Nextmap" (1.7.2) by AlliedModders LLC
31 "Rotate server graphic banners" (0.3) by HiTmAnY
32 "Sound Commands" (1.7.2) by AlliedModders LLC
33 "Basic Comm Control" (1.7.2) by AlliedModders LLC
34 "[CSS/CS:GO] AbNeR Bunny Hoping" (1.5) by AbNeR_CSS
35 "ConnectInfo" (1.4.0.0 CSGO) by merk26 - CSGO FIX Феникс
36 "[ BuyZone Protector ]" (2.1) by Regent
37 "SourceBans" (1.4.9) by SourceBans Development Team
Listing 4 plugins:
[01] SourceMod (1.7.2) by AlliedModders LLC
[02] CS Tools (1.7.2) by AlliedModders LLC
[03] SDK Tools (1.7.2) by AlliedModders LLC
[04] SDK Hooks (1.7.2) by AlliedModders LLC
 

marlboro

Участник
Сообщения
146
Реакции
36
На CS: GO данный плагин работает некорректно, хочет работает, хочет не работает... По крайней мере на Surf картах так...
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #16
Пользователь Reiko1231 разместил новый ресурс:

Buyzone Protector - Защита игроков внутри зоны закупки

Плагин защищает игроков на их закупочной зоне определенный промежуток времени от начала раунда. Как только игрок покидает зону, защита снимается. Если он вернется, то, если время защиты не истекло, защита будет возвращена.
Так же есть возможность установить вокруг закупочных зон линии, обозначающие область защиты (подробнее об этом в консольных переменных плагина). По истечению времени защиты они пропадают.

73ce2429b971.jpg
...

Узнать больше об этом ресурсе...
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #19
Сверху Снизу