Брошенная модель гранаты

schweppesss?

писка
Сообщения
153
Реакции
139
Здравствуйте, хочу поставить модели гранат на сервер в плагин custom weapons от FrozDark.
Модель от первого лица - "view_model"
Модель от 3-его лица - "world_model"
Брошенная модель гранаты - ???
Как мне указать модель брошенной гранаты ?
 
Решение
Примерно вот так (это образец кода):
C-подобный:
static const char
    MDL[][] =
{// модели
    "models/nades/0.mdl",    // decoy
    "models/nades/1.mdl",    // flashbang
    "models/nades/2.mdl",    // hegrenade
    "models/nades/3.mdl",    // molotov
    "models/nades/4.mdl",    // smokegrenade
    "models/nades/5.mdl",    // tagrenade

 // записи ниже в этом массиве нужны только, если другой плагин не добавляет все файлы моделей и их текстуры в прекеш и загрузку

// остальные файлы моделей
    "models/nades/0.dx90.vtx",    // decoy
    "models/nades/0.phy",
    "models/nades/0.vtx",
    "models/nades/0.vvd",
/* тут должны быть файлы остальных гранат */
    "models/nades/5.dx90.vtx",    // tagrenade
    "models/nades/5.phy"...

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
у модели брошенных гранат класс энтити заканчивается на «_projectile»
Сообщения автоматически склеены:

а моделька там только одна (вид только для мира)
 

schweppesss?

писка
Сообщения
153
Реакции
139
у модели брошенных гранат класс энтити заканчивается на «_projectile»
Сообщения автоматически склеены:

а моделька там только одна (вид только для мира)
Извини, но я не понял. Если не сложно, то можешь объяснить пожалуйста
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
Примерно вот так (это образец кода):
C-подобный:
static const char
    MDL[][] =
{// модели
    "models/nades/0.mdl",    // decoy
    "models/nades/1.mdl",    // flashbang
    "models/nades/2.mdl",    // hegrenade
    "models/nades/3.mdl",    // molotov
    "models/nades/4.mdl",    // smokegrenade
    "models/nades/5.mdl",    // tagrenade

 // записи ниже в этом массиве нужны только, если другой плагин не добавляет все файлы моделей и их текстуры в прекеш и загрузку

// остальные файлы моделей
    "models/nades/0.dx90.vtx",    // decoy
    "models/nades/0.phy",
    "models/nades/0.vtx",
    "models/nades/0.vvd",
/* тут должны быть файлы остальных гранат */
    "models/nades/5.dx90.vtx",    // tagrenade
    "models/nades/5.phy",
    "models/nades/5.vtx",
    "models/nades/5.vvd",

// текстуры
    "materials/models/nades/0.vmt",    // decoy
    "materials/models/nades/0.vtf",
/* тут должны быть файлы остальных гранат */
    "materials/models/nades/5.vmt",    // tagrenade
    "materials/models/nades/5.vtf"
};
/*
classname                    0    1    2    3    4    5    6

breachcharge_projectile    =    b    r    e    a    c    h    c
bumpmine_projectile        =    b    u    m    p    m    i    n
decoy_projectile        =    d    e    c    o    y    _    p
flashbang_projectile    =    f    l    a    s    h    b    a
hegrenade_projectile    =    h    e    g    r    e    n    a
molotov_projectile        =    m    o    l    o    t    o    v
smokegrenade_projectile    =    s    m    o    k    e    g    r
snowball_projectile        =    s    n    o    w    b    a    l
tagrenade_projectile    =    t    a    g    r    e    n    a
*/

public OnMapStart()
{
    int i;
    for(; i < 6; i++)
    {
        PrecacheModel(MDL[i], true);
        AddFileToDownloadsTable(path);   // необходимо только, если другой плагин не добавляет все файлы моделей и их текстуры в прекеш и загрузку
    }
    for(; i < sizeof(MDL); i++) AddFileToDownloadsTable(path);   // необходимо только, если другой плагин не добавляет все файлы моделей и их текстуры в прекеш и загрузку
}

public void OnEntityCreated(int ent, const char[] cls)
{
    static int len;
    if((len = strlen(cls)) < 16 || len > 23 || StrContains(cls[5], "_projectile", false) == -1)
        return;

    switch(cls[0])
    {
        case 'd':    SDKHook(ent, SDKHook_SpawnPost, OnSpawned_Decoy);
        case 'f':    SDKHook(ent, SDKHook_SpawnPost, OnSpawned_Flash);
        case 'h':    SDKHook(ent, SDKHook_SpawnPost, OnSpawned_HE);
        case 'm':    SDKHook(ent, SDKHook_SpawnPost, OnSpawned_Molotov);
        case 's':    if(cls[1] == 'm') SDKHook(ent, SDKHook_SpawnPost, OnSpawned_Smoke);
        case 't':    SDKHook(ent, SDKHook_SpawnPost, OnSpawned_TAG);
    }
    SDKHook(ent, SDKHook_SpawnPost, OnProjectileSpawned);
}

public void OnSpawned_Decoy(int ent)
{
    SetEntityModel(ent, MDL[0]);
}

public void OnSpawned_Flash(int ent)
{
    SetEntityModel(ent, MDL[1]);
}

public void OnSpawned_HE(int ent)
{
    SetEntityModel(ent, MDL[2]);
}

public void OnSpawned_Molotov(int ent)
{
    SetEntityModel(ent, MDL[3]);
}

public void OnSpawned_Smoke(int ent)
{
    SetEntityModel(ent, MDL[4]);
}

public void OnSpawned_TAG(int ent)
{
    SetEntityModel(ent, MDL[5]);
}
Это если будет использоваться только по одной модели для каждой из гранат и будут сразу меняться все модели брошенных гранат.
 
Решение
Сверху Снизу