Большая часть админлоадеров не удаляет стандартный флаг игрока при выдаче новых. Полагаю такая же ситуация и у вас. Поэтому всегда отрабатывает первое условие:
Код:
if (flags & user)
BIT_ADD(g_iBitClientUser, id);
// дальше не дойдет просто...
else if (flags & admin)
BIT_ADD(g_iBitClientAdmin, id);
else if (flags & vip)
BIT_ADD(g_iBitClientVip, id);
else if (flags & lady)
BIT_ADD(g_iBitClientLady, id);
Необходимо проверять на юзера всегда в самом конце...
Код:
if (flags & admin)
BIT_ADD(g_iBitClientAdmin, id);
else if (flags & vip)
BIT_ADD(g_iBitClientVip, id);
else if (flags & lady)
BIT_ADD(g_iBitClientLady, id);
// если надо просто выдать всем остальным (а оно у вас так и есть при ADMIN_USER) то лучше использовать оператор else, и ничего не надо больше проверять
// else if (flags & user)
else
BIT_ADD(g_iBitClientUser, id);
И еще вы упустили один момент:
Код:
public resetBit(id)
{
BIT_SUB(g_iBitCustomModel, id);
BIT_SUB(g_iBitClientAdmin, id);
BIT_SUB(g_iBitClientVip, id);
BIT_SUB(g_iBitClientLady, id);
BIT_SUB(g_iBitClientUser, id); // <===
}
Цитата
И еще хотел спросить: Если у меня там для моделей Админов указан флаг "u" (ADMIN_MENU) а для VIP "t" (ADMIN_LEVEL_H) если я себе пропишу эти два флага, какая модель у меня будет в итоге)? Или кто-то захочет Админ+Вип, и пропишу те два флага, то какая в итоге у человека будет модель?
Сработает первое условие, где присутствует проверка на флаг
u ИЛИ t. В вашем случае:
Код:
if (flags & admin)
BIT_ADD(g_iBitClientAdmin, id);
Отредактировал: JIuXeP, - 17.1.2018, 15:29