Перейти к содержимому


Фотография

плагин на выход танка для любой миссии/карты

left 4 dead 2 tank spawn maps server plugin

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#1 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 08 Сентябрь 2018 - 19:53

В общем-то мне дали готовый sp файл, я поменял только рандомное время на выход танка. Скомпилировал, проверил, но работает странно, - то вроде действует, то нет: имею ввиду и время, и вообще выход танка. Бывает, на первой же миссии один за другим пара штук выйдут, а бывает - ни одного. Тестил на мапе c5m1. Вроде плагин писали ещё на l4d первую часть, что-то могло устареть. Спецы, гляньте, проверьте, кому не лень, правильно там всё или где баг какой спрятался?

 

#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
 
#define       g_maps  StrEqual(maps, "l4d_hospital01_apartment", false) || StrEqual(maps, "l4d_farm01_hilltop", false) || StrEqual(maps, "l4d_airport01_greenhouse", false) || StrEqual(maps, "l4d_smalltown01_caves", false)
bool          g_stop_event, g_stop_event2;
char          maps[64];
Handle        g_iEnable = null, g_iInterval = null, g_qInterval = null, g_iInterval2 = null, g_qInterval2 = null, g_iEnable_MissionLost = null;
Handle        g_Timer = null, g_Timer2 = null;
 
public void OnPluginStart()
{
g_iEnable               = CreateConVar("sm_enable_unlocked_tank","1", "0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
 
g_iEnable_MissionLost   = CreateConVar("sm_enable_mission_lost","1", "Вызвать танка если команда проиграла? 0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
 
g_iInterval = CreateConVar("sm_interval_1","90.0", "Первое рандомное время.",  FCVAR_NOTIFY);
g_qInterval = CreateConVar("sm_interval_2","180.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
g_iInterval2 = CreateConVar("sm_interval2_1","120.0", "Первое рандомное время.",  FCVAR_NOTIFY);
g_qInterval2 = CreateConVar("sm_interval2_2","240.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
HookEvent("player_left_checkpoint", EventPlayerHook);
 
HookEvent("round_start",            ResetBool);
HookEvent("round_end",              ResetBool);
}
public void EventPlayerHook(Event event, const char[] name, bool dontBroadcast)
{
if(!GetConVarInt(g_iEnable) || (g_stop_event) || (g_stop_event2))return;
{
GetCurrentMap(maps, sizeof(maps));
if(g_maps)
{
if (g_Timer != null)
{
delete(g_Timer);
g_Timer = null;
}
g_Timer = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval) : GetConVarFloat(g_qInterval), SpawnTank, _, TIMER_FLAG_NO_MAPCHANGE);
g_stop_event = true;
}
GetCurrentMap(maps, sizeof(maps));
if(g_maps)
{
if (g_Timer2 != null)
{
delete(g_Timer2);
g_Timer2 = null;
}
g_Timer2 = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval2) : GetConVarFloat(g_qInterval2), SpawnWitch, _, TIMER_FLAG_NO_MAPCHANGE);
g_stop_event2 = true;
}
}
}
public void OnMapStart()
{
g_stop_event = true;
g_stop_event2 = true;
g_Timer = null;
g_Timer2 = null;
if (!IsModelPrecached("models/infected/hulk_dlc3.mdl")) PrecacheModel("models/infected/hulk_dlc3.mdl", true);
 
char map[64];
GetCurrentMap(map, sizeof(map));
}
public void OnMapEnd()
{
g_Timer = null;
g_Timer2 = null;
}
public void ResetBool(Event event, const char[] name, bool dontBroadcast)
{
if(!GetConVarInt(g_iEnable_MissionLost)) return;
{
g_stop_event = false;
g_stop_event2 = false;
}
}
public Action SpawnTank(Handle timer)
{
for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
{
int flags = GetCommandFlags("z_spawn");
SetCommandFlags("z_spawn", flags & ~FCVAR_CHEAT);
FakeClientCommand(i, "z_spawn tank auto");
SetCommandFlags("z_spawn", flags);
break;
}
g_Timer = null;
return Plugin_Stop;
}
public Action SpawnWitch(Handle timer)
{
for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
{
int flags = GetCommandFlags("z_spawn");
SetCommandFlags("z_spawn", flags & ~FCVAR_CHEAT);
FakeClientCommand(i, "z_spawn witch auto");
SetCommandFlags("z_spawn", flags);
break;
}
g_Timer2 = null;
return Plugin_Stop;
}
 

