Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Как автоматически менять значение amx_default_access "z"?

, Для ночного режима
Статус пользователя Bullet74
сообщение 5.3.2015, 21:40
Сообщение #1


Стаж: 15 лет
Город: Краснодар

Сообщений: 329
Благодарностей: 234
Полезность: 569

Хочу сделать ночной режим на сервере, смысл которого будет следующем: с 00:00 ночи до 06:00 утра всем игрокам на сервере дается бесплатный ВИП. Можно ли написать плагин, который менял бы значение amx_default_access "z" на amx_default_access "o" (или любой другой) в файле amxx.cfg в определённое время? Кто-нибудь сможет написать такой плагинчик? Может есть уже готовое решение?



Помог? Жми СПАСИБу =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя balaban
сообщение 5.3.2015, 21:47
Сообщение #2


Стаж: 18 лет

Сообщений: 2131
Благодарностей: 1074
Полезность: 1160

MyArena.ru
Меценат Меценат

2 минуты поиска.
Не забудьте об include colorchat
Код:
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VERSION "3.0"
#define DBG // Дебаг сообщение в plugin_end
#define AUTORR // Включить или выключить автоматические рестарты карты [По дефолту включены]
#define AUTORR_ROUNDS 30 // Количество раундов, после которых последует рестарт карты

new g_iMaxPlayers;
new g_szCurrentMap[32];

new pcv_time;
new pcv_map;
new pcv_lastround;
new pcv_mp_timelimit;

new bool:g_bNightMode;
new bool:g_bNeedChange;
#if defined AUTORR
new bool:isFirstRound = true;
new g_roundCount;
#endif
new g_iOldTimelimit;

public plugin_init()
{
register_plugin("Map on Time", VERSION, "Flash | neygomon");

register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");
#if defined AUTORR
register_event("TextMsg","eventRoundRestart","a","2&#Game_w")
register_event("TextMsg","eventCommencingRestart","a","2&#Game_C")
#endif

// RTV Hook
register_clcmd("say rtv", "RtvHook");
register_clcmd("say_team rtv", "RtvHook");
register_clcmd("say /rtv", "RtvHook");
register_clcmd("say_team /rtv", "RtvHook");
register_clcmd("amx_rtv", "RtvHook");

// Cvars
pcv_time = register_cvar("mot_time", "02:00 09:00");
pcv_map = register_cvar("mot_map", "de_dust2_2x2");
pcv_lastround = register_cvar("mot_lastround", "1");
pcv_mp_timelimit = get_cvar_pointer("mp_timelimit");

g_iMaxPlayers = get_maxplayers();
get_mapname(g_szCurrentMap, 31);
}

public client_authorized(id)
{
if(g_bNightMode)
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);
}

public TaskCheckTime()
{
new iHour, iMin;
time(iHour, iMin);
new iCurTime = iHour * 60 * 60 + iMin * 60;
new szTime[12];
get_pcvar_string(pcv_time, szTime, 11);
replace_all(szTime, 11, ":", " ");
new szParse[4][3];
if(parse(szTime, szParse[0], 2, szParse[1], 2, szParse[2], 2, szParse[3], 2) != 4)
{
set_fail_state("Invalid time in cvar");
return;
}
new iFrom = str_to_num(szParse[0]) * 60 * 60 + str_to_num(szParse[1]) * 60;
new iTo = str_to_num(szParse[2]) * 60 * 60 + str_to_num(szParse[3]) * 60;
if(iFrom <= iCurTime < iTo)
{
new szNightMap[32];
get_pcvar_string(pcv_map, szNightMap, 31);
if(!equal(g_szCurrentMap, szNightMap))
{
if(get_pcvar_num(pcv_lastround))
{
set_hudmessage(127, 127, 127, 0.02, 0.21, 0, 5.0, 15.04, 0.0, 0.5, 3);
show_hudmessage(0, "Последний раунд");
g_bNeedChange = true;
}
else
server_cmd("changelevel %s", szNightMap);
return;
}

if(!g_bNightMode)
{
g_iOldTimelimit = get_pcvar_num(pcv_mp_timelimit);
set_pcvar_num(pcv_mp_timelimit, 0);
RemovePlayersFlags();
g_bNightMode = true;
}
}
else if(g_bNightMode)
{
g_bNightMode = false;
set_pcvar_num(pcv_mp_timelimit, 5 + floatround(get_gametime()) / 60);
}
return;
}

public RtvHook(id)
{
if(g_bNightMode)
{
client_print_color(id, 0, "^1[^4NightMode^1] ^3* RTV не работает в ^"Ночном режиме^"!");
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
#if defined AUTORR
public eventCommencingRestart()
isFirstRound = true;

public eventRoundRestart()
g_roundCount = 0;
#endif
public EventRoundStart()
{
if(g_bNeedChange){
message_begin(MSG_ALL, SVC_INTERMISSION);
message_end();
set_task(3.0, "DelayChangeMap");
}
#if defined AUTORR
if(g_bNightMode)
{
if(isFirstRound)
{
isFirstRound = false;
g_roundCount = 0;
}
g_roundCount++;
new maxrounds = AUTORR_ROUNDS;
new round;
round = maxrounds - g_roundCount;
if(round > 0 && g_roundCount != 0)
client_print_color(0, 0, "^1[^4NightMode^1] ^4До авторестарта карты осталось^3 %d ^4раундов ^1[^4Тек. раунд:^3 %d ^1| ^4Всего:^3 %d^1]", round, g_roundCount, maxrounds);
else if(g_roundCount >= maxrounds)
server_cmd("restart");
}
#endif
TaskCheckTime();
}

public DelayChangeMap()
{
new szNightMap[32]; get_pcvar_string(pcv_map, szNightMap, 31);
server_cmd("changelevel %s", szNightMap);
}

public plugin_end()
{
if(g_iOldTimelimit)
{
set_pcvar_num(pcv_mp_timelimit, g_iOldTimelimit);
#if defined DBG
log_to_file("nightmode_debug.log", "[plugin_end] g_iOldTimelimit: %d | timelimit: %d", g_iOldTimelimit, get_pcvar_num(pcv_mp_timelimit));
#endif
}
}

RemovePlayersFlags()
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(i))
remove_user_flags(i, ADMIN_MAP|ADMIN_VOTE);
}
}


Отредактировал: balaban, - 5.3.2015, 21:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Bullet74
сообщение 5.3.2015, 22:05
Сообщение #3


Стаж: 15 лет
Город: Краснодар

Сообщений: 329
Благодарностей: 234
Полезность: 569

balaban, это вообще не то. У Вас версия Неугомона. Вот она. Её то я нашел сразу же. Это не то. Мне нужно, чтобы просто в заданное время менялся amx_default_access "z" на любой другой флаг и все.
Хочу ВИПку ночью сделать для всех входящих на сервер.
P.S. Кстати идея была взята с Вашего форума. Там человек с ником Raduga как-то решил вопрос, хотел отписать ему, но с прошлого года форум так и не посетил.

Отредактировал: Bullet74, - 5.3.2015, 22:15


Помог? Жми СПАСИБу =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя balaban
сообщение 5.3.2015, 23:04
Сообщение #4


Стаж: 18 лет

Сообщений: 2131
Благодарностей: 1074
Полезность: 1160

MyArena.ru
Меценат Меценат

Код:
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);

Меняем на:
Код:
remove_user_flags(id, ADMIN_USER);
set_user_flags(id ,ADMIN_LEVEL_C);

ps.gif Не проверял, но должно работать sorry.gif

Отредактировал: balaban, - 5.3.2015, 23:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Vaqtincha
сообщение 5.3.2015, 23:48
Сообщение #5
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

Цитата(balaban @ 6.3.2015, 0:04) *
Код:
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);

Меняем на:
Код:
remove_user_flags(id, ADMIN_USER);
set_user_flags(id ,ADMIN_LEVEL_C);

ps.gif Не проверял, но должно работать sorry.gif

будет работат немного лучше если ставим ADMIN_RCON
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя jager_ch
сообщение 6.3.2015, 13:47
Сообщение #6
Стаж: 15 лет

Сообщений: 5
Благодарностей: 2
Полезность: 0

Цитата(balaban @ 6.3.2015, 0:04) *
Код:
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);

Меняем на:
Код:
remove_user_flags(id, ADMIN_USER);
set_user_flags(id ,ADMIN_LEVEL_C);

ps.gif Не проверял, но должно работать sorry.gif

Работать то будет но, когда мы будем забирать вип флаг по истечении времени ночных випов, флаг уберется и у покупных випов, нужна проверка на платных випов, допустим по другому флагу или по списку ников\стимИд.
И при дисконнекте обязательно забирать флаг иначе випка останется у игрока.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 6.3.2015, 16:09
Сообщение #7


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

