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

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

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

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

#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%.


 

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...