Прикрепленные файлы

  • Прикрепленный файл  tanktime.sp   3,46К   19 Количество загрузок:


#2 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 09 Сентябрь 2018 - 2:00

#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required

bool g_stop_event, g_stop_event2;
char sMap[64];
Handle g_iEnable = null, g_iInterval = null, g_qInterval = null, g_iInterval2 = null, g_qInterval2 = null, g_iEnable_MissionLost = null;
Handle g_Timer = null, g_Timer2 = null;
 
public void OnPluginStart()
{
	g_iEnable = CreateConVar("sm_enable_unlocked_tank","1", "0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
	g_iEnable_MissionLost = CreateConVar("sm_enable_mission_lost","1", "Вызвать танка если команда проиграла? 0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
 
	g_iInterval = CreateConVar("sm_interval_1","90.0", "Первое рандомное время.",  FCVAR_NOTIFY);
	g_qInterval = CreateConVar("sm_interval_2","180.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
	g_iInterval2 = CreateConVar("sm_interval2_1","120.0", "Первое рандомное время.",  FCVAR_NOTIFY);
	g_qInterval2 = CreateConVar("sm_interval2_2","240.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
	HookEvent("player_left_checkpoint", EventPlayerHook);
 
	HookEvent("round_start", ResetBool);
	HookEvent("round_end", ResetBool);
}

public void EventPlayerHook(Event event, const char[] name, bool dontBroadcast)
{
	if (!GetConVarInt(g_iEnable))
	{
		GetCurrentMap(sMap, sizeof(sMap));
		if (StrContains(sMap, "m1_", true) > 1)
		{
			if (g_stop_event)
			{
				if (g_Timer != null)
				{
					delete(g_Timer); 
					g_Timer = null;
				}
				g_Timer = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval) : GetConVarFloat(g_qInterval), SpawnTank, _, TIMER_FLAG_NO_MAPCHANGE);
				g_stop_event = true;
			}
			
			if (g_stop_event2)
			{
				if (g_Timer2 != null)
				{
					delete(g_Timer2); 
					g_Timer2 = null;
				}
				g_Timer2 = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval2) : GetConVarFloat(g_qInterval2), SpawnWitch, _, TIMER_FLAG_NO_MAPCHANGE);
				g_stop_event2 = true;
			}
		}
	}
}

public void OnMapStart()
{
	g_stop_event = true;
	g_stop_event2 = true;
	g_Timer = null;
	g_Timer2 = null;

	if (!IsModelPrecached("models/infected/hulk_dlc3.mdl"))
	{
		PrecacheModel("models/infected/hulk_dlc3.mdl", true);
	}
}

public void OnMapEnd()
{
	g_Timer = null;
	g_Timer2 = null;
}

public void ResetBool(Event event, const char[] name, bool dontBroadcast) 
{
	if (!GetConVarInt(g_iEnable_MissionLost)) return;
	{
		g_stop_event = false;
		g_stop_event2 = false;
	}
}

public Action SpawnTank(Handle timer)
{
	for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
	{
		HxFakeCHEAT(i, "z_spawn_old", "tank auto");
		break;
	}
	
	g_Timer = null;
	return Plugin_Stop;
}

public Action SpawnWitch(Handle timer)
{
	for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
	{
		HxFakeCHEAT(i, "z_spawn_old", "witch auto");
		break;
	}
	
	g_Timer2 = null;
	return Plugin_Stop;
}

void HxFakeCHEAT(int &client, const char[] sCmd, const char[] sArg)
{
	int iFlags = GetCommandFlags(sCmd);
	SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", sCmd, sArg);
	SetCommandFlags(sCmd, iFlags);
}

Сообщение отредактировал dr_lex: 09 Сентябрь 2018 - 2:01


#3 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 09 Сентябрь 2018 - 6:14

#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required

bool g_stop_event, g_stop_event2;
char sMap[64];
Handle g_iEnable = null, g_iInterval = null, g_qInterval = null, g_iInterval2 = null, g_qInterval2 = null, g_iEnable_MissionLost = null;
Handle g_Timer = null, g_Timer2 = null;
 