заменить
на
Код:
server_cmd("amx_default_access o")
server_cmd("amx_reloadadmins")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Bullet74
сообщение 9.3.2015, 9:00
Сообщение #8


Стаж: 15 лет
Город: Краснодар

Сообщений: 329
Благодарностей: 234
Полезность: 569

Вообщем сделали, все работает, только вот одна беда. После того, как закончилось время у ночной ВИПки, пошел таймер отсчета с минусами (в чате): "Ночная ВИПка включится через - 453 минут." И так после каждого раунда. Полностью уведомления не хотелось бы отключать, но хотелось бы убрать минуса.
Как сделать, чтобы после окончания ВИПки в чат ничего не писало, но за допустим 2-3 часа до начала стала писать: "Ночная Випка включится через..."
Возможно ли это?
Вот плагин
Код:
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
#include <dhudmessage>

#define VERSION "1.0"
//#define WEEKEND_PLUGIN_OFF // Включить/выключить плагин в ночь на любой день недели
//[Закомментируйте, если хотите чтобы плагин работал 7 дней в неделю]

new g_iMaxPlayers;
new nv_time;
new bool:nVip = false;

public plugin_init()
{
register_plugin("Night_vip2", VERSION, "JaGeR_ch");
#if defined WEEKEND_PLUGIN_OFF
CheckWeek();
#endif
register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");

nv_time = register_cvar("night_vip_time", "00:00 08:00");

g_iMaxPlayers = get_maxplayers();
}

#if defined WEEKEND_PLUGIN_OFF
public CheckWeek()
{
new dayweek[2];
get_time("%w", dayweek, charsmax(dayweek));

server_print("%d", str_to_num(dayweek))

switch(str_to_num(dayweek))
{
//case 1: pause("a"); // Понедельник
//case 2: pause("a"); // Вторник
//case 3: pause("a"); // Среда
//case 4: pause("a"); // Четверг
//case 5: pause("a"); // Пятница
//case 6: pause("a"); // Субота
//case 0: pause("a"); // Воскресенье
}
}
#endif

public client_authorized(id)
{
if(nVip)
{
if(!(get_user_flags(id) & ADMIN_RESERVATION))
remove_user_flags(id, ADMIN_USER);
set_user_flags(id ,ADMIN_LEVEL_C);
}
server_cmd("amx_reloadadmons");
}

public client_disconnect(id)
{
if(!(get_user_flags(id) & ADMIN_RESERVATION))
{
remove_user_flags(id, ADMIN_LEVEL_C);
set_user_flags(id ,ADMIN_USER);
}
}

public TaskCheckTime(id)
{
new iHour, iMin;
time(iHour, iMin);
new iCurTime = iHour * 60 * 60 + iMin * 60;
new szTime[12];
new h_left = 0, m_left = 0;
get_pcvar_string(nv_time, szTime, 11);
replace_all(szTime, 11, ":", " ");
new szParse[4][3];
if(parse(szTime, szParse[0], 2, szParse[1], 2, szParse[2], 2, szParse[3], 2) != 4)
{
set_fail_state("Invalid time in cvar");
return;
}
new iFrom = str_to_num(szParse[0]) * 60 * 60 + str_to_num(szParse[1]) * 60;
new iTo = str_to_num(szParse[2]) * 60 * 60 + str_to_num(szParse[3]) * 60;
if(iFrom <= iCurTime < iTo)
{
if (!nVip)
{
nVip = true;
//server_cmd("amx_default_access ^"b^"");
AddPlayersFlags()
set_dhudmessage(255,255,255,0.4,0.3,2,1.0,6.0,0.01,1.0, true);
show_dhudmessage(0, "Ночная Випка включена !");
ColorChat(0, GREEN, "[Night_VIP] ^x03Ночная Випка включена.");
}
server_cmd("amx_reloadadmons");
h_left = (iTo - iCurTime) / 60 / 60;
if(h_left < 0) h_left = 0;
m_left = ((iTo - iCurTime) / 60) - (h_left*60);
ColorChat(0, GREEN, "[Night_VIP] ^x01Ночная Випка отключится через ^x04%d ^x01часов ^x04%d ^x01минут!", h_left, m_left);
}
else
{
if (nVip)
{
nVip = false;
//server_cmd("amx_default_access ^"z^"");
RemovePlayersFlags();
set_dhudmessage(255,0,0,0.4,0.3,2,1.0,6.0,0.01,1.0, true);
show_dhudmessage(0, "Ночная Випка отключена !");
ColorChat(0, GREEN, "[Night_VIP] ^x03Ночная Випка отключена.");
}

h_left = (iFrom - iCurTime) / 60 / 60;
if(h_left < 0) h_left = 0;
m_left = ((iFrom - iCurTime) / 60) - (h_left*60);

ColorChat(0, GREEN, "[Night_VIP] ^x01Ночная Випка включится через ^x04%d ^x01часов ^x04%d ^x01минут!", h_left, m_left);

}
return;
}

