- Ошибка
-
Фиксированная выдача привилегий на карту
- Компилятор
- Локальный
- Amx Mod X
- 1.9.0
- Исходный код
-
#include <amxmodx>
#include <hamsandwich>
#define PLUGIN "Give ADMIN"
#define AUTHOR "SoNeeKK1"
#define VERSION "*SoNeeKkk"
#define ACCESSFLAG ADMIN_LEVEL_E
new typeImg[33]
new name[32]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /give", "dysplay_menu")
register_clcmd("say /gift", "dysplay_menu")
}
public dysplay_menu(id)
{
if(!(get_user_flags(id) & ACCESSFLAG))
return PLUGIN_CONTINUE
new Menu = menu_create("\wМеню выдачи доната \r[Для Добрых Админов]^n\dМурр Мяу", "menu_handler2")
menu_additem(Menu, "Дать на карту Карателя", "1", 0)
menu_additem(Menu, "Дать на карту Випку", "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
}
get_user_name(id, name, 31)
new flags = read_flags("fjn"); // флаги карателя
new flagsvip = read_flags("s"); // флаги вип
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[Привилегия на карту] !tИгрок вышел с сервера, привилегия потеряна", PLUGIN)
dysplay_menu(id)
return PLUGIN_HANDLED
}
switch(typeImg[id])
{
case 1:
{
set_user_flags(Player,flags);
print_col_chat(0, "!g[Привилегия на карту] !tДобрый Админ !g%s !tвыдал игроку !g%s !tКарателя :)", name, s_Name)
}
case 2:
{
set_user_flags(Player,flagsvip);
print_col_chat(0, "!g[Привилегия на карту] !tДобрый Админ !g%s !tвыдал игроку !g%s !tВипку :)", name, s_Name)
}
}
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()
}
}
}
}
Здравствуйте. Имею плагин выдачи привилегий на одну карту. Все устраивает и работает, только хотелось бы добавить выдачу определенное количество раз той или иной привилегии.
К примеру:
1. Выдать Вип на карту [n Раз]
2. Выдать Админку на карту [n Раз]
Соответственно, с каждой выдачей число n меняется на меньшее, и когда доходит до нуля, выдавать привилегии больше не можешь.
Могли бы Вы помочь разобраться с этим? Знаний особых нет.
К примеру:
1. Выдать Вип на карту [n Раз]
2. Выдать Админку на карту [n Раз]
Соответственно, с каждой выдачей число n меняется на меньшее, и когда доходит до нуля, выдавать привилегии больше не можешь.
Могли бы Вы помочь разобраться с этим? Знаний особых нет.
В этой теме было размещено решение! Перейти к решению.