public void OnPluginStart()
{
	g_iEnable = CreateConVar("sm_enable_unlocked_tank","1", "0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
	g_iEnable_MissionLost = CreateConVar("sm_enable_mission_lost","1", "Вызвать танка если команда проиграла? 0:Выкл. 1:Вкл.", FCVAR_NOTIFY);
 
	g_iInterval = CreateConVar("sm_interval_1","90.0", "Первое рандомное время.",  FCVAR_NOTIFY);
	g_qInterval = CreateConVar("sm_interval_2","180.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
	g_iInterval2 = CreateConVar("sm_interval2_1","120.0", "Первое рандомное время.",  FCVAR_NOTIFY);
	g_qInterval2 = CreateConVar("sm_interval2_2","240.0", "Второе рандомное время.", FCVAR_NOTIFY);
 
	HookEvent("player_left_checkpoint", EventPlayerHook);
 
	HookEvent("round_start", ResetBool);
	HookEvent("round_end", ResetBool);
}

public void EventPlayerHook(Event event, const char[] name, bool dontBroadcast)
{
	if (!GetConVarInt(g_iEnable))
	{
		GetCurrentMap(sMap, sizeof(sMap));
		if (StrContains(sMap, "m1_", true) > 1)
		{
			if (g_stop_event)
			{
				if (g_Timer != null)
				{
					delete(g_Timer); 
					g_Timer = null;
				}
				g_Timer = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval) : GetConVarFloat(g_qInterval), SpawnTank, _, TIMER_FLAG_NO_MAPCHANGE);
				g_stop_event = true;
			}
			
			if (g_stop_event2)
			{
				if (g_Timer2 != null)
				{
					delete(g_Timer2); 
					g_Timer2 = null;
				}
				g_Timer2 = CreateTimer(GetRandomInt(0, 1) ? GetConVarFloat(g_iInterval2) : GetConVarFloat(g_qInterval2), SpawnWitch, _, TIMER_FLAG_NO_MAPCHANGE);
				g_stop_event2 = true;
			}
		}
	}
}

public void OnMapStart()
{
	g_stop_event = true;
	g_stop_event2 = true;
	g_Timer = null;
	g_Timer2 = null;

	if (!IsModelPrecached("models/infected/hulk_dlc3.mdl"))
	{
		PrecacheModel("models/infected/hulk_dlc3.mdl", true);
	}
}

public void OnMapEnd()
{
	g_Timer = null;
	g_Timer2 = null;
}

public void ResetBool(Event event, const char[] name, bool dontBroadcast) 
{
	if (!GetConVarInt(g_iEnable_MissionLost)) return;
	{
		g_stop_event = false;
		g_stop_event2 = false;
	}
}

public Action SpawnTank(Handle timer)
{
	for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
	{
		HxFakeCHEAT(i, "z_spawn_old", "tank auto");
		break;
	}
	
	g_Timer = null;
	return Plugin_Stop;
}

public Action SpawnWitch(Handle timer)
{
	for (int i = 1; i <= MaxClients; ++i) if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
	{
		HxFakeCHEAT(i, "z_spawn_old", "witch auto");
		break;
	}
	
	g_Timer2 = null;
	return Plugin_Stop;
}

void HxFakeCHEAT(int &client, const char[] sCmd, const char[] sArg)
{
	int iFlags = GetCommandFlags(sCmd);
	SetCommandFlags(sCmd, iFlags & ~FCVAR_CHEAT);
	FakeClientCommand(client, "%s %s", sCmd, sArg);
	SetCommandFlags(sCmd, iFlags);
}

Жаль, но в итоге не срабатывает таймер.Может, тоже потом через раз-другой что и будет. А так зашёл на первую миссию прихода, ждал минут 6-7, так танк и не явился, хотя 2 раза перезапускал для пробы сервер и карту. Реально работает лишь команда z_spawn tank. Может, её как-то в плагин сунуть по таймеру? Или, к примеру, z_spawn tank auto (а вот значение-цифру надо ли поставить? Типа, на секунды? Или команда без цифры должна стоять?). Правда, не знаю, как-то писал её в квары сервера, тоже ерунда. Если только напрямую в консоль вбивать - тогда да, танк спавнится, хотя и очень близко.



#4 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 09 Сентябрь 2018 - 6:35

