trigger_multiple не работает

MastAKK

Участник
Сообщения
11
Реакции
0
Есть следующий код (большая часть слизана с одного сайта):
PHP:
#include <sourcemod>
#include <sdktools> 

public Plugin:myinfo =
{
	name = "Spawnpoint Protection by MastAKK",
	author = "MastAKK",
	description = "Plugin that kills spawnkillers!",
	version = "0.1",
	url = "http://www.youtube.com/user/MastAKK111/"
};

public OnMapStart() 
{ 
	new trigger_multiple = CreateEntityByName("trigger_multiple"); 
	DispatchKeyValue(trigger_multiple, "spawnflags", "1"); 
	DispatchKeyValue(trigger_multiple, "wait", "0"); 
	DispatchSpawn(trigger_multiple); 
	ActivateEntity(trigger_multiple); 
	TeleportEntity(trigger_multiple, Float: {623.6, -901.1, -51.9}, NULL_VECTOR, NULL_VECTOR);
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMins", Float: {-110.0, -50.0, -30.0});
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMaxs", Float: {125.0, 50.0, 30.0});
	SetEntProp(trigger_multiple, Prop_Send, "m_nSolidType", 2); 
		
	HookSingleEntityOutput(trigger_multiple, "OnStartTouch", OnStartTouch); 
} 

public OnStartTouch(const String:output[], ent, client, Float:delay) 
{ 
	//if(GetClientTeam(client) == 3){
		ForcePlayerSuicide(client);
		PrintToChat(client, "tryed to break server rules ;)"); 
	//}
}
Но когда человек проходит через зону триггера (координаты правильные, проверил несколько раз), ничего не происходит (чат молчит, чел не дохнет). Почему?
 

Root

AWOL.
Сообщения
76
Реакции
195
Плагин, :) создающий зоны на карте при помощи trigger_multiple
Я прокомментировал код, так что я думаю у Вас не возникнет проблемы с адаптацией "под себя".
 

MastAKK

Участник
Сообщения
11
Реакции
0
Плагин, :) создающий зоны на карте при помощи trigger_multiple
Я прокомментировал код, так что я думаю у Вас не возникнет проблемы с адаптацией "под себя".

да, благодарю, я уже во всю читаю ваш код :)
Вот только понять не могу. Вроде код спауна зоны практически одинаков (разве что у меня есть готовые координаты и я сразу на них телепортирую зону), но у меня не работает. С чем это связано?
 

Root

AWOL.
Сообщения
76
Реакции
195
Можно долго гадать... но я подразумеваю, что создавать trigger нужно в начале каждого раунда (или же в конце концов корень зла - значение spawnflags (перед и после создания entity)).
 

Scarface_slv

Участник
Сообщения
222
Реакции
47
Скорее всего из за того что ты не добавил модель)
SetEntityModel(trigger_multiple, "models/props/cs_office/vending_machine.mdl");
И в OnMapStart
PrecacheModel("models/props/cs_office/vending_machine.mdl",true);
а и создавать ее нужно каждый раунд
 

MastAKK

Участник
Сообщения
11
Реакции
0
Скорее всего из за того что ты не добавил модель)
SetEntityModel(trigger_multiple, "models/props/cs_office/vending_machine.mdl");
И в OnMapStart
PrecacheModel("models/props/cs_office/vending_machine.mdl",true);
а и создавать ее нужно каждый раунд

а зачем нужно модель задавать? И модель текущей карты или какую нужно задать?

Добавлено через 8 минут
И вообще в tf2 такого (models/props) нету, кажется
 
Последнее редактирование:

Scarface_slv

Участник
Сообщения
222
Реакции
47
Без модели не будет работать m_vecMins и m_vecMaxs,
Если нет то так может прокатит как в том плагине models/error.mdl
 

MastAKK

Участник
Сообщения
11
Реакции
0
Я переписал код плагина. Добавил ручную активацию зон. Добавил модель (error.mdl). 100% правильный координаты. spawnflags 64
И, черт побери, не работает, что я делаю не так?
 

MastAKK

Участник
Сообщения
11
Реакции
0
Вот код:
PHP:
#include <sourcemod>
#include <sdktools> 

public Plugin:myinfo =
{
	name = "Spawnpoint Protection by MastAKK",
	author = "MastAKK",
	description = "Plugin that kills spawnkillers!",
	version = "0.1",
	url = "http://www.youtube.com/user/MastAKK111/"
};

public OnPluginStart()
{
	RegAdminCmd("sm_spawnbzone", SpawnBlueZone, ADMFLAG_ROOT);
	RegAdminCmd("sm_spawnrzone", SpawnBlueZone, ADMFLAG_ROOT);	
}

