Перейти к содержанию

Рекомендуемые сообщения

  • Администратор

Не знаю почему, но этот плагин крашит сервер на "Нет Милосердию". Проверил два раза. То что задумывалось плагин делает, но вот крашит. Если сможете починить, дерзайте!

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>

#define DEFAULT_FLAGS FCVAR_PLUGIN|FCVAR_NOTIFY
#define PLUGIN_VERSION "1.1"

#define TEST_DEBUG			0
#define TEST_DEBUG_LOG		1

static Handle:IAtoEATransformCVAR = INVALID_HANDLE;

public Plugin:myinfo = 
{
	name = "Разрывные патроны",
	author = "McFlurry; Редакция - L4D2Noob.RU",
	description = "Возвращает разрывные патроны в Сражение",
	version = PLUGIN_VERSION,
	url = "L4D2Noob.RU"
}

public OnPluginStart()
{
	decl String:game_name[64];
	GetGameFolderName(game_name, sizeof(game_name));
	if (!StrEqual(game_name, "left4dead2", false))
	{
		SetFailState("Плагин работает только в L4D2");
	}
	CreateConVar("l4d2_eammo_version", PLUGIN_VERSION, "Версия плагина", DEFAULT_FLAGS|FCVAR_SPONLY|FCVAR_DONTRECORD);
	IAtoEATransformCVAR = CreateConVar("l4d2_eammo_chance", "2", "Шанс появления разрывных патронов. 1 - 100%; 2 - 50%.", DEFAULT_FLAGS);
	HookEvent("round_start", Event_Round_Start);	
	AutoExecConfig(true, "l4d2_eammo");
}

public Action:Event_Round_Start(Handle:event, const String:name[], bool:dontBroadcast)
{
	CreateTimer(10.0, ReplaceIAWithEADelayed);
	if (!IsModelPrecached("models/w_models/weapons/w_eq_explosive_ammopack.mdl")) PrecacheModel("models/w_models/weapons/w_eq_explosive_ammopack.mdl");
	if (!IsModelPrecached("models/v_models/v_explosive_ammopack.mdl")) PrecacheModel("models/v_models/v_explosive_ammopack.mdl");
}

public Action:ReplaceIAWithEADelayed(Handle:timer)
{
	ReplaceIAWithEA(GetConVarInt(IAtoEATransformCVAR));
}

ReplaceIAWithEA(chance)
{
	decl String:GameMode[16];
	GetConVarString(FindConVar("mp_gamemode"), GameMode, sizeof(GameMode));
	
	if(StrEqual(GameMode, "versus") || StrEqual(GameMode, "teamversus"))
	{
		if (chance == 0) return;

		new ent = -1;
		new prev = 0;
		new replacement;
		decl Float:origin[3];
		decl Float:angles[3];
		while ((ent = FindEntityByClassname(ent, "weapon_upgradepack_incendiary_spawn")) != -1)
		{
			if (prev)
			{
				if (GetRandomInt(1, chance) == 1)
				{
					GetEntPropVector(prev, Prop_Send, "m_vecOrigin", origin);
					GetEntPropVector(prev, Prop_Send, "m_angRotation", angles);
				
					replacement = CreateEntityByName("weapon_upgradepack_explosive_spawn");
					DispatchSpawn(replacement);
					DebugPrintToAll("Была произведена замена", prev, replacement);
					if (!IsValidEdict(replacement)) return;
					
					TeleportEntity(replacement, origin, angles, NULL_VECTOR);
					DebugPrintToAll("Была произведена замена", replacement);
				
					RemoveEdict(prev);
				}
			}
			prev = ent;
		}
		if (prev)
		{
			if (GetRandomInt(1, chance) == 1)
			{
				GetEntPropVector(prev, Prop_Send, "m_vecOrigin", origin);
				GetEntPropVector(prev, Prop_Send, "m_angRotation", angles);
			
				replacement = CreateEntityByName("weapon_upgradepack_explosive_spawn");
				DispatchSpawn(replacement);
				DebugPrintToAll("Была произведена замена", prev, replacement);
				if (!IsValidEdict(replacement)) return;
			
				TeleportEntity(replacement, origin, angles, NULL_VECTOR);
				DebugPrintToAll("Была произведена замена", replacement);
			
				RemoveEdict(prev);
			}
		}
	}	
}

stock DebugPrintToAll(const String:format[], any:...)
{
	#if (TEST_DEBUG || TEST_DEBUG_LOG)
	decl String:buffer[256];
	
	VFormat(buffer, sizeof(buffer), format, 2);
	
	#if TEST_DEBUG
	PrintToChatAll("%s", buffer);
	PrintToConsole(0, "%s", buffer);
	#endif
	
	LogMessage("%s", buffer);
	#else
	//suppress "format" never used warning
	if(format[0])
		return;
	else
		return;
	#endif
}

 

Мир изменился, он стал другим!

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
  • Администратор
5 минут назад, Чат Бот сказал:

СЛИШКОМ скучно

Вылетать с сервера как только заспавнилась коробка с разрывными боеприпасами далеко не скучно.

Кстати, сейчас кое что попробую Может поможет. Спасибо за напоминание.

Мир изменился, он стал другим!

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

Попробуйте, вроде не крашит. Надеюсь на обратную связь.

Тему перемещу в раздел плагинов.

Bullet.smx Bullet.sp

Мир изменился, он стал другим!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...
  • Администратор

Explosive Ammo Enable

Просмотр файла

Плагин возвращает разрывные боеприпасы на серверы со Сражением.

В конфигурации можно выставить шанс дропа разрывных боеприпасов либо на 100%, либо на 50%.


 

Мир изменился, он стал другим!

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
В 26.09.2020 в 18:30, Ryancoolround сказал:

Попробуйте, вроде не крашит. Надеюсь на обратную связь.

Я не смогла скачать, мне пишет вложение недоступно.

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

Explosive Ammo Enable

Просмотр файла

Плагин "Explosive Ammo Enable" возвращает возможность использования разрывных патронов в режиме Сражение игры Left 4 Dead 2. Этот функционал обогащает геймплей, предоставляя игрокам дополнительные тактические возможности в борьбе с зараженными. Разрывные патроны создают эффективное пространство контроля и стратегического планирования, что делает игровой опыт более динамичным и захватывающим.

Примечание: Плагин предназначен для использования только в режиме Сражение игры Left 4 Dead 2.


 

1 час назад, Darya сказал:

Я не смогла скачать, мне пишет вложение недоступно.

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

Мир изменился, он стал другим!

Ссылка на комментарий
Поделиться на другие сайты

  • Лучшие авторы

    На этой неделе никто репутацию не получал

  • Последние достижения

    • Blacky получил значок
      Подмастерье
    • GAMADA повысил звание
      Lvl 1
    • Darya повысил звание
      Lvl 14
    • Mad.Eagle повысил звание
      Lvl 5
    • Mad.Eagle повысил звание
      Lvl 4
×
×
  • Создать...