Что прям глаза режет как исковеркали код. Если так не появляется даже таким методом ввода команды. Нужно создавать ещё один таймер и пускай вводит постоянно пока танк не появится, потом таймер останавливать. 



#5 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 574 сообщений

Отправлено 09 Сентябрь 2018 - 11:55

Код в первом посте - это исковерканная версия скриптера с корейского форума. Только там не было функции под каждую карту. Да и вообще там было 2 рандомных таймера которые работали безупречно. 



#6 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 09 Сентябрь 2018 - 12:31

Жаль, но в итоге не срабатывает таймер.Может, тоже потом через раз-другой что и будет. А так зашёл на первую миссию прихода, ждал минут 6-7, так танк и не явился, хотя 2 раза перезапускал для пробы сервер и карту. Реально работает лишь команда z_spawn tank. Может, её как-то в плагин сунуть по таймеру? Или, к примеру, z_spawn tank auto (а вот значение-цифру надо ли поставить? Типа, на секунды? Или команда без цифры должна стоять?). Правда, не знаю, как-то писал её в квары сервера, тоже ерунда. Если только напрямую в консоль вбивать - тогда да, танк спавнится, хотя и очень близко.

Написал свое вариант, но не проверял (только логика).
Добавил радном таймер который должен вызывать танка после начала первого раунда от 90 сек до 4 минут.
Работает только на первой карте и первый раунд (при сливе команды, следующие раунды без танков).

Делал так как требовалось от от вас, и то что было в идеи кода. Ведьм не добавлял так как вам нужен именно танк.

Скачать плагин
 

Исходник будет если все работает правильно, тогда отдам Game Over - L4D2 - CS:GO для включения его в список темы Тема для размещения: Plugins, Vscript, Scripts [L4D & L4D2]



#7 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 09 Сентябрь 2018 - 15:21

Написал свое вариант, но не проверял (только логика).
Добавил радном таймер который должен вызывать танка после начала первого раунда от 90 сек до 4 минут.
Работает только на первой карте и первый раунд (при сливе команды, следующие раунды без танков).

Делал так как требовалось от от вас, и то что было в идеи кода. Ведьм не добавлял так как вам нужен именно танк.

Скачать плагин
 

Исходник будет если все работает правильно, тогда отдам Game Over - L4D2 - CS:GO для включения его в список темы Тема для размещения: Plugins, Vscript, Scripts [L4D & L4D2]

 Проверил. Да, чётко на первой миссии в пределах 2-4 минут танк появляется. Что хорошо - не под носом, а нормально. на последующих миссиях танки и так директор спавнит. Так что благодарю. Хорошо бы, конечно, чтобы танки и на других картах/миссиях по таймеру спавнились, не только на первых. Поэтому, если будут улучшения - ещё круче дело пойдёт.


Сообщение отредактировал simvolist777: 09 Сентябрь 2018 - 15:24


#8 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 09 Сентябрь 2018 - 18:20

 Проверил. Да, чётко на первой миссии в пределах 2-4 минут танк появляется. Что хорошо - не под носом, а нормально. на последующих миссиях танки и так директор спавнит. Так что благодарю. Хорошо бы, конечно, чтобы танки и на других картах/миссиях по таймеру спавнились, не только на первых. Поэтому, если будут улучшения - ещё круче дело пойдёт.

 

Код плагина, если посмотреть то полностью с нуля сделан!

Скрытый текст

 

Код в первом посте - это исковерканная версия скриптера с корейского форума. Только там не было функции под каждую карту. Да и вообще там было 2 рандомных таймера которые работали безупречно. 

По желанию можешь добавить в тему.


  • Goldfish это нравится

#9 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 11 Сентябрь 2018 - 15:08

Плагин witch and tankifier чем не подходит? Он правда спаунит только по 1 танку/ведьме на карте



#10 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 11 Сентябрь 2018 - 18:37

Плагин witch and tankifier чем не подходит? Он правда спаунит только по 1 танку/ведьме на карте

Там вроде только на версусе? Хотя у меня есть вариант для коопа. Но там баг: ведьма внезапно почти рядом с тобой может заспавниться. Потом ещё бывает так, что после убийства ведьмы танк тупой появляется: просто стоит на месте и "сердится". Можно его даже обойти - он слепой, как пень. Ну и ведьм вообще не люблю - они реально трудно убиваемые, всё хп сжирают, и скорее тебя убьют, чем ты их.



