Не кэшируется спрайт

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Всем привет. Никак не могу прекешировать спрайт, при попытке отобразить спрайт консоль пишет
Late precache of <путь до спрайта>
Использовал PrecacheGeneric/PrecacheDecal
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
@Vit_ amin, покажи как именно прекешил и что, и когда
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
PHP:
public void OnMapStart()
{
 PrecacheDecal("materials/sprites/l4d_zone_1.vtf", true);
 PrecacheDecal("materials/sprites/l4d_zone_1.vmt", true);
 ...
}

public void Event_TankSpawn(Event event, const char[] name, bool silent)
{
 int iEntity = CreateEntityByName("env_sprite_oriented");
 if (iEntity != -1)
 {
 DispatchKeyValue(iEntity, "rendermode", "5");
 DispatchKeyValue(iEntity, "framerate", "0");
 DispatchKeyValue(iEntity, "model", "materials/sprites/l4d_zone_1.vmt");
 if (DispatchSpawn(iEntity))
 {
 float flOrigin[3];
 GetClientAbsOrigin(client, flOrigin);
 flOrigin[2] += 90.0;
 TeleportEntity(client, flOrigin, NULL_VECTOR, NULL_VECTOR);
 SetVariantString("!activator");
 AcceptEntityInput(client, "SetParent", client, iEntity);
 }
 }
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
@Vit_ amin, надо только vmt прекешить. vtf нет.
и вроде как без папки materials/
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Все равно пишет: Late precache of sprites/l4d_zone_1.vmt
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Через PrecacheModel тоже не работает ... Я вообще не понимаю в чем тут проблема.
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
IsModelPrecached/IsDecalPrecached говрит, что модель не кэширована.
При использование данных KeyValues спрайт пишет ошибку что он даже не прекэширован все равно.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
@Vit_ amin, PrecacheModel("materials/sprites/l4d_zone_1.vmt");
так попробуй
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
Попробуй так:
PHP:
int iDecal = -1;
char sDecal[] = "materials/sprites/l4d_zone_1.vmt";

public void OnMapStart()
{
    iDecal = PrecacheDecal(sDecal, true);
    ...
}

public void Event_TankSpawn(Event event, const char[] name, bool silent)
{
    if(iDecal != -1)
    {
        int iEntity = CreateEntityByName("env_sprite_oriented");
        if (iEntity != -1)
        {
            DispatchKeyValue(iEntity, "rendermode", "5");
            DispatchKeyValue(iEntity, "framerate", "0");
            DispatchKeyValue(iEntity, "model", sDecal);
            if (DispatchSpawn(iEntity))
            {
                float flOrigin[3];
                GetClientAbsOrigin(client, flOrigin);
                flOrigin[2] += 90.0;
                TeleportEntity(client, flOrigin, NULL_VECTOR, NULL_VECTOR);
                SetVariantString("!activator");
                AcceptEntityInput(client, "SetParent", client, iEntity);
                AcceptEntityInput(iEntity, "ShowSprite");
            }
        }
    }
    else PrintToServer("Decal don't exists");

}
 
Последнее редактирование:

Webman

Nevermind
Сообщения
803
Реакции
330
Может быть нужно делать preload? Второй параметр - true в PrecacheModel/Decal/Generic.
Но насколько я помню, прекеш спрайтов я делал через PrecacheModel.
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Попробуй так:
PHP:
int iDecal = -1;
char sDecal[] = "materials/sprites/l4d_zone_1.vmt";

public void OnMapStart()
{
    iDecal = PrecacheDecal(sDecal, true);
    ...
}

public void Event_TankSpawn(Event event, const char[] name, bool silent)
{
    if(iDecal != -1)
    {
        int iEntity = CreateEntityByName("env_sprite_oriented");
        if (iEntity != -1)
        {
            DispatchKeyValue(iEntity, "rendermode", "5");
            DispatchKeyValue(iEntity, "framerate", "0");
            DispatchKeyValue(iEntity, "model", sDecal);
            if (DispatchSpawn(iEntity))
            {
                float flOrigin[3];
                GetClientAbsOrigin(client, flOrigin);
                flOrigin[2] += 90.0;
                TeleportEntity(client, flOrigin, NULL_VECTOR, NULL_VECTOR);
                SetVariantString("!activator");
                AcceptEntityInput(client, "SetParent", client, iEntity);
                AcceptEntityInput(iEntity, "ShowSprite");
            }
        }
    }
    else PrintToServer("Decal don't exists");

}
Console Output: Decal don't exists

Может быть нужно делать preload? Второй параметр - true в PrecacheModel/Decal/Generic.
Но насколько я помню, прекеш спрайтов я делал через PrecacheModel.
Делал через PrecacheModel("materials/sprites/l4d_zone_1.vmt"); все равно не работает
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
Возможно, в .vmt прописан неправильный путь к "$basetexture", в результате чего и не удается прехешировать.
Если же нет, киньте ваши .vmt и .vtf, может ещё что там не так.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
@Vit_ amin, а в vmt правильно путь указан к vtf?

Я тут глянул: если PrecacheDecal(), то нужно указывать путь "sprites/l4d_zone_1.vmt", если PrecacheModel(), то "materials/sprites/l4d_zone_1.vmt".
Попробуй ещё так:
PHP:
int iDecal = -1,
    iModel = -1;

public void OnMapStart()
{
    if((iDecal = PrecacheDecal("sprites/l4d_zone_1.vmt", true)) == -1) PrintToServer("Decal don't exists");
    else PrintToServer("Decal successfully precached");
    if((iDecal = PrecacheDecal("materials/sprites/l4d_zone_1.vmt", true)) == -1) PrintToServer("Model don't exists");
    else PrintToServer("Model successfully precached");
}
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Возможно, в .vmt прописан неправильный путь к "$basetexture", в результате чего и не удается прехешировать.
Если же нет, киньте ваши .vmt и .vtf, может ещё что там не так.
Вложения (я перепроверил все очень тщательно, ошибки точно нету)
@Vit_ amin, а в vmt правильно путь указан к vtf?

Я тут глянул: если PrecacheDecal(), то нужно указывать путь "sprites/l4d_zone_1.vmt", если PrecacheModel(), то "materials/sprites/l4d_zone_1.vmt".
Попробуй ещё так:
PHP:
int iDecal = -1,
    iModel = -1;

public void OnMapStart()
{
    if((iDecal = PrecacheDecal("sprites/l4d_zone_1.vmt", true)) == -1) PrintToServer("Decal don't exists");
    else PrintToServer("Decal successfully precached");
    if((iDecal = PrecacheDecal("materials/sprites/l4d_zone_1.vmt", true)) == -1) PrintToServer("Model don't exists");
    else PrintToServer("Model successfully precached");
}
В обоих случаях * don't exists. (ток у тебя вроде ошибка в коде)
Сделал так:
iDecal = PrecacheDecal("sprites/l4d_zone_1.vmt"); - ошибка
iModel = PrecacheModel("materials/sprites/l4d_zone.vmt"); - ошибка
 

Вложения

  • sprites.7z
    3 КБ · Просмотры: 11

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
Возможно, что модель неправильна залита на сервер (например, не до конца закачалась) или вообще отсутствует, т. к.:
C-подобный:
public OnMapStart()
{
    new iModel = PrecacheModel("materials/sprites/l4d_zone.vmt");
    PrintToServer("%d, %d", iModel, IsModelPrecached("materials/sprites/l4d_zone.vmt"));
}
даёт ответ:
поэтому можно попробовать перезалить модель на сервер ещё раз.
Так же я бы проставил кавычки на всякий случай в vmt:
C-подобный:
Sprite
{
    $basetexture "sprites/l4d_zone_1"
    $spriteorientation "vp_parallel_oriented"
    $spriteorigin "[.5 .5]"
}
И движок l4d точно поддерживает Sprite? Сам не знаю, просто вопрос.
 

FurFur

Участник
Сообщения
153
Реакции
85
Сталкивался когда то с такой проблемой.

Попробуй так:

PHP:
public void OnMapStart()
{
    PrecacheModel("sprites/l4d_zone_1.vmt", true);
}

bool preload обязательно true.
путь указывать без materiales/.

.vtf не кешировать.


DispatchKeyValue(iEntity, "model", "materials/sprites/l4d_zone_1.vmt");

Тут тоже без marerials/,
либо попробуй "model" заменить на "Sprite Name" либо "texture"

Да и не понятно откуда "model", если тут такого не нашел.

Кароче попробуй, только обязательно карту перезагрузи, либо сервер
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Сталкивался когда то с такой проблемой.

Попробуй так:

PHP:
public void OnMapStart()
{
    PrecacheModel("sprites/l4d_zone_1.vmt", true);
}

bool preload обязательно true.
путь указывать без materiales/.

.vtf не кешировать.




Тут тоже без marerials/,
либо попробуй "model" заменить на "Sprite Name" либо "texture"

Да и не понятно откуда "model", если тут такого не нашел.

Кароче попробуй, только обязательно карту перезагрузи, либо сервер
PrecacheModel("sprites/l4d_zone_1.vmt", true); - работает !!! Спасибо
 
Сверху Снизу