public Action:SpawnBlueZone(client, args) 
{
	PrecacheModel("models/error.mdl",true);
	if(client)
		PrintToConsole(client, "Spawning zones...");
		
	new trigger_multiple = CreateEntityByName("trigger_multiple_blue"); 
	
	DispatchKeyValue(trigger_multiple, "spawnflags", "64"); 
	DispatchKeyValue(trigger_multiple, "wait", "0"); 
	SetEntityModel(trigger_multiple, "models/error.mdl");
	DispatchSpawn(trigger_multiple); 
	
	ActivateEntity(trigger_multiple); 
	TeleportEntity(trigger_multiple, Float: {623.6, -901.1, -51.9}, NULL_VECTOR, NULL_VECTOR);
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMins", Float: {-110.0, -50.0, -30.0});
	
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMaxs", Float: {125.0, 50.0, 30.0});
	SetEntProp(trigger_multiple, Prop_Send, "m_nSolidType", 2); 
		
	HookEntityOutput("trigger_multiple_blue", "OnStartTouch", OnStartTouch); 
} 

public Action:SpawnRedZone(client, args) 
{
	PrecacheModel("models/error.mdl",true);
	if(client)
		PrintToConsole(client, "Spawning red zones...");
		
	new trigger_multiple = CreateEntityByName("trigger_multiple_red"); 
	
	DispatchKeyValue(trigger_multiple, "spawnflags", "64"); 
	DispatchKeyValue(trigger_multiple, "wait", "0"); 
	SetEntityModel(trigger_multiple, "models/error.mdl");
	DispatchSpawn(trigger_multiple); 
	
	ActivateEntity(trigger_multiple); 
	TeleportEntity(trigger_multiple, Float: {280.0,794.3,-113.9}, NULL_VECTOR, NULL_VECTOR);
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMins", Float: {-110.0, -50.0, -30.0});
	SetEntPropVector(trigger_multiple, Prop_Send, "m_vecMaxs", Float: {125.0, 50.0, 30.0});
	SetEntProp(trigger_multiple, Prop_Send, "m_nSolidType", 2); 
	
	HookEntityOutput("trigger_multiple_red", "OnStartTouch", OnStartTouch); 
} 

public OnStartTouch(const String:output[], ent, client, Float:delay) 
{ 
	if(GetClientTeam(client) == (3 || 2)){
		ForcePlayerSuicide(client);
		PrintToChat(client, "tryed to break server rules ;)"); 
	}
}
 

Scarface_slv

Участник
Сообщения
222
Реакции
47
Нет такого trigger_multiple_blue и red!
Короче попробуй это, просто вставь
свои координаты,если не прокатит ничем не могу помочь
PHP:
#include <sdktools> 

public OnPluginStart() RegAdminCmd("sm_spawnbzone", SpawnBlueZone, ADMFLAG_ROOT);  

public Action:SpawnBlueZone(client, args) 
{
    PrecacheModel("models/error.mdl",true);
    decl String:TargetName[64];
    new trigger = CreateEntityByName("trigger_multiple");
    DispatchKeyValue(trigger, "spawnflags", "1");
    Format(TargetName, sizeof(TargetName), "scq_zone_%d", trigger);
    DispatchKeyValue(trigger, "targetname", TargetName);
    DispatchKeyValue(trigger, "wait", "0");
    DispatchSpawn(trigger);
    ActivateEntity(trigger);
    SetEntityModel(trigger, "models/error.mdl");
    TeleportEntity(trigger, Float: {623.6, -901.1, -51.9}, NULL_VECTOR, NULL_VECTOR);
    SetEntPropVector(trigger, Prop_Send, "m_vecMins", Float:{-500.0, -500.0, -100.0});
    SetEntPropVector(trigger, Prop_Send, "m_vecMaxs", Float:{500.0, 500.0, 100.0});
    SetEntProp(trigger, Prop_Send, "m_nSolidType", 2);
    new iEffects = GetEntProp(trigger, Prop_Send, "m_fEffects");
    iEffects |= 32;
    SetEntProp(trigger, Prop_Send, "m_fEffects", iEffects);
    SetVariantString(TargetName);
    AcceptEntityInput(trigger, "SetParent");
    HookSingleEntityOutput(trigger, "OnStartTouch", OnStartTouch);
}

public OnStartTouch(const String:output[], ent, client, Float:delay) 
{ 
    ForcePlayerSuicide(client);
    PrintToChat(client, "tryed to break server rules ;)"); 
}
 
Сверху Снизу