
![[TUT] Делаем случайный выбор класса зомби + доступ к меню только для Админов/VIP [ZP 4.3] [TUT] Делаем случайный выбор класса зомби + доступ к меню только для Админов/VIP [ZP 4.3]](https://zombie-mod.com/wp-content/plugins/wp-fastest-cache-premium/pro/images/blank.gif)
Статья о том, как сделать рандомный выбор класса зомби для игрока, а выбор сделать для игрока с определенным админ флагом
![[TUT] Делаем случайный выбор класса зомби + доступ к меню только для Админов/VIP [ZP 4.3] [TUT] Делаем случайный выбор класса зомби + доступ к меню только для Админов/VIP [ZP 4.3]](https://zombie-mod.com/wp-content/plugins/wp-fastest-cache-premium/pro/images/blank.gif)
Автор: Джейк
Уровень сложности: легкий
Итак, по многочисленным просьбам, решил написать данную статью, а точнее как сделать рандомный выбор класса зомби после заражения + доступ к выбору класса только для игрока с определенным админ флагом.
И так, приступим:
Шаг 1
Отрываем ваш исходник zombie_plague. Там ищем такие строки
#define PL_ACTION g_menu_data[id][0]
После нее добавляем
#define ADMIN_FLAG ADMIN_LEVEL_H // Флаг доступа админа
Тут мы установили какой флаг будет нужен для открытия меню с выбором класса зомби.
Шаг 2
Теперь ищем такую строку:
if (get_pcvar_num(cvar_zclasses))
И после
get_pcvar_num(cvar_zclasses)
добавляем
&& (get_user_flags(id) & ADMIN_FLAG)
И у нас получается что-то, вроде этого
if (get_pcvar_num(cvar_zclasses) && (get_user_flags(id) & ADMIN_FLAG))len += formatex(menu[len], charsmax(menu) - len, "\w1.\w %L^n", id,"MENU_ZCLASS")elselen += formatex(menu[len], charsmax(menu) - len, "\d3. %L^n", id,"MENU_ZCLASS")
Шаг 3
Далее мы ищем функцию
public menu_game(id, key)
В ней ищем строку
if (get_pcvar_num(cvar_zclasses))
Аналогично после
get_pcvar_num(cvar_zclasses)
добавляем
&& (get_user_flags(id) & ADMIN_FLAG)
И у нас получается что-то вроде этого:
if (get_pcvar_num(cvar_zclasses) && (get_user_flags(id) & ADMIN_FLAG))show_menu_zclass(id)elsezp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ZCLASSES")
Шаг 4
Далее ищем функцию
zombieme(id, infector, nemesis, silentmode, rewards)
Находим в ней эту строку
if (g_zombieclassnext[id] == ZCLASS_NONE && get_pcvar_num(cvar_zclasses))
После
get_pcvar_num(cvar_zclasses)
добавляем:
& ADMIN_FLAG
У нас получается, такое:
if (g_zombieclassnext[id] == ZCLASS_NONE && get_pcvar_num(cvar_zclasses) && (get_user_flags(id) & ADMIN_FLAG))set_task(0.2, "show_menu_zclass", id)
Шаг 4
В этой же функции находим строку:
g_zombieclass[id] = g_zombieclassnext[id]
Удаляем её, вместо нее вписываем:
if(get_user_flags(id) & ADMIN_FLAG)g_zombieclass[id] = g_zombieclassnext[id]elseg_zombieclass[id] = random_num(0, ArraySize(g_zclass_name) - 1)
Таким образом, обычному игроку при заражении выбирает рандомный зомби класс, а админу с определенным флагом откроет список выбора зомби класса.
Кому интересно вот флагин доступа:
Источник: