Создать акаунт

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


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

В данной статье я расскажу вам, как можно поставить свою модель игрока для любой привилегии.Например у вас 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 знаков. комментарии модерируются

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Смотрите также: