Глянул код: ни в одной из версий файл оверлея не добавляется в загузку, только прекеш делается.
Емнип,
IsModelPrecached()
использовать смысла нет (
не помню работает ли эта функция ещё в новых версиях SM): если модель кеширована, то
PrecacheModel()
просто вернёт индекс ранее кешированой этой же модели/текстуры.
В общем попробуй такой вариант:
#pragma semicolon 1
#pragma newdecls required
#include <sdktools_stringtables>
static const char OVERLAY[] = "materials/overlays/путь.vmt"; // путь должен начинаться с "materials/overlays/"
Handle hTimer;
public void OnPluginStart()
{
HookEvent("round_freeze_end", Event_Start, EventHookMode_PostNoCopy);
}
public void OnMapStart()
{
DeleteTimer();
PrecacheDecal(OVERLAY[10], true);
AddFileToDownloadsTable(OVERLAY);
}
public void Event_Start(Event event, const char[] name, bool dontBroadcast)
{
DeleteTimer();
ShowOverlayToAll(OVERLAY[10]);
}
public Action Timer_HideOverlay(Handle timer)
{
ShowOverlayToAll();
hTimer = null;
return Plugin_Stop;
}
void ShowOverlayToAll(const char[] path = "")
{
for(int i; ++i <= MaxClients;) if(IsClientInGame(i) && !IsClientSourceTV(i))
ClientCommand(i, "r_screenoverlay \"%s\"", path);
if(path[0]) hTimer = CreateTimer(3.0, Timer_HideOverlay);
}
void DeleteTimer()
{
if(hTimer)
{
CloseHandle(hTimer);
hTimer = null;
}
}