public EventRoundStart(id)
{
nVip = false;
TaskCheckTime(id);
}

AddPlayersFlags()
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(i))
{
if(nVip)
{
if(!(get_user_flags(i) & ADMIN_RESERVATION))
remove_user_flags(i, ADMIN_USER);
set_user_flags(i ,ADMIN_LEVEL_C);
}
}
}
server_cmd("amx_reloadadmons");
}

RemovePlayersFlags()
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(i) )
{
if(!(get_user_flags(i) & ADMIN_RESERVATION))
{
remove_user_flags(i, ADMIN_LEVEL_C);
set_user_flags(i ,ADMIN_USER);
}
}
}
}


Отредактировал: Bullet74, - 9.3.2015, 9:33


Помог? Жми СПАСИБу =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bullet74
сообщение 10.3.2015, 9:03
Сообщение #9


Стаж: 15 лет
Город: Краснодар

Сообщений: 329
Благодарностей: 234
Полезность: 569

Помогите плиз, стою в тупике ...


Помог? Жми СПАСИБу =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 10.3.2015, 9:09
Сообщение #10


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Это так и задумано?) amx_reloadadmons => amx_reloadadmins
Видимо тут условие не верное, как именно должно быть сказать не смогу к сожалению
Код:
h_left = (iFrom - iCurTime) / 60 / 60;
if(h_left < 0) h_left = 0;
m_left = ((iFrom - iCurTime) / 60) - (h_left*60);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bullet74
сообщение 10.3.2015, 9:37
Сообщение #11


Стаж: 15 лет
Город: Краснодар

Сообщений: 329
Благодарностей: 234
Полезность: 569

Цитата(Bloo @ 10.3.2015, 10:09) *
Это так и задумано?) amx_reloadadmons => amx_reloadadmins

Ааа, опечатку допустили. Благодарю. В любом случае команда срабатывает (возможно просто уже исправили). По всему остальному вопрос открыт по-прежнему.


Помог? Жми СПАСИБу =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя floricus
сообщение 10.3.2015, 9:39
Сообщение #12
Стаж: 18 лет

Сообщений: 79
Благодарностей: 46
Полезность: 395

Код:
#include <amxmodx>
#include <hamsandwich>
#include <colorchat>

#define PLUGIN "Happy Hours"
#define VERSION "1.0"
#define AUTHOR "unknown"
#define CHATTAG "^4[VIP INFO]"

new g_FreeVip[33];
new g_Time_1, g_Time_2

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_Time_1 = register_cvar("free_vip_time_from", "00")
g_Time_2 = register_cvar("free_vip_time_to", "06")

RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}

public fwHamPlayerSpawnPost(id)
{
new szTime[3]
get_time("%H",szTime,2)

new Time_1 = get_pcvar_num(g_Time_1)
new Time_2 = get_pcvar_num(g_Time_2)

new iTime = str_to_num(szTime)

if( 00 <= iTime <= 06 )
{
if( !(get_user_flags(id) & ADMIN_RESERVATION) )
{
remove_user_flags(id, ADMIN_USER);
set_user_flags(id, ADMIN_LEVEL_C);
g_FreeVip[id] = true;
client_print_color(id, 0, "%s ^4Happy Hours! ^3Between ^4%d ^3and ^4%d ^3all players have VIP access!", CHATTAG, Time_1, Time_2);
}
}
else if( g_FreeVip[id] )
{
remove_user_flags(id, ADMIN_LEVEL_C);
set_user_flags(id, ADMIN_USER);
g_FreeVip[id] = false;
}
}


Отредактировал: floricus, - 10.3.2015, 9:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: