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

Разрывные боеприпасы в Сражении ([L4D2] Explosive Ammo Enable)


Ry@N

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

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

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

#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 минут назад, Чат Бот сказал:

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

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

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

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

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

Гость
Эта тема закрыта для публикации ответов.
  • Похожий контент

    • Автор KRUTIK
      Количество выдачи патронов и убийство заражённых, можно настраивать в исходнике...
      За убийство 20 заражённых, игроку выдаются рандомно. 
      50 зажигательных патронов
      50 разрывных патронов
      50 экспансивных патронов
      l4d2_specialammo.smx l4d2_specialammo.sp
    • Автор Ry@N
      Плагин возвращает в Сражение звуки, которые лежат в папке C:\MineGaming\steamapps\common\Left 4 Dead 2\left4dead2\sound\music\bacteria, и которые успешно однажды вырезали из Сражения. Просто поместите файл l4d2_bacteria.smx в папку /left4dead2/addons/sourcemod/plugins и перезапустите сервер.
       
      l4d2_bacteria.sp l4d2_bacteria.smx
  • Если у пчелы аллергия на пыльцу; заболеет ли она крапивницей?

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...