Удалить декаль с карты зная ее исходный путь в .bsp

Banana

Участник
Сообщения
892
Реакции
113
Есть .bsp карта, мне известно название рекламной декальи (вшитую в .bsp) materials\avd\info.vtf и info.vmt соответственно.
Не хочу заниматься мазохизмом типо наклеить на рекламную декаль свою декаль, а хочу просто чтоб она не отображалась у меня на сервере. Возможно ли зная путь к нужной текстуре ее удалить\не показывать с помощью плагина?
 
Последнее редактирование:

Big

Карты головного мозга💆‍♂️
Сообщения
453
Реакции
252
Можно попробывать через энити спай. Либо через пакрат удалить/заменить текстуру этой детали, но если удалять через него то будет черная текстура и в любом случае название карты придется изменить.
 

Deluks

Верховное DNO|
Сообщения
1,853
Реакции
812
@Banana, А стоит ли заморачиваться? Хоть ктото переходит по ипам или сайтам которые написаны в рекламке или в поиске их ищет?
Я не разу не встречал таких людей. А если реклама мозолит глаза закрой ее фонтаном. =D

А так можно стрипером попробовать вырезать.
 

MagoG

Хочу быть как truyn
Сообщения
896
Реакции
608
@Banana, А стоит ли заморачиваться? Хоть ктото переходит по ипам или сайтам которые написаны в рекламке или в поиске их ищет?
Я не разу не встречал таких людей. А если реклама мозолит глаза закрой ее фонтаном. =D

А так можно стрипером попробовать вырезать.
У меня карт 6 было на сервере раньше, где были чужие сервера/сайты на стенах, по итогу ни один не работал)) Реклама не окупилась ведать))))
 

kilroy

:clown:
Сообщения
1,065
Реакции
606
  • Команда форума
  • #5
Вы бы хоть карту показали или ссылку дали.
 

Banana

Участник
Сообщения
892
Реакции
113
Можно попробывать через энити спай. Либо через пакрат удалить/заменить текстуру этой детали, но если удалять через него то будет черная текстура и в любом случае название карты придется изменить.
По сути вы предлагаетк перекомпилировать карту с заменой текстуры, на сколько мне известно перекомпиляция карт может что то поломать если карта от минигейм сервера например.
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
@Banana, За $$ любой каприз. Могу убрать любую рекламу с карты, даже если эта текстурка/декаль(все равно) , но только если реклама не сама карта( типо реклама сделана из стен/брашей каких-нибудь) хотя если будет сумма интересная, придумал бы как и такую убрать ) Без перекомпиляции конечно.
 

Jugheadbomb

CTFPlayer
Сообщения
168
Реакции
24
@Banana можно попробовать вот так:
C++:
#include <sourcemod>
#include <sdktools>

int g_iTable;

public void OnPluginStart()
{
    // Не знаю какой из них нужен, но думаю сойдет хук на всех
    AddTempEntHook("BSP Decal", TE_OnDecal);
    AddTempEntHook("World Decal", TE_OnDecal);
    AddTempEntHook("Entity Decal", TE_OnDecal);
}

public void OnMapStart()
{
    g_iTable = FindStringTable("decalprecache");
}

public Action TE_OnDecal(const char[] sName, const int[] clients, int numClients, float flDelay)
{
    int nIndex = TE_ReadNum("m_nIndex");

    // Можно еще попробовать вот так:
    //if (nIndex == PrecacheDecal("avd/info"))
    //    return Plugin_Handled;

    char sPath[64];
    ReadStringTable(g_iTable, nIndex, sPath, sizeof(sPath));

    if (StrEqual(sPath, "avd/info")) // или StrContains(sPath, "avd/info") == 0
        return Plugin_Handled;

    return Plugin_Continue;
}
 

Banana

Участник
Сообщения
892
Реакции
113
@Banana, За $$ любой каприз. Могу убрать любую рекламу с карты, даже если эта текстурка/декаль(все равно) , но только если реклама не сама карта( типо реклама сделана из стен/брашей каких-нибудь) хотя если будет сумма интересная, придумал бы как и такую убрать ) Без перекомпиляции конечно.
я знаю что могу на тебя положиться в случае чего) но пока помудрю сам D
Сообщения автоматически склеены:

@Banana можно попробовать вот так:
C++:
#include <sourcemod>
#include <sdktools>

int g_iTable;

public void OnPluginStart()
{
    // Не знаю какой из них нужен, но думаю сойдет хук на всех
    AddTempEntHook("BSP Decal", TE_OnDecal);
    AddTempEntHook("World Decal", TE_OnDecal);
    AddTempEntHook("Entity Decal", TE_OnDecal);
}

public void OnMapStart()
{
    g_iTable = FindStringTable("decalprecache");
}

public Action TE_OnDecal(const char[] sName, const int[] clients, int numClients, float flDelay)
{
    int nIndex = TE_ReadNum("m_nIndex");

    // Можно еще попробовать вот так:
    //if (nIndex == PrecacheDecal("avd/info"))
    //    return Plugin_Handled;

    char sPath[64];
    ReadStringTable(g_iTable, nIndex, sPath, sizeof(sPath));

    if (StrEqual(sPath, "avd/info")) // или StrContains(sPath, "avd/info") == 0
        return Plugin_Handled;

    return Plugin_Continue;
}
проверю, о результате сообщу. Спасибо
Сообщения автоматически склеены:

@Banana можно попробовать вот так:
C++:
#include <sourcemod>
#include <sdktools>

int g_iTable;

public void OnPluginStart()
{
    // Не знаю какой из них нужен, но думаю сойдет хук на всех
    AddTempEntHook("BSP Decal", TE_OnDecal);
    AddTempEntHook("World Decal", TE_OnDecal);
    AddTempEntHook("Entity Decal", TE_OnDecal);
}

public void OnMapStart()
{
    g_iTable = FindStringTable("decalprecache");
}

public Action TE_OnDecal(const char[] sName, const int[] clients, int numClients, float flDelay)
{
    int nIndex = TE_ReadNum("m_nIndex");

    // Можно еще попробовать вот так:
    //if (nIndex == PrecacheDecal("avd/info"))
    //    return Plugin_Handled;

    char sPath[64];
    ReadStringTable(g_iTable, nIndex, sPath, sizeof(sPath));

    if (StrEqual(sPath, "avd/info")) // или StrContains(sPath, "avd/info") == 0
        return Plugin_Handled;

    return Plugin_Continue;
}
неа, vmt карты не хукаются вообще.
Сообщения автоматически склеены:

В хаммере посмотрел это сущность info_overlay ... но вот как получить ее индекс зная ее путь?
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
В хаммере посмотрел это сущность info_overlay ... но вот как получить ее индекс зная ее путь?
Note.png
Note:
This is an internal entity. When the map is compiled by VBSP it is processed and then removed: it does not exist when the map is running.
Warning.png
Warning:
If you carve, clip, or otherwise change the shape of a brush, you will have to update an overlay with the new brush face(s) id. Use the Check for Problems tool to see which overlays are missing faces.
The info_overlays are all packed into a special lump in the BSP file. To enable accesses by name, a info_overlay_accessor entity is created in the compiled map, which translates targetnames to info_overlay ID numbers.
 
Сверху Снизу