Не показывается картинка оверлея. Не пойму в чем проблема.

ChaFanK

Участник
Сообщения
6
Реакции
0
Операционная система
Windows
Подскажите в чем ошибка? Есть два кода но ни один из них не показывает оверлей. Никаких конфликтов с другими плагинами нету. Никаких ошибок в логах нету и компилиться без проблем. Скачку vtf и vmt осуществляю через другой плагин.
В архиве две версии выбрать одну из них для проверки.
 

Вложения

  • rs13.rar
    146.1 КБ · Просмотры: 13

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
файл оверлея скачивается клиентом?
ошибки в логах sm есть?
ну и ещё новый оверлей может перебивать предыдущий
 

ChaFanK

Участник
Сообщения
6
Реакции
0
Нету ошибок вообще никаких в v1, а в v2 вот это. Но все ровно ничего не показывает в обоих версиях.

L 07/04/2024 - 18:50:37: [SM] Blaming: rs13.smx
L 07/04/2024 - 18:50:37: [SM] Call stack trace:
L 07/04/2024 - 18:50:37: [SM] [0] SetEntProp
L 07/04/2024 - 18:50:37: [SM] [1] Line 40, D:\Games\Servers\steamcmd\steamapps\common\CSSDS\cstrike\addons\sourcemod\scripting\rs13.sp::CreateOverlay
L 07/04/2024 - 18:50:37: [SM] [2] Line 30, D:\Games\Servers\steamcmd\steamapps\common\CSSDS\cstrike\addons\sourcemod\scripting\rs13.sp::DisplayOverlay
L 07/04/2024 - 18:50:37: [SM] [3] Line 22, D:\Games\Servers\steamcmd\steamapps\common\CSSDS\cstrike\addons\sourcemod\scripting\rs13.sp::Event_RoundStart

Нету других оверлеев на старте карты. Все на что было подозрение я убирал перезапускал ничего не помогло. vtf и vmt на время теста взял с другого мода на котором они работали. Как и писал при компиляции ошибок нету.
 

Synd1qate

Участник
Сообщения
745
Реакции
259
Первая версия и не будет работать, так как там
C-подобный:
#define OVERLAY_IMAGE "materials/chafank/overlay/round_start.vmt"
А вообще поставьте [OS] Overlay System
 

ChaFanK

Участник
Сообщения
6
Реакции
0
#define OVERLAY_IMAGE "materials/chafank/overlay/rs13.vmt" исправил тоже не фурычит. Мне бы причину понять в чем ошибка. На будущие, что бы знать. Если не получиться исправить никак поставлю тот плагин.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Глянул код: ни в одной из версий файл оверлея не добавляется в загузку, только прекеш делается.

Емнип, IsModelPrecached() использовать смысла нет (не помню работает ли эта функция ещё в новых версиях SM): если модель кеширована, то PrecacheModel() просто вернёт индекс ранее кешированой этой же модели/текстуры.

В общем попробуй такой вариант:
C-подобный:
#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;
    }
}
 

ChaFanK

Участник
Сообщения
6
Реакции
0
Спасибо тебе огромное все отлично работает и путь можно любой выставлять.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Глянул код: ни в одной из версий файл оверлея не добавляется в загузку, только прекеш делается.

Емнип, IsModelPrecached() использовать смысла нет (не помню работает ли эта функция ещё в новых версиях SM): если модель кеширована, то PrecacheModel() просто вернёт индекс ранее кешированой этой же модели/текстуры.

В общем попробуй такой вариант:
C-подобный:
#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;
    }
}
А почему не delete?
 

ChaFanK

Участник
Сообщения
6
Реакции
0
Добавил пару строк что бы вместо одного три оверлея по порядку показывало. Если кому то понадобиться, пользуйтесь.
 

Вложения

  • rs13v1.sp
    1.3 КБ · Просмотры: 2

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@ChaFanK, тогда уж так: список оверлеев прописывается в конфиг, а плагин читает этот конфиг при каждой смене карты.
Сам конфиг размещать в .../addons/sourcemod/configs/.
Количество оверлеев ограничено только количеством раундов до смены/перезагрузки карты (после этого оверлеи просто будут с самого первого в конфиге запускаться).
Ну и пути в конфиге проверяются на длину имени (не менее 1 символа) и наличия правильного расширения (.vmt, хотя можно сделать чтобы плагин его сам добавлял, но так можно забыть к какому файлу путь указывать).
При чтении конфига, если будут обнаружены какие-то проблемы (нет конфига, он пустой или ни одной корректной записи в нём), то плагин напишет об этом в лог ошибок SM. Ну и если несколько раз написать один и тот же путь, то он будет использоваться только 1 раз.
 

Вложения

  • round_start_overlays 1.0.0_05.07.2024.sp
    2.4 КБ · Просмотры: 5
  • round_start_overlays.ini
    332 байт · Просмотры: 2
Последнее редактирование:
Сверху Снизу