#11 Game Over - L4D2 - CS:GO

Game Over - L4D2 - CS:GO

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 574 сообщений

Отправлено 12 Сентябрь 2018 - 10:59

Там вроде только на версусе? Хотя у меня есть вариант для коопа. Но там баг: ведьма внезапно почти рядом с тобой может заспавниться. Потом ещё бывает так, что после убийства ведьмы танк тупой появляется: просто стоит на месте и "сердится". Можно его даже обойти - он слепой, как пень. Ну и ведьм вообще не люблю - они реально трудно убиваемые, всё хп сжирают, и скорее тебя убьют, чем ты их.

В упор подходишь и в голову с дроба, и нет ведьмы. 



#12 MixJay

MixJay

    Пользователь

  • Пользователь
  • PipPipPip
  • 222 сообщений

Отправлено 12 Сентябрь 2018 - 12:26

А что если кварами плюсануть доп. танков?

sm_cvar director_force_tank "1"
sm_cvar director_tank_force_offer "1"
sm_cvar director_tank_checkpoint_interval "15"
sm_cvar director_tank_max_interval "360"
sm_cvar director_tank_min_interval "120"

  • Pringles это нравится

#13 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 12 Сентябрь 2018 - 13:25

Благодаря помощи юзера maloi9208 (это его работа), получилось плагин товарища dr_lex

совсем немного подправить так, что теперь таймер на появление танка срабатывает на каждой миссии. Во всяком случае, я проверял несколько раз у себя на сервере, на второй миссии - танк в пределах таймера выходит. Там всего лишь проверка на первую миссию подправлена (на ней тоже работает выход танчика), а так всё то же, что и в плагине dr_lex

Вот исходник кому надо. Как я и упоминал ранее, у меня на сервере бывает так, что за всю карту танк только в финале выходит. Теперь он будет на каждой миссии наконец-таки...

Прикрепленные файлы

  • Прикрепленный файл  tankallmaps.rar   754байт   55 Количество загрузок:

Сообщение отредактировал simvolist777: 12 Сентябрь 2018 - 13:26


#14 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 12 Сентябрь 2018 - 19:38

Обновил свой код (но не проверял). Напишите потом как работает.

Добавил настройки
 

hm_only_the_first_map 0 (1-Только первая карта. 0-Все карты)
hm_each_round 1 (1-Только начальный раунд. 0-Все раунды)
	
hm_time_spawn_min 90.0 (Минимальное время спауна)
hm_time_spawn_max 240.0 (Максимальное время спауна)

AutoExecConfig "/cfg/sourcemod/tankspawnmaps.cfg"


  • Slaven555 и Game Over - L4D2 - CS:GO это нравится

#15 simvolist777

simvolist777

    Пользователь

  • Пользователь
  • PipPipPip
  • 180 сообщений

Отправлено 13 Сентябрь 2018 - 5:20

Обновил свой код (но не проверял). Напишите потом как работает.

Добавил настройки
 

hm_only_the_first_map 0 (1-Только первая карта. 0-Все карты)
hm_each_round 1 (1-Только начальный раунд. 0-Все раунды)
	
hm_time_spawn_min 90.0 (Минимальное время спауна)
hm_time_spawn_max 240.0 (Максимальное время спауна)

AutoExecConfig "/cfg/sourcemod/tankspawnmaps.cfg"

 Проверил, работает. Спасибо!



#16 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 13 Сентябрь 2018 - 14:06

Обновил свой код (но не проверял). Напишите потом как работает.

Добавил настройки
 

hm_only_the_first_map 0 (1-Только первая карта. 0-Все карты)
hm_each_round 1 (1-Только начальный раунд. 0-Все раунды)
	
hm_time_spawn_min 90.0 (Минимальное время спауна)
hm_time_spawn_max 240.0 (Максимальное время спауна)

AutoExecConfig "/cfg/sourcemod/tankspawnmaps.cfg"

Любопытно: 

if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))

а именно:

IsClientConnected

Почему? Зачем? Если танк к игре не подключается, в следствие чего это заведомо ложная проверка. Или Танк подключается?)



#17 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 13 Сентябрь 2018 - 14:57

Любопытно:

