Оптимизировать плагин моделей.

pokypka20

Участник
Сообщения
244
Реакции
31
Использую плагин от ws player classes. Тоесть каждому классу присваивается свой скин, но у меня часто падает сервер и посстоянная ошибка в консоле
PHP:
ERROR: Tried to SetParentAttachment for entity info_particle_system (CSSParticle), but it has no attachment

Как можно максимально оптимизировать код в этом плагине, или в чем может быть причина вывода такой ошибки (лог чистый, только консоль спамит)

PHP:
#pragma semicolon 1
#include <sdktools_functions>
#include <sdktools_stringtables>

new String:wS_ModeL[9][250], Handle:wS_Cvar[9], bool:g_Enabled = false;

#define PATH_SIZE 512
#define FILE_SIZE 256

public OnPluginStart()
{
	RegServerCmd("dl", add_to_download);
	
	wS_Cvar[1] = CreateConVar("model_phoenix",		"");
	wS_Cvar[2] = CreateConVar("model_leet",			"");
	wS_Cvar[3] = CreateConVar("model_arctic",		"");
	wS_Cvar[4] = CreateConVar("model_guerilla",		"");
	wS_Cvar[5] = CreateConVar("model_seal_team",	"");
	wS_Cvar[6] = CreateConVar("model_gsg9",			"");
	wS_Cvar[7] = CreateConVar("model_sas",			"");
	wS_Cvar[8] = CreateConVar("model_gign",			"");

	AutoExecConfig(true, "player_class_model",		"sourcemod");
	HookEvent("player_spawn",	player_spawn);
}

public OnMapStart()
{
	ServerCommand("exec downloads.cfg");
}

public Action:add_to_download(args)
{
	if (args != 1)
		return Plugin_Handled;

	decl String:info[PATH_SIZE];
	if (GetCmdArg(1, info, PATH_SIZE) < 4 || TrimString(info) < 4)
		return Plugin_Handled;

	ReplaceString(info, PATH_SIZE, "\\", "/");

	/////////
	new Handle:dir = OpenDirectory(info);
	if (dir == INVALID_HANDLE)
	{
		AddFileToDownloadsTable(info);
		return Plugin_Handled;
	}

	new dir_strlen = strlen(info);
	if (info[dir_strlen-1] == '/') info[dir_strlen-1] = '\0';

	decl String:file[PATH_SIZE], FileType:type;
	while (ReadDirEntry(dir, file, FILE_SIZE, type))
	{
		if (type == FileType_File && strlen(file) > 3 && StrContains(file, ".ztmp", false) == -1)
		{
			Format(file, PATH_SIZE, "%s/%s", info, file);
			AddFileToDownloadsTable(file);
		}
	}
	CloseHandle(dir);
	/////////

	return Plugin_Handled;
}

public OnConfigsExecuted()
{
	g_Enabled = false;
	for (new class = 1; class < 9; class++)
	{
		GetConVarString(wS_Cvar[class], wS_ModeL[class], 250);
		if (wS_ModeL[class][0] == 'm' && FileExists(wS_ModeL[class]))
		{
			PrecacheModel(wS_ModeL[class], true);
			g_Enabled = true;
		}
		else
			wS_ModeL[class][0] = '\0';
	}
}

public player_spawn(Handle:event, const String:name[], bool:silent)
{
	if (!g_Enabled)
		return;

	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	new xclass = GetEntProp(client, Prop_Send, "m_iClass");
	if (0 < xclass < 9 && wS_ModeL[xclass][0] == 'm') SetEntityModel(client, wS_ModeL[xclass]);
}
Забыл добавить это 2 совмещенных плагина add_to_download и player_classes при удалении плагина всё норм, помогите максимально оптимизировать плагин, или устранить ошибку.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Что-то мне подсказывает, что или ошибка не от этого плагина, или на скилете не все аттачменты присутствуют. Хотя партиклы к моделе игрока не прикрепляются как бы. У тебя есть какой-нибудь плагин эффектов? Или плагин с эффектами.
 
Сверху Снизу