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

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

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

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

Открытие меню через n-кол-во времени

Статус пользователя rasskazov
сообщение 1.2.2017, 14:19
Сообщение #1


Стаж: 13 лет
Город: Где-то в Крыму)

Сообщений: 499
Благодарностей: 158
Полезность: 436

Здравствуйте.
Нужно сделать что-бы меню с выдачей привилегий открывалось только через n-е кол-во минут.
К примеру, я открыл меню выдал привилегию (меню закрылось) и открыть снова его можно только через заданное время в плагине.

Плагин)
Код:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Give ADMIN"
#define AUTHOR "SoNeeKK1"
#define VERSION "*SoNeeKkk"

#define ACCESSFLAG ADMIN_CVAR

new typeImg[33]

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

register_clcmd("say /give", "dysplay_menu")
}

public dysplay_menu(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE

new Menu = menu_create("\yМеню [ Выдача прав на карту ]", "menu_handler2")

menu_additem(Menu, "Дать Admin", "1", 0)
menu_additem(Menu, "Дать VIP", "2", 0)

menu_display(id, Menu, 0)

return PLUGIN_HANDLED
}

public menu_handler2(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)

new key = str_to_num(data)
switch(key)
{
case 1: typeImg[id]=1
case 2: typeImg[id]=2
}

dysplay_menu2(id)

new oldmenu, newmenu, menupage
player_menu_info(id, oldmenu, newmenu, menupage)
return PLUGIN_CONTINUE
}

public dysplay_menu2(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE

new Menu = menu_create("\yСписок игроков", "menu_handler")

new Player
new sPlayerName[128]
new sPlayerId[11]

new playersList[32]
new playersnum
get_players(playersList, playersnum, "c")

for(new i; i<playersnum; i++)
{
Player = playersList[i]
get_user_name(Player, sPlayerName, charsmax(sPlayerName))
num_to_str(Player, sPlayerId, charsmax(sPlayerId))
menu_additem(Menu, sPlayerName, sPlayerId, 0)
}

menu_display(id, Menu, 0)

return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new flags = read_flags("bcdfjunmt"); // флаги админки
new flagsvip = read_flags("t"); // флаги вип
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new Player = str_to_num(s_Data)

if(!is_user_connected(Player))
{
print_col_chat(id, "!g[%s] !yPlayer Not Found. Maibi He Is Disconnect xD", PLUGIN)
dysplay_menu(id)
return PLUGIN_HANDLED
}

switch(typeImg[id])
{
case 1:
{
set_user_flags(Player,flags);
print_col_chat(id, "!gАдминистратор выдал игроку !y%s !g временную админку.", s_Name)
}
case 2:
{
set_user_flags(Player,flagsvip);
print_col_chat(id, "!gАдминистратор выдал игроку !y%s !g временный VIP.", s_Name)
}
}

dysplay_menu(id)

return PLUGIN_CONTINUE
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя SISA
сообщение 1.2.2017, 16:16
Сообщение #2
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Создай ещё один глобальный Float:test[33] для игроков. Занули его везде, где это необходимо. В самом меню выставь на массив задержку:


public dysplay_menu(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE

new fTime = get_gametime();

if(test[id] > fTime)
return PLUGIN_CONTINUE

test[id] = fTime+Время Задержки:
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя rasskazov
сообщение 1.2.2017, 16:34
Сообщение #3


Стаж: 13 лет
Город: Где-то в Крыму)

Сообщений: 499
Благодарностей: 158
Полезность: 436

SISA,
Спасибо, но я все равно не пойму что и куда вставить, попробую, но вряд ли получится

Cкрытый текст
Код:
#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Give ADMIN"
#define AUTHOR "SoNeeKK1"
#define VERSION "*SoNeeKkk"

#define ACCESSFLAG ADMIN_CVAR

new typeImg[33]
new Float:test[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /give", "dysplay_menu")
}

public dysplay_menu(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE

new fTime = get_gametime();

if(test[id] > fTime)
return PLUGIN_CONTINUE

test[id] = fTime+1200;

new Menu = menu_create("\yМеню [ Выдача прав на карту ]", "menu_handler2")

menu_additem(Menu, "Дать Admin", "1", 0)
menu_additem(Menu, "Дать VIP", "2", 0)

menu_display(id, Menu, 0)

return PLUGIN_HANDLED
}

public menu_handler2(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)

new key = str_to_num(data)
switch(key)
{
case 1: typeImg[id]=1
case 2: typeImg[id]=2
}

dysplay_menu2(id)

new oldmenu, newmenu, menupage
player_menu_info(id, oldmenu, newmenu, menupage)
return PLUGIN_CONTINUE
}

public dysplay_menu2(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE

new Menu = menu_create("\yСписок игроков", "menu_handler")

new Player
new sPlayerName[128]
new sPlayerId[11]

new playersList[32]
new playersnum
get_players(playersList, playersnum, "c")

for(new i; i<playersnum; i++)
{
Player = playersList[i]
get_user_name(Player, sPlayerName, charsmax(sPlayerName))
num_to_str(Player, sPlayerId, charsmax(sPlayerId))
menu_additem(Menu, sPlayerName, sPlayerId, 0)
}

menu_display(id, Menu, 0)

return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new flags = read_flags("bcdfjunmt"); // флаги админки
new flagsvip = read_flags("t"); // флаги вип
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new Player = str_to_num(s_Data)

if(!is_user_connected(Player))
{
print_col_chat(id, "!g[%s] !yPlayer Not Found. Maibi He Is Disconnect xD", PLUGIN)
dysplay_menu(id)
return PLUGIN_HANDLED
}

switch(typeImg[id])
{
case 1:
{
set_user_flags(Player,flags);
print_col_chat(id, "!gАдминистратор выдал игроку !y%s !g временную админку.", s_Name)
}
case 2:
{
set_user_flags(Player,flagsvip);
print_col_chat(id, "!gАдминистратор выдал игроку !y%s !g временный VIP.", s_Name)
}
}

dysplay_menu(id)

return PLUGIN_CONTINUE
}

stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color

if (id)
players[0] = id
else
get_players(players, count, "ch")

{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}

Так ? Но что-то не уверен
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 1.2.2017, 16:35
Сообщение #4
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

ну да, тока не помешает test[id] = 0.0 при дисконнекте, а то зайдет какой-нибудь игрок на этот же ID и не сможет открыть меню crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя rasskazov
сообщение 1.2.2017, 16:44
Сообщение #5


Стаж: 13 лет
Город: Где-то в Крыму)

Сообщений: 499
Благодарностей: 158
Полезность: 436

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