Мониторинг и Раскрутка серверов CS 1.6

Как сделать свою модель для любой привилегии?

Как сделать свою модель для любой привилегии? для CS 1.6

В данной статье я расскажу вам, как можно поставить свою модель игрока для любой привилегии.Например у вас 5 привилегий и у каждой привилегии будет своя модель игрока!

Открываем исходник главного мода и ищем такую строку:

// Customization vars
Перед ней добавляем:

#define MYMODELFLAG                    ADMIN_LEVEL_C
где ADMIN_LEVEL_C - это флаг, у которого будет заданная вами модель.


После // Customization vars добавляем:

new Array:model_myname, Array:g_modelindex_myname;

Далее ищем такую строку:

// Initialize a few dynamically sized arrays

И после нее добавляем:

model_myname = ArrayCreate(32, 1);
g_modelindex_myname = ArrayCreate(1, 1);

Двигаемся дальше и ищем:

// Custom weapon models

перед ней добавляем:

for (i = 0; i < ArraySize(model_myname); i++)
{
    ArrayGetString(model_myname, i, buffer, charsmax(buffer))
    format(buffer, charsmax(buffer), "models/player/%s/%s.mdl", buffer, buffer)
    ArrayPushCell(g_modelindex_myname, engfunc(EngFunc_PrecacheModel, buffer))
    if (g_force_consistency == 1) force_unmodified(force_model_samebounds, {0,0,0}, {0,0,0}, buffer)
    if (g_force_consistency == 2) force_unmodified(force_exactfile, {0,0,0}, {0,0,0}, buffer)
}

Теперь ищем такие строки:

if (g_handle_models_on_separate_ent)
{
    // Set the right model


и заменяем этот код:

if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
    iRand = random_num(0, ArraySize(model_admin_human) - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

на этот:

if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
    iRand = random_num(0, ArraySize(model_admin_human) - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}
else if (get_user_flags(id) & MYMODELFLAG)
{
    iRand = random_num(0, ArraySize(model_myname) - 1)
    ArrayGetString(model_myname, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_myname, iRand))
}

Листаем чуть-чуть ниже и видим такой код:

// Set the right model, after checking that we don't already have it
if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
    size = ArraySize(model_admin_human)
    for (i = 0; i < size; i++)
    {
        ArrayGetString(model_admin_human, i, tempmodel, charsmax(tempmodel))
        if (equal(currentmodel, tempmodel)) already_has_model = true
    }
if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

}


и заменяем его на этот:

// Set the right model, after checking that we don't already have it
if (get_user_flags(id) & MYMODELFLAG)
{
size = ArraySize(model_myname)
for (i = 0; i < size; i++)
{
ArrayGetString(model_myname, i, tempmodel, charsmax(tempmodel))
if (equal(currentmodel, tempmodel)) already_has_model = true
}

if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_myname, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_myname, iRand))
}

} else if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS])) { size = ArraySize(model_admin_human) for (i = 0; i < size; i++) { ArrayGetString(model_admin_human, i, tempmodel, charsmax(tempmodel)) if (equal(currentmodel, tempmodel)) already_has_model = true }

if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

}


Уже почти закончили, ищите такой код:

if (g_handle_models_on_separate_ent)
{
// Set the right model
if (g_survivor[id])
{
iRand = random_num(0, ArraySize(model_survivor) - 1)
ArrayGetString(model_survivor, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_survivor, iRand))
}
else
{
if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
iRand = random_num(0, ArraySize(model_admin_human) - 1)
ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}
else
{
iRand = random_num(0, ArraySize(model_human) - 1)
ArrayGetString(model_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_human, iRand))
}
}

В этом блоке кода мы заменяем только этот код:

if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
iRand = random_num(0, ArraySize(model_admin_human) - 1)
ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

на этот:

if (get_user_flags(id) & MYMODELFLAG)
{
iRand = random_num(0, ArraySize(model_myname) - 1)
ArrayGetString(model_myname, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_myname, iRand))
}
else if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
iRand = random_num(0, ArraySize(model_admin_human) - 1)
ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

Листаем немного ниже и находим такой код:

if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS]))
{
size = ArraySize(model_admin_human)
for (i = 0; i < size; i++)
{
ArrayGetString(model_admin_human, i, tempmodel, charsmax(tempmodel))
if (equal(currentmodel, tempmodel)) already_has_model = true
}

if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

}


и заменяем его на такой:

if (get_user_flags(id) & MYMODELFLAG)
{
size = ArraySize(model_myname)
for (i = 0; i < size; i++)
{
ArrayGetString(model_myname, i, tempmodel, charsmax(tempmodel))
if (equal(currentmodel, tempmodel)) already_has_model = true
}

if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_myname, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_myname, iRand))
}

} else if (get_pcvar_num(cvar_adminmodelshuman) && (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MODELS])) { size = ArraySize(model_admin_human) for (i = 0; i < size; i++) { ArrayGetString(model_admin_human, i, tempmodel, charsmax(tempmodel)) if (equal(currentmodel, tempmodel)) already_has_model = true }

if (!already_has_model)
{
    iRand = random_num(0, size - 1)
    ArrayGetString(model_admin_human, iRand, g_playermodel[id], charsmax(g_playermodel[]))
    if (g_set_modelindex_offset) fm_cs_set_user_model_index(id, ArrayGetCell(g_modelindex_admin_human, iRand))
}

}


Выходим на финиш и последнее, ищем такую строку:

else if (equal(key, "ADMIN HUMAN"))

и перед ней добавляем:

else if (equal(key, "MYNAMEMODEL HUMAN"))
{
// Parse models
while (value[0] != 0 && strtok(value, key, charsmax(key), value, charsmax(value), ','))
{
// Trim spaces
trim(key)
trim(value)

    // Add to models array
    ArrayPushString(model_myname, key)
}

}



Все с исходником мы закончили работу. Теперь его можно компилировать и заменять амхх файл.

Осталось зайти в zombieplague.ini
И там где
ADMIN HUMAN =
ниже добавляем:
MYNAMEMODEL HUMAN = название модели
Сохраняем и закрываем файл. Все, теперь у игроков с флагом MYMODELFLAG будет установлена модель MYNAMEMODEL HUMAN из zombieplague.ini


Теги:

свою модель любой привилегии модель игрока CS 1.6 ZP

Опубликовал
Сборки CS 1.6
Рейтинг
Просмотры
188 раз.
Скачан
0 раз.

Отзывы