Как сделать свою модель для любой привилегии?
В данной статье я расскажу вам, как можно поставить свою модель игрока для любой привилегии.Например у вас 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
Минимальная длина комментария - 50 знаков. комментарии модерируются
Смотрите также:
Как сделать свои звуки для зомби? (ZP 4.3)
В данной статье, я покажу как можно добавить свои звуки для зомби класса
(ZP) Как добавить эффекты к гранатам для ZP?
Как добавить эффекты к гранатам для ZP?