Использую плагин от ws player classes. Тоесть каждому классу присваивается свой скин, но у меня часто падает сервер и посстоянная ошибка в консоле
Как можно максимально оптимизировать код в этом плагине, или в чем может быть причина вывода такой ошибки (лог чистый, только консоль спамит)
Забыл добавить это 2 совмещенных плагина add_to_download и 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]);
}