if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))

а именно:
IsClientConnected
Почему? Зачем? Если танк к игре не подключается, в следствие чего это заведомо ложная проверка. Или Танк подключается?)

Я тоже думал про это, но решил перенести из старого кода. На работу это не влияет в принципе.

Сообщение отредактировал dr_lex: 13 Сентябрь 2018 - 14:58


#18 Komikoza

Komikoza

    Новичок

  • Пользователь
  • Pip
  • 37 сообщений

Отправлено 12 Декабрь 2018 - 3:30

Я тоже думал про это, но решил перенести из старого кода. На работу это не влияет в принципе.

Салют. Поставил плагин, но часто выдаёт по 2-3 танка. Обычно при первой загрузке карты. Так и задумано? Можно как-то прописать количество? Всего один нужен.



#19 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 100 сообщений

Отправлено 12 Декабрь 2018 - 14:57

Я использую эту версию- author = "AlexMy (edit by AlmazON)"

Он спавнит по танку через указанные интервалы, как ТС и нужно.

Но, есть 1 проблема. На финальных картах он выдает, например:

L 12/09/2018 - 22:13:53: SourceMod error session started
L 12/09/2018 - 22:13:53: Info (map "c5m5_bridge") (file "errors_20181209.log")
L 12/09/2018 - 22:13:53: [SM] Exception reported: Game event "tank_killed" has no active hook
L 12/09/2018 - 22:13:53: [SM] Blaming: L4D2_Round_start_Tank_and_Witch.smx
L 12/09/2018 - 22:13:53: [SM] Call stack trace:
L 12/09/2018 - 22:13:53: [SM]   [0] UnhookEvent
L 12/09/2018 - 22:13:53: [SM]   [1] Line 46, plugin.sp::Event_Finale_Radio_Start
L 12/09/2018 - 22:24:31: Error log file session closed.

 

Прикрепленные файлы


  • Komikoza это нравится

#20 Komikoza

Komikoza

    Новичок

  • Пользователь
  • Pip
  • 37 сообщений

Отправлено 12 Декабрь 2018 - 15:56

 

Я использую эту версию- author = "AlexMy (edit by AlmazON)"

Он спавнит по танку через указанные интервалы, как ТС и нужно.

Но, есть 1 проблема. На финальных картах он выдает, например:

L 12/09/2018 - 22:13:53: SourceMod error session started
L 12/09/2018 - 22:13:53: Info (map "c5m5_bridge") (file "errors_20181209.log")
L 12/09/2018 - 22:13:53: [SM] Exception reported: Game event "tank_killed" has no active hook
L 12/09/2018 - 22:13:53: [SM] Blaming: L4D2_Round_start_Tank_and_Witch.smx
L 12/09/2018 - 22:13:53: [SM] Call stack trace:
L 12/09/2018 - 22:13:53: [SM]   [0] UnhookEvent
L 12/09/2018 - 22:13:53: [SM]   [1] Line 46, plugin.sp::Event_Finale_Radio_Start
L 12/09/2018 - 22:24:31: Error log file session closed.

 

Оба плагина, похоже, нужно дописывать. :D

Спасибо, попробую.

UPD: Один раз выдал двоих одновременно. Я подсуетился, поставил Director Cvar 'TankLimit=1'. Теперь по одному танку, но их может быть 2-3 за карту. Отключайте Директорского танка, чтобы не было двойных танков. (sm_cvar director_no_bosses 1), эта переменная также отключит и директорскую ведьму.

В целом я доволен, большое спасибо.

UPD: Не совсем доволен, но спасибо, лучшей альтернативы пока не нашёл. Простенький плагин конечно, спавнит только по таймеру, который отсчитывается сразу, как прошла загрузка. То есть можно простоять на месте и танк заспавнится где-то впереди. Соответственно чем дольше вы играете, тем больше танков найдёте. В финале они вообще выходят, когда хотят, обычно 3 штуки на Финал, не считая EscapeTank. Ещё, похоже, каким-то образом "перекрывает" Директора в финалах, так как на финальных уровнях НУ ОЧЕНЬ мало обычных заражённых.


Сообщение отредактировал Komikoza: 16 Январь 2019 - 17:02




Темы с аналогичным тегами left 4 dead 2, tank, spawn, maps, server, plugin

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных