• Для того, чтобы добавить "ресурс" на форум, требуется перейти по ссылке и создать ресурс в нужной категории форума.
Иконка ресурса

World Model Group 1.2.0

Нет прав для скачивания

twisterniq

Модератор
Скриптер
Сообщения
99
Реакции
77
twisterniq добавил(а) новый ресурс:

World Model Group - Заменяет все модели оружия на земле на одну, чтобы игра загружала меньше файлов моделей.

Этот плагин использует 1 модель вместо 32 для установки моделей что лежат на земле: все оружия, броня, бомба, щит, гранаты и щипцы. Также, он поддерживает кастомные модели оружий, так как проверяет название модели перед заменой, если оно соответствует оригиналу то только в этом случае заменяет.

Этот плагин особенно полезен для модовых серверов, таких как zombie, jail, deathrun и другие, где используется много разных ресурсов и намного чаще достигается лимит моделей.

Список заменяемых...

Узнать больше об этом ресурсе...
 
Установил данный плагин, но количество моделей в прокеше так и не изменилось. Как было 392, так и есть 392.
 
Установил данный плагин, но количество моделей в прокеше так и не изменилось. Как было 392, так и есть 392.
в общем и целом этот плагин не блокирует дефолтные модели, а выставляет объединенную w_ модель с дефолтными бадигруппами
используй ссылку выше, чтобы блокировать прекеш моделей
 
Possible to make this plugin and model for p_ and v_ default models replacement?
 
а вот с v_ непонятно, ибо надо с анимациями думать.
Одну модель не сложно создать со всеми v_ оружиями и анимациями.
Просто анимации нужно уже пихать с другими названиями, ибо всё там повторяется - deploy/reload/...
Там сама реализация плагина достаточно сложная,что-бы оно работало нормально в игре
Плагину нужно понимать конкретные анимации под разные пушки,всякие деплои,сбросы,стрельба..
Я видел это только у одного человека и то,он говорил,что там и без того есть нюансы ( но и сам не советовал делать это и ставить на паблики )
На Зомби Моде ксо у его это работало нормально ( как он говорил и я видел без нюансов )
 
Одну модель не сложно создать со всеми v_ оружиями и анимациями.
Просто анимации нужно уже пихать с другими названиями, ибо всё там повторяется - deploy/reload/...
Там сама реализация плагина достаточно сложная,что-бы оно работало нормально в игре
Плагину нужно понимать конкретные анимации под разные пушки,всякие деплои,сбросы,стрельба..
Я видел это только у одного человека и то,он говорил,что там и без того есть нюансы ( но и сам не советовал делать это и ставить на паблики )
На Зомби Моде ксо у его это работало нормально ( как он говорил и я видел без нюансов )
а ты не помнишь, как этот тип бодигруппы менял у v_ модели? А то я повтыкал вечерок так и не смог способ найти, на разных форумах пишут, что это невозможно из-за того что бодигруппу у v_ модели определяет клиент и бе ме, ну я и сдался, а сейчас ты мне надежду подарил. И кста вообще странная штука творится с бодигруппами у v_, есть модель с 6ю бодигруппами и вот ставлю я эту модель(к примеру set_pev(iPlayerId, pev_viewmodel, g_iKnife);) и почему то в idle и draw анимке используется 2ая саб модель, а вот для всех других анимаций 0ая. Ересь одним слово, допускаю, что я чёт не правильно делаю, но я буквально просто делаю set_pev(iPlayerId, pev_viewmodel, g_iKnife)
 
@xisray, Если интересно касательно модели - то вот
Если хочешь больше подробностей - пиши в ТГ ( если не отошёл от дел ещё он - а это было уже )
@Spaceman2
 

Вложения

So, anyone interested in creating p_ ?
It would release alot of free space for more resources (custom skins, etc..)
 
So, anyone interested in creating p_ ?
It would release alot of free space for more resources (custom skins, etc..)
в целом плагин уже есть

нужно только сделать модель
 
@xisray,
Вот,если интересно - можешь посовать дальше с тем файлом выше
Мне было интересно,насколько будет это возможно
Работает всё - кроме стрельбы ( берёт всё с 0 и перебрасывает на M249 c AK47 ).
Но это и при cl_lw 0 ( Ибо если 1 - то idle и reload перебрасывает также )

C-подобный:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>

new const V_MODEL[] = "models/v_model3_21.mdl";

#define MAX_SHOOTS 3

enum _:WeaponData
{
    WPN_ID,                           // ID оружия (CSW_*)
    WPN_BODY,                         // Номер субмодели (body)
    ANIM_DRAW,                        // Анимация доставания
    STD_SHOTS[MAX_SHOOTS],            // Стандартные анимации выстрела для отлова
    CUSTOM_SHOTS[MAX_SHOOTS],         // Соответствующие им кастомные анимации
    ANIM_RELOAD,                      // Анимация перезарядки
    ANIM_IDLE                         // Анимация покоя
}

// Если какая-то анимация не нужна, ставим -1.
new const g_WeaponSettings[][WeaponData] =
{
// ID оружия | Субмодель | Доставание | Пары выстрелов (до 3 пар: {станд}, {кастом}) | Перезарядка | Покой (Idle)
    {
        CSW_AK47, 0,     2,             {3, 4, 5},      {3, 4, 5},              1,         8
    },
    {
        CSW_M249, 8,     29,             {1, 2, -1},      {25, 26, -1},            28,         24
    }
};

const m_pPlayer = 41;
const m_flTimeWeaponIdle = 48;
const m_fInReload = 54;       
const XTRA_OFS_WEAPON = 4;

public plugin_init()
{
    register_plugin("Custom Submodel Weapons (Fixed)", "2.1", "Gemini");

    new weapon_name[32];
    for (new i = 0; i < sizeof(g_WeaponSettings); i++) {
        get_weaponname(g_WeaponSettings[i][WPN_ID], weapon_name, charsmax(weapon_name));
        
        RegisterHam(Ham_Item_Deploy, weapon_name, "OnItemDeploy_Post", 1);
        RegisterHam(Ham_Weapon_Reload, weapon_name, "OnReload_Post", 1);
        RegisterHam(Ham_Weapon_WeaponIdle, weapon_name, "OnWeaponIdle_Pre", 0);
    RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "OnPrimaryAttack_Pre", 0);
    }
}

public plugin_precache()
{
    precache_model(V_MODEL);
}

public OnItemDeploy_Post(ent)
{
    if (!pev_valid(ent)) return;
    new id = get_pdata_cbase(ent, m_pPlayer, XTRA_OFS_WEAPON);
    if (!is_user_alive(id)) return;

    new wpn_id = cs_get_weapon_id(ent);
    new index = GetWeaponSettingIndex(wpn_id);
    
    if (index != -1) {
        set_pev(id, pev_viewmodel2, V_MODEL);
        set_pev(id, pev_body, g_WeaponSettings[index][WPN_BODY]);
        
        SendWeaponAnim(id, g_WeaponSettings[index][ANIM_DRAW], g_WeaponSettings[index][WPN_BODY]);
        set_pdata_float(ent, m_flTimeWeaponIdle, 1.0, XTRA_OFS_WEAPON);
    }
}

public OnReload_Post(ent)
{
    if (!pev_valid(ent)) return;
    if (!get_pdata_int(ent, m_fInReload, XTRA_OFS_WEAPON)) return;

    new id = get_pdata_cbase(ent, m_pPlayer, XTRA_OFS_WEAPON);
    if (!is_user_alive(id)) return;

    new wpn_id = cs_get_weapon_id(ent);
    new index = GetWeaponSettingIndex(wpn_id);
    
    if (index != -1 && g_WeaponSettings[index][ANIM_RELOAD] != -1) {
        set_pev(id, pev_body, g_WeaponSettings[index][WPN_BODY]);
        SendWeaponAnim(id, g_WeaponSettings[index][ANIM_RELOAD], g_WeaponSettings[index][WPN_BODY]);
        set_pdata_float(ent, m_flTimeWeaponIdle, 2.5, XTRA_OFS_WEAPON);
    }
}

public OnWeaponIdle_Pre(ent)
{
    if (!pev_valid(ent)) return HAM_IGNORED;
    if (get_pdata_float(ent, m_flTimeWeaponIdle, XTRA_OFS_WEAPON) > 0.0) return HAM_IGNORED;

    new id = get_pdata_cbase(ent, m_pPlayer, XTRA_OFS_WEAPON);
    if (!is_user_alive(id)) return HAM_IGNORED;

    new wpn_id = cs_get_weapon_id(ent);
    new index = GetWeaponSettingIndex(wpn_id);
    
    if (index != -1 && g_WeaponSettings[index][ANIM_IDLE] != -1) {
        set_pev(id, pev_body, g_WeaponSettings[index][WPN_BODY]);
        SendWeaponAnim(id, g_WeaponSettings[index][ANIM_IDLE], g_WeaponSettings[index][WPN_BODY]);
        set_pdata_float(ent, m_flTimeWeaponIdle, 5.0, XTRA_OFS_WEAPON);
        
        return HAM_SUPERCEDE;
    }

    return HAM_IGNORED;
}

public OnPrimaryAttack_Pre(ent)
{
    if (!pev_valid(ent)) return HAM_IGNORED;
    
    new id = get_pdata_cbase(ent, m_pPlayer, XTRA_OFS_WEAPON);
    if (!is_user_alive(id)) return HAM_IGNORED;

    new wpn_id = cs_get_weapon_id(ent);
    new index = GetWeaponSettingIndex(wpn_id);
    
    if (index != -1) {
        if (cs_get_weapon_ammo(ent) > 0) {
            set_pev(id, pev_body, g_WeaponSettings[index][WPN_BODY]);
            
            new shoot_anim = g_WeaponSettings[index][CUSTOM_SHOTS][0];
            
            if (shoot_anim != -1) {
                SendWeaponAnim(id, shoot_anim, g_WeaponSettings[index][WPN_BODY]);
                set_pdata_float(ent, m_flTimeWeaponIdle, 1.5, XTRA_OFS_WEAPON);
            }
        }
    }
    
    return HAM_IGNORED;
}

stock GetWeaponSettingIndex(wpn_id)
{
    for (new i = 0; i < sizeof(g_WeaponSettings); i++) {
        if (g_WeaponSettings[i][WPN_ID] == wpn_id) {
            return i;
        }
    }
    return -1;
}

stock SendWeaponAnim(id, anim, body)
{
    set_pev(id, pev_weaponanim, anim);
    set_pev(id, pev_body, body);
    
    message_begin(MSG_ONE, SVC_WEAPONANIM, _, id);
    write_byte(anim);
    write_byte(body);
    message_end();
}
 

Кто просматривает тему

Назад
Верх