Пользователь
- Сообщения
- 182
- Реакции
- 4
Здравствуйте ребята!
Искал на просторах интернета плагин который бы выдавал привилегию ночью и в выходные дни.
Нашел один вариант но он не подошёл по коду. В итоге взялся за написание с нуля. Нашёл пару стоков, пару примеров и понеслась.
Плагин работает, но вот только возник прикол:
- если включён ночной режим и режим на выходных то неправильно даётся флаг, точнее он отбирается.
Можете пожалуйста подсказать как правильно добавить проверки на режимы.
Ну и конечно советы по коду тоже был бы рад услышать!
Искал на просторах интернета плагин который бы выдавал привилегию ночью и в выходные дни.
Нашел один вариант но он не подошёл по коду. В итоге взялся за написание с нуля. Нашёл пару стоков, пару примеров и понеслась.
Плагин работает, но вот только возник прикол:
- если включён ночной режим и режим на выходных то неправильно даётся флаг, точнее он отбирается.
Можете пожалуйста подсказать как правильно добавить проверки на режимы.
Ну и конечно советы по коду тоже был бы рад услышать!
C#:
#include <amxmodx>
#include <reapi>
// Режимы
#define NIGHT_MODE // получаем бесплатно випку ночью
#define WEEKEND_MODE // получаем бесплатно випку в выходные дни
// Флаги
#define GIVE_FLAG ADMIN_LEVEL_H // какой флаг выдавать
#define HAVE_FLAG ADMIN_MENU // кому не выдавать
new bool:is_night_bonus[MAX_CLIENTS+1], bool:is_weekend_bonus[MAX_CLIENTS+1];
new g_szActiveModeStr[64];
#define is_user_privilege(%1) (get_user_flags(%1) & HAVE_FLAG)
public plugin_init()
{
register_plugin("Night & Weekend Bonus", "0.1", "Author");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
}
public client_disconnected(id)
{
is_night_bonus[id] = false;
is_weekend_bonus[id] = false;
}
public CBasePlayer_Spawn(id)
{
#if defined NIGHT_MODE
new szTime[3]
get_time("%H",szTime,2)
new iTime = str_to_num(szTime)
if(!(6 <= iTime <= 18))
{
if(!is_user_privilege(id))
{
remove_user_flags(id, GIVE_FLAG);
set_user_flags(id, ADMIN_USER);
is_night_bonus[id] = false;
}
}
else
{
if(!is_user_privilege(id))
{
remove_user_flags(id, ADMIN_USER);
set_user_flags(id, GIVE_FLAG);
is_night_bonus[id] = true;
copy(g_szActiveModeStr, charsmax(g_szActiveModeStr), "Ночной режим");
if(!is_user_alive(id))
return;
else client_cmd(id, "vipmenu"); client_print_color(id, print_team_default, "^1Вам выдана бесплатная ^4VIP, ^1причина:^4 %s.", g_szActiveModeStr);
}
}
#endif
#if defined WEEKEND_MODE
new iDay;
is_weekend(iDay);
if(iDay == 6 || iDay ==7)
{
if(!is_user_privilege(id))
{
remove_user_flags(id, ADMIN_USER);
set_user_flags(id, GIVE_FLAG);
is_weekend_bonus[id] = true;
copy(g_szActiveModeStr, charsmax(g_szActiveModeStr), "Выходные дни");
if(!is_user_alive(id))
return;
else client_cmd(id, "vipmenu"); client_print_color(id, print_team_default, "^1Вам выдана бесплатная ^4VIP, ^1причина:^4 %s.", g_szActiveModeStr);
}
}
else
{
remove_user_flags(id, GIVE_FLAG);
set_user_flags(id, ADMIN_USER);
is_weekend_bonus[id] = false;
}
#endif
}
#if defined WEEKEND_MODE
stock bool:is_weekend(&day = 0)
{
new szTime[3];
get_time("%u", szTime, charsmax(szTime));
if (!(1 < (day = str_to_num(szTime)) < 7))
return true;
return false;
}
#endif