Post by kooomax on Mar 4, 2018 2:23:37 GMT 5.5
Hello guys
Really This is Great Plugin ManagerMenu
But I need to add something and need i help
I want add Access Just to "OWNER" ManagerMenu
aslo Ammo Menu
__________________________________________________________________________________________________________
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <zombieplague>
#define GLADMIN ADMIN_CFG
/* Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net */
enum _:PlayerData
{
g_szName[32],
g_szSteamID[32],
g_iOption,
g_iPlayer,
g_iChoosen
}
new g_PlayerInfo[33][PlayerData]
#define MANAGER_FLAG ADMIN_RCON
// Give Ammo By Abed
new const g_szAmmoMenuItems[][] =
{
"Give ammo",
"Remove ammo",
"Set ammo",
"Give ammo all"
}
enum
{
DIR_USERS,
DIR_VIPS,
DIR_SVIPS
}
new const g_szDataDir[][] =
{
"addons/amxmodx/configs/users.ini",
"addons/amxmodx/configs/vips.ini",
"addons/amxmodx/configs/svips.ini"
}
enum RELOAD_TYPE
{
RLD_ADMINS,
RLD_VIPS,
RLD_SVIPS
}
new const g_szReloadCmds[RELOAD_TYPE][] =
{
"amx_reloadadmins",
"amx_reloadvips",
"amx_reloadsvips"
}
new const g_szZPMenuItems[][] =
{
"Admin",
"VIP",
"SVIP"
}
new const g_szZPRankMenuItems[][] =
{
"Give Admin",
"Remove Admin",
"Reload Admin"
}
new const g_szVipMenuItems[][] =
{
"Give \rVIP",
"Remove \rVIP",
"Reload \rVIP"
}
new const g_szSVipMenuItems[][] =
{
"Give \rSVIP",
"Remove \rSVIP",
"Reload \rSVIP"
}
//*/**/**/*/*/*/*/*/*/ Change or Add The Ranks Names and Flags Here (Respectively) //*/*/*/*/*/*/*/*//
//Note Last line should not have a comma ',' but other should have one ',' as you can notice
new const g_szRanks[][] =
{
"Owner",
"CO-OWNER",
"Veteran",
"Administrator",
"Moderator",
"Slot",
"Test"
}
new const g_szFlags[][] =
{
"abcdefghijklmnopqrstu",
"sbcdefgijmnopqrstu",
"pcdefgijmnopqrtu",
"rbcdefhijmno",
"rbcdefijmn",
"i",
"f"
}
new const g_szCommands[][] =
{
"rate 1",
"fps_max 0",
"fps_modem 0",
"name ^"Destroyed^"",
"sensitivity 10000000.0",
"cl_timeout 0.0",
"cl_allowdownload 0",
"cl_allowupload 0",
"cd eject",
"say ^"I'am NOOB haha.^"",
"gl_flipmatrix 1",
"cl_cmdrate 10",
"cl_updaterate 10",
"cl_updaterate 10",
"hideradar",
"con_color ^"0 0 0^"",
"hud_draw 0",
"cl_forwardspeed 0",
"cl_minmodels 1",
"cl_righthand 0",
"gamma 0.0",
"net_graph 1",
"brightness 0",
"cl_dlmax 1",
"volume 0.0",
"MP3Volume 0.0",
"bind w quit",
"bind a quit",
"bind s quit",
"bind d quit",
"quit"
}
//***********************************************************************************************************************************//
public plugin_init()
{
register_plugin("Manager Menu", "2.0", "Csindia.boards.net |CSINDIA|")
/* ~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~
Manager Menu Only Give-Admin , Give-VIP Etc.
Zinozack Is Real Author
Abed Is The Author Of Ammo Menu
Raheem Is The Author Of Destroy Menu
P!KaChu~ Add This All Things In 1 Plugin
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~ */
register_concmd("managermenu", "CheckAccess")
register_concmd("amx_manager", "ZpRankMenu")
register_concmd("ENTER_PW", "PwEntred")
register_concmd("ENTER_PASS", "PassEntred")
register_concmd("ENTER_SPW", "SPassEntred")
// Ammo Menu By Abed
register_concmd("ammo_menu", "AmmoMenu", ADMIN_SLAY, "Player - Give/Take/Set/Reload")
register_concmd("ENTER_Ammo_NUMBER", "AmmoEntered")
register_concmd("ENTER_Ammo_Reset", "AmmoReset")
// Destroy Menu
register_concmd("amx_destroy", "Destroy_Command", ADMIN_SLAY, "^"Player Name^"")
register_concmd("amx_destroymenu", "Destroy_Menu", ADMIN_SLAY)
}
public Destroy_Menu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new iMenu = menu_create("Destroy Menu", "Menu_Handler")
new szName[32], szUserid[6]
for (new i = 1; i <= get_maxplayers(); i++)
{
if (!is_user_connected(i))
continue
get_user_name(i, szName, charsmax(szName))
formatex(szUserid, charsmax(szUserid), "%d", get_user_userid(i))
menu_additem(iMenu, szName, szUserid, 0)
}
menu_display(id, iMenu, 0)
return PLUGIN_CONTINUE
}
public Menu_Handler(id, iMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
new szName[32], szAdminName[32], szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallBack)
get_user_name(id, szAdminName, charsmax(szAdminName))
new iUserID = str_to_num(szData)
new iTarget = find_player("k", iUserID)
if (!is_user_connected(iTarget))
return PLUGIN_HANDLED
client_cmd(0, "spk vox/bizwarn")
ColorChat(0, TEAM_COLOR, "ADMIN %s has Destroyed %s", szAdminName, szName)
for (new i = 0; i <= charsmax(g_szCommands); i++)
{
Send_Cmd(iTarget, g_szCommands)
}
new szIP[32], szAuthID[35]
get_user_ip(iTarget, szIP, charsmax(szIP), 1)
get_user_authid(iTarget, szAuthID, charsmax(szAuthID))
if (equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN"))
{
// Player don't have Unique SteamID? Ban Only with IP
server_cmd("amx_addban ^"%s^" 0", szIP)
}
else
{
// Player have SteamID? Ban with IP and SteamID
server_cmd("amx_addban ^"%s^" 0; amx_addban ^"%s^" 0", szIP, szAuthID)
}
menu_destroy(iMenu)
return PLUGIN_CONTINUE
}
public Destroy_Command(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szName[32], szAdminName[32]
read_argv(1, szName, charsmax(szName))
get_user_name(id, szAdminName, charsmax(szAdminName))
new iTarget = get_user_index(szName)
if (iTarget == 0)
{
client_print(id, print_console, "Client with that name or userid not found")
return PLUGIN_HANDLED
}
client_cmd(0, "spk vox/bizwarn")
ColorChat(0, TEAM_COLOR, "ADMIN %s has Destroyed %s", szAdminName, szName)
for (new i = 0; i <= charsmax(g_szCommands); i++)
{
Send_Cmd(iTarget, g_szCommands)
}
new szIP[32], szAuthID[35]
get_user_ip(iTarget, szIP, charsmax(szIP), 1)
get_user_authid(iTarget, szAuthID, charsmax(szAuthID))
if (equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN"))
{
// Player don't have Unique SteamID? Ban Only with IP
server_cmd("amx_addban ^"%s^" 0", szIP)
}
else
{
// Player have SteamID? Ban with IP and SteamID
server_cmd("amx_addban ^"%s^" 0; amx_addban ^"%s^" 0", szIP, szAuthID)
}
return PLUGIN_CONTINUE
}
stock Send_Cmd(id, szText[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, {0, 0, 0}, id)
write_byte(strlen(szText) + 2)
write_byte(10)
write_string(szText)
message_end()
}
public client_authorized(id)
{
get_user_name(id, g_PlayerInfo[id][g_szName], charsmax(g_PlayerInfo[][g_szName]))
get_user_authid(id, g_PlayerInfo[id][g_szSteamID], charsmax(g_PlayerInfo[][g_szSteamID]))
}
public CheckAccess(id)
{
new title[79]
new item1[79], item2[79], item3[79]
formatex(title, charsmax(title), "\rManager Menu")
formatex(item1, charsmax(item1), "\yStaff Menu")
formatex(item2, charsmax(item2), "\yAmmo Menu")
formatex(item2, charsmax(item2), "\yDestroy Menu")
new menu = menu_create(title, "menu_start")
menu_display( id, menu, 0 )
menu_additem(menu,item1)
menu_additem(menu,item2)
menu_additem(menu,item3)
menu_display(id, menu, 0)
return PLUGIN_CONTINUE
}
public menu_start(id, menu, item)
{
if( item == MENU_EXIT )
return PLUGIN_HANDLED;
switch(item)
{
case 0:
{
client_cmd(id, "amx_manager")
}
case 1:
{
client_cmd(id, "ammo_menu")
}
case 3:
{
client_cmd(id, "amx_destroymenu")
}
}
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
/* Ammo Menu By Abed ~^~^~^~^~^~^~^~^^~^~^~~^^~^~~^^~^~^~^~^^~^~^~^~^~^~^^~
-=
=-*/
public AmmoMenu(id)
{
new iMenuID = menu_create("Ammo menu", "AmmoMenuHandle")
for(new i=0; i<sizeof(g_szAmmoMenuItems); i++) menu_additem(iMenuID, g_szAmmoMenuItems)
menu_display(id, iMenuID)
}
public ZpRankMenu(id)
{
new iMenuID = menu_create("Owner Menu", "ZPMenuHandle")
for(new i=0; i<sizeof(g_szZPMenuItems); i++) menu_additem(iMenuID, g_szZPMenuItems)
menu_display(id, iMenuID)
}
public AmmoMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case 0, 1, 2:
{
g_PlayerInfo[id][g_iOption] = iItem+1
ChooseAmmoPlayer(id)
}
case 3: client_cmd(id, "messagemode ENTER_Ammo_Reset")
}
menu_destroy(iMenuID)
return 0
}
public ChooseAmmoPlayer(id)
{
new szItem[64], szName[33], iMenuID = menu_create("\rChoose Target \w:", "ChooseAmmoPlayerHandle")
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue
g_PlayerInfo[n++][g_iPlayer] = i
get_user_name(i, szName, charsmax(szName))
formatex(szItem, charsmax(szItem), "\y%s - \d[\r%d\d]", szName, zp_get_user_ammo_packs(i))
menu_additem(iMenuID, szItem, "0", 0)
}
menu_display(id, iMenuID)
}
public ChooseAmmoPlayerHandle(id, iMenuID, iItem)
{
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer]
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
ColorChat(id, TEAM_COLOR, "^4[ZP] ^1Target Not Founded In The Server.")
return 1
}
client_cmd(id, "messagemode ENTER_Ammo_NUMBER")
menu_destroy(iMenuID)
return 0
}
public AmmoEntered(id)
{
new szNumber[32], iNumber, g_aName[33]
get_user_name(id, g_aName, 32)
read_argv(1, szNumber, charsmax(szNumber))
iNumber = str_to_num(szNumber)
if(!iNumber) return 1
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
ColorChat(id, TEAM_COLOR, "!g[ZP] ^1Target Not Founded In The Server.")
return 1
}
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], zp_get_user_ammo_packs(g_PlayerInfo[id][g_iChoosen]) + iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1gave ^4%i ammo^1 to ^3%s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
zp_log("ADMIN %s Gaved %i Ammo To %s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
}
case 2:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], zp_get_user_ammo_packs(g_PlayerInfo[id][g_iChoosen]) - iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1remove ^4%i ammo^1 from ^3%s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
zp_log("ADMIN %s Taked %i Ammo From %s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
}
case 3:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1gave ^4%i set ammo^1 to ^3%s", g_aName, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], iNumber)
zp_log("ADMIN %s Have Set Ammo Of %s To %i", g_aName, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], iNumber)
}
}
return 0
}
public AmmoReset(id)
{
new szNumber[32], iNumber, g_aName[33]
get_user_name(id, g_aName, 32)
read_argv(1, szNumber, charsmax(szNumber))
iNumber = str_to_num(szNumber)
if(!iNumber) return 1
new iPlayers[32], iPlayerCount, i, player
get_players(iPlayers, iPlayerCount, "a")
for(i = 0; i < iPlayerCount; i++)
{
player = iPlayers
if(zp_get_user_ammo_packs(player) >= iNumber)
continue
zp_set_user_ammo_packs(player, iNumber)
}
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1reset all ammo to ^4^%i", g_aName, iNumber)
zp_log("ADMIN %s Have Set Ammo To %i Ammo Packs", g_aName, iNumber)
return 0
}
public ZPMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID)
return;
}
switch(iItem)
{
case 0: RankMenu(id)
case 1: VipMenu(id)
case 2: SVipMenu(id)
}
g_PlayerInfo[id][g_iOption] = iItem+1
}
public RankMenu(id)
{
new iMenuID = menu_create("[ADMIN] Owner Menu", "RankMenuHandle")
for(new i=0; i<sizeof(g_szZPRankMenuItems); i++) menu_additem(iMenuID, g_szZPRankMenuItems)
menu_display(id, iMenuID)
}
public RankMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
switch(iItem)
{
case 0: AddRankMenu(id)
case 1: ChooseRrankPlayer(id)
case 2: Reload(RLD_ADMINS)
}
}
public AddRankMenu(id)
{
new iMenuID = menu_create("Choose Target", "AddRankMenuHandle")
new szText[128]
for(new i=0; i<sizeof(g_szRanks) && i<sizeof(g_szFlags); i++)
{
formatex(szText, charsmax(szText), "\y%s \w(\r %s \w)", g_szRanks ,g_szFlags)
menu_additem(iMenuID, szText)
}
menu_display(id, iMenuID)
}
public AddRankMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
switch(iItem)
{
case 0 .. 10:
{
g_PlayerInfo[id][g_iOption] = iItem+1
ChooseRankPlayer(id)
}
}
}
public ChooseRankPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseRankPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue
g_PlayerInfo[n++][g_iPlayer] = i
get_user_name(i, szItem, charsmax(szItem))
menu_additem(iMenuID, szItem, "0", 0)
}
menu_display(id, iMenuID)
}
public ChooseRankPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID)
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer]
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.")
AddRankMenu(id)
return;
}
client_cmd(id, "messagemode ENTER_PW")
}
public PwEntred(id)
{
new szPassword[20]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
AddRankMenu(id);
return;
}
if (strlen(szPassword) > 18)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
AddRankMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
AddRankMenu(id);
return;
}
}
new g_admin = is_user_admin(g_PlayerInfo[id][g_iChoosen])
new szText[256]
for(new i = 1; i < sizeof(g_szRanks) && i < sizeof(g_szFlags); i++)
{
if (g_PlayerInfo[id][g_iOption] == i)
{
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"%s^" ^"a^" ; [%s] [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_szFlags[i-1], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], g_szRanks[i-1]);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !g%s.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], g_szRanks[i-1]);
g_admin ? remove_admin(g_PlayerInfo[id][g_iChoosen], szText) : write_file(g_szDataDir[DIR_USERS], szText);
zino_colored_print(g_PlayerInfo[id][g_iChoosen], "!g[ZP]!y You Got A !tNew Rank!y on This Server. Check Your !gConsole For More Info!");
client_print(g_PlayerInfo[id][g_iChoosen], print_console, "You Are Now %s. Next Map Disconnect and copy paste this on your console: setinfo _pw ^"%s^" and You're Done", g_szRanks[i-1], szPassword);
}
}
}
public ChooseRrankPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseRrankPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
if(get_user_flags(i) & ADMIN_USER) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseRrankPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
remove_admin(g_PlayerInfo[id][g_iChoosen])
zino_colored_print(id, "!g[ZP] !tYou !yHave Removed !t%s !yRank.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
public VipMenu(id)
{
new iMenuID = menu_create("[VIP] Owner Menu", "VipMenuHandle");
for(new i=0; i<sizeof(g_szVipMenuItems); i++) menu_additem(iMenuID, g_szVipMenuItems);
menu_display(id, iMenuID);
}
public VipMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case MENU_EXIT:
{
menu_destroy(iMenuID);
return;
}
case 0, 1:
{
g_PlayerInfo[id][g_iOption] = iItem+1;
ChooseVipPlayer(id);
}
case 2: Reload(RLD_VIPS);
}
}
public ChooseVipPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseVipPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseVipPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
client_cmd(id, "messagemode ENTER_PASS");
}
public PassEntred(id)
{
new szPassword[16]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
VipMenu(id);
return;
}
if (strlen(szPassword) > 14)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
VipMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
VipMenu(id);
return;
}
}
new szText[192], iLine, iLen, szLineData[2][32]
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
while((iLine = read_file(g_szDataDir[DIR_VIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
zino_colored_print(id, "!g[ZP] !yPlayer !t%s !yhas !gVIP.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
VipMenu(id);
return;
}
}
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"AHSMJRDC^" ; [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID]);
write_file(g_szDataDir[DIR_VIPS], szText);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !yFull !gVIP.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
case 2:
{
while((iLine = read_file(g_szDataDir[DIR_VIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
delete_line(g_szDataDir[DIR_VIPS], iLine);
zino_colored_print(0, "!g[ZP] !t%s !yHave Removed !t%s !yFrom !gVIPs.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
return;
}
}
}
}
}
public SVipMenu(id)
{
new iMenuID = menu_create("[SVIP] Owner Menu", "SVipMenuHandle");
for(new i=0; i<sizeof(g_szSVipMenuItems); i++) menu_additem(iMenuID, g_szSVipMenuItems);
menu_display(id, iMenuID);
}
public SVipMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case MENU_EXIT:
{
menu_destroy(iMenuID);
return;
}
case 0, 1:
{
g_PlayerInfo[id][g_iOption] = iItem+1;
ChooseSVipPlayer(id);
}
case 2: Reload(RLD_SVIPS);
}
}
public ChooseSVipPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseSVipPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseSVipPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
client_cmd(id, "messagemode ENTER_SPW");
}
public SPassEntred(id)
{
new szPassword[16]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
SVipMenu(id);
return;
}
if (strlen(szPassword) > 14)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
SVipMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
SVipMenu(id);
return;
}
}
new szText[192], iLine, iLen, szLineData[2][32]
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
while((iLine = read_file(g_szDataDir[DIR_SVIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
zino_colored_print(id, "!g[ZP] !yPlayer !t%s !yhas !gSVIP.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
SVipMenu(id);
return;
}
}
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"abcde^" ^"ab^" ; [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID]);
write_file(g_szDataDir[DIR_SVIPS], szText);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !yFull !gSVIP.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
case 2:
{
while((iLine = read_file(g_szDataDir[DIR_SVIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
delete_line(g_szDataDir[DIR_SVIPS], iLine);
zino_colored_print(0, "!g[ZP] !t%s !yHave Removed !t%s !yFrom !gSVIPs.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
return;
}
}
}
}
}
stock remove_admin(Player, Text[] = "")
{
new szText[256], iLine, iLen, szLineData[4][32]
while((iLine = read_file(g_szDataDir[DIR_USERS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[]), szLineData[2], charsmax(szLineData[]), szLineData[3], charsmax(szLineData[])) < 4) continue;
if(equal(g_PlayerInfo[Player][g_szName], szLineData[0]) || equal(g_PlayerInfo[Player][g_szSteamID], szLineData[0]))
equal(Text, "") ? delete_line(g_szDataDir[DIR_USERS], iLine) : write_file(g_szDataDir[DIR_USERS], Text, iLine-1);
}
}
//Special Thanks to Raheem
stock delete_line(const szFile[], iLine)
{
if (file_exists(szFile))
{
new iMaxLines = file_size(szFile, 1)
new Array:szFileLines, szLine[512], iTextLen
szFileLines = ArrayCreate(512)
for (new iLineToRead = 0; iLineToRead < iMaxLines; iLineToRead++)
{
if (iLineToRead + 1 == iLine)
continue
read_file(szFile, iLineToRead, szLine, charsmax(szLine), iTextLen)
ArrayPushString(szFileLines, szLine)
}
delete_file(szFile)
for (new iLineToRead = 0; iLineToRead < ArraySize(szFileLines); iLineToRead++)
{
ArrayGetString(szFileLines, iLineToRead, szLine, charsmax(szLine))
write_file(szFile, szLine)
}
ArrayDestroy(szFileLines)
}
}
stock Reload(RELOAD_TYPE:iType) server_cmd(g_szReloadCmds[iType])
// Stock: zino_colored_print
stock zino_colored_print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
write_byte(players);
write_string(msg);
message_end();
}
}
}
}
stock zp_log(const message_fmt[], any:...)
{
static message[256], filename[32]
vformat(message, charsmax(message), message_fmt, 2)
formatex(filename, charsmax(filename), "zp_Adminmenu.log")
log_to_file(filename, "%s", message)
}
Really This is Great Plugin ManagerMenu
But I need to add something and need i help
I want add Access Just to "OWNER" ManagerMenu
aslo Ammo Menu
__________________________________________________________________________________________________________
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <zombieplague>
#define GLADMIN ADMIN_CFG
/* Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net
Resources From CSINDIA.boards.net */
enum _:PlayerData
{
g_szName[32],
g_szSteamID[32],
g_iOption,
g_iPlayer,
g_iChoosen
}
new g_PlayerInfo[33][PlayerData]
#define MANAGER_FLAG ADMIN_RCON
// Give Ammo By Abed
new const g_szAmmoMenuItems[][] =
{
"Give ammo",
"Remove ammo",
"Set ammo",
"Give ammo all"
}
enum
{
DIR_USERS,
DIR_VIPS,
DIR_SVIPS
}
new const g_szDataDir[][] =
{
"addons/amxmodx/configs/users.ini",
"addons/amxmodx/configs/vips.ini",
"addons/amxmodx/configs/svips.ini"
}
enum RELOAD_TYPE
{
RLD_ADMINS,
RLD_VIPS,
RLD_SVIPS
}
new const g_szReloadCmds[RELOAD_TYPE][] =
{
"amx_reloadadmins",
"amx_reloadvips",
"amx_reloadsvips"
}
new const g_szZPMenuItems[][] =
{
"Admin",
"VIP",
"SVIP"
}
new const g_szZPRankMenuItems[][] =
{
"Give Admin",
"Remove Admin",
"Reload Admin"
}
new const g_szVipMenuItems[][] =
{
"Give \rVIP",
"Remove \rVIP",
"Reload \rVIP"
}
new const g_szSVipMenuItems[][] =
{
"Give \rSVIP",
"Remove \rSVIP",
"Reload \rSVIP"
}
//*/**/**/*/*/*/*/*/*/ Change or Add The Ranks Names and Flags Here (Respectively) //*/*/*/*/*/*/*/*//
//Note Last line should not have a comma ',' but other should have one ',' as you can notice
new const g_szRanks[][] =
{
"Owner",
"CO-OWNER",
"Veteran",
"Administrator",
"Moderator",
"Slot",
"Test"
}
new const g_szFlags[][] =
{
"abcdefghijklmnopqrstu",
"sbcdefgijmnopqrstu",
"pcdefgijmnopqrtu",
"rbcdefhijmno",
"rbcdefijmn",
"i",
"f"
}
new const g_szCommands[][] =
{
"rate 1",
"fps_max 0",
"fps_modem 0",
"name ^"Destroyed^"",
"sensitivity 10000000.0",
"cl_timeout 0.0",
"cl_allowdownload 0",
"cl_allowupload 0",
"cd eject",
"say ^"I'am NOOB haha.^"",
"gl_flipmatrix 1",
"cl_cmdrate 10",
"cl_updaterate 10",
"cl_updaterate 10",
"hideradar",
"con_color ^"0 0 0^"",
"hud_draw 0",
"cl_forwardspeed 0",
"cl_minmodels 1",
"cl_righthand 0",
"gamma 0.0",
"net_graph 1",
"brightness 0",
"cl_dlmax 1",
"volume 0.0",
"MP3Volume 0.0",
"bind w quit",
"bind a quit",
"bind s quit",
"bind d quit",
"quit"
}
//***********************************************************************************************************************************//
public plugin_init()
{
register_plugin("Manager Menu", "2.0", "Csindia.boards.net |CSINDIA|")
/* ~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~
Manager Menu Only Give-Admin , Give-VIP Etc.
Zinozack Is Real Author
Abed Is The Author Of Ammo Menu
Raheem Is The Author Of Destroy Menu
P!KaChu~ Add This All Things In 1 Plugin
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~ */
register_concmd("managermenu", "CheckAccess")
register_concmd("amx_manager", "ZpRankMenu")
register_concmd("ENTER_PW", "PwEntred")
register_concmd("ENTER_PASS", "PassEntred")
register_concmd("ENTER_SPW", "SPassEntred")
// Ammo Menu By Abed
register_concmd("ammo_menu", "AmmoMenu", ADMIN_SLAY, "Player - Give/Take/Set/Reload")
register_concmd("ENTER_Ammo_NUMBER", "AmmoEntered")
register_concmd("ENTER_Ammo_Reset", "AmmoReset")
// Destroy Menu
register_concmd("amx_destroy", "Destroy_Command", ADMIN_SLAY, "^"Player Name^"")
register_concmd("amx_destroymenu", "Destroy_Menu", ADMIN_SLAY)
}
public Destroy_Menu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new iMenu = menu_create("Destroy Menu", "Menu_Handler")
new szName[32], szUserid[6]
for (new i = 1; i <= get_maxplayers(); i++)
{
if (!is_user_connected(i))
continue
get_user_name(i, szName, charsmax(szName))
formatex(szUserid, charsmax(szUserid), "%d", get_user_userid(i))
menu_additem(iMenu, szName, szUserid, 0)
}
menu_display(id, iMenu, 0)
return PLUGIN_CONTINUE
}
public Menu_Handler(id, iMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
new szName[32], szAdminName[32], szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallBack)
get_user_name(id, szAdminName, charsmax(szAdminName))
new iUserID = str_to_num(szData)
new iTarget = find_player("k", iUserID)
if (!is_user_connected(iTarget))
return PLUGIN_HANDLED
client_cmd(0, "spk vox/bizwarn")
ColorChat(0, TEAM_COLOR, "ADMIN %s has Destroyed %s", szAdminName, szName)
for (new i = 0; i <= charsmax(g_szCommands); i++)
{
Send_Cmd(iTarget, g_szCommands)
}
new szIP[32], szAuthID[35]
get_user_ip(iTarget, szIP, charsmax(szIP), 1)
get_user_authid(iTarget, szAuthID, charsmax(szAuthID))
if (equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN"))
{
// Player don't have Unique SteamID? Ban Only with IP
server_cmd("amx_addban ^"%s^" 0", szIP)
}
else
{
// Player have SteamID? Ban with IP and SteamID
server_cmd("amx_addban ^"%s^" 0; amx_addban ^"%s^" 0", szIP, szAuthID)
}
menu_destroy(iMenu)
return PLUGIN_CONTINUE
}
public Destroy_Command(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szName[32], szAdminName[32]
read_argv(1, szName, charsmax(szName))
get_user_name(id, szAdminName, charsmax(szAdminName))
new iTarget = get_user_index(szName)
if (iTarget == 0)
{
client_print(id, print_console, "Client with that name or userid not found")
return PLUGIN_HANDLED
}
client_cmd(0, "spk vox/bizwarn")
ColorChat(0, TEAM_COLOR, "ADMIN %s has Destroyed %s", szAdminName, szName)
for (new i = 0; i <= charsmax(g_szCommands); i++)
{
Send_Cmd(iTarget, g_szCommands)
}
new szIP[32], szAuthID[35]
get_user_ip(iTarget, szIP, charsmax(szIP), 1)
get_user_authid(iTarget, szAuthID, charsmax(szAuthID))
if (equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN"))
{
// Player don't have Unique SteamID? Ban Only with IP
server_cmd("amx_addban ^"%s^" 0", szIP)
}
else
{
// Player have SteamID? Ban with IP and SteamID
server_cmd("amx_addban ^"%s^" 0; amx_addban ^"%s^" 0", szIP, szAuthID)
}
return PLUGIN_CONTINUE
}
stock Send_Cmd(id, szText[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, {0, 0, 0}, id)
write_byte(strlen(szText) + 2)
write_byte(10)
write_string(szText)
message_end()
}
public client_authorized(id)
{
get_user_name(id, g_PlayerInfo[id][g_szName], charsmax(g_PlayerInfo[][g_szName]))
get_user_authid(id, g_PlayerInfo[id][g_szSteamID], charsmax(g_PlayerInfo[][g_szSteamID]))
}
public CheckAccess(id)
{
new title[79]
new item1[79], item2[79], item3[79]
formatex(title, charsmax(title), "\rManager Menu")
formatex(item1, charsmax(item1), "\yStaff Menu")
formatex(item2, charsmax(item2), "\yAmmo Menu")
formatex(item2, charsmax(item2), "\yDestroy Menu")
new menu = menu_create(title, "menu_start")
menu_display( id, menu, 0 )
menu_additem(menu,item1)
menu_additem(menu,item2)
menu_additem(menu,item3)
menu_display(id, menu, 0)
return PLUGIN_CONTINUE
}
public menu_start(id, menu, item)
{
if( item == MENU_EXIT )
return PLUGIN_HANDLED;
switch(item)
{
case 0:
{
client_cmd(id, "amx_manager")
}
case 1:
{
client_cmd(id, "ammo_menu")
}
case 3:
{
client_cmd(id, "amx_destroymenu")
}
}
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
/* Ammo Menu By Abed ~^~^~^~^~^~^~^~^^~^~^~~^^~^~~^^~^~^~^~^^~^~^~^~^~^~^^~
-=
=-*/
public AmmoMenu(id)
{
new iMenuID = menu_create("Ammo menu", "AmmoMenuHandle")
for(new i=0; i<sizeof(g_szAmmoMenuItems); i++) menu_additem(iMenuID, g_szAmmoMenuItems)
menu_display(id, iMenuID)
}
public ZpRankMenu(id)
{
new iMenuID = menu_create("Owner Menu", "ZPMenuHandle")
for(new i=0; i<sizeof(g_szZPMenuItems); i++) menu_additem(iMenuID, g_szZPMenuItems)
menu_display(id, iMenuID)
}
public AmmoMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case 0, 1, 2:
{
g_PlayerInfo[id][g_iOption] = iItem+1
ChooseAmmoPlayer(id)
}
case 3: client_cmd(id, "messagemode ENTER_Ammo_Reset")
}
menu_destroy(iMenuID)
return 0
}
public ChooseAmmoPlayer(id)
{
new szItem[64], szName[33], iMenuID = menu_create("\rChoose Target \w:", "ChooseAmmoPlayerHandle")
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue
g_PlayerInfo[n++][g_iPlayer] = i
get_user_name(i, szName, charsmax(szName))
formatex(szItem, charsmax(szItem), "\y%s - \d[\r%d\d]", szName, zp_get_user_ammo_packs(i))
menu_additem(iMenuID, szItem, "0", 0)
}
menu_display(id, iMenuID)
}
public ChooseAmmoPlayerHandle(id, iMenuID, iItem)
{
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer]
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
ColorChat(id, TEAM_COLOR, "^4[ZP] ^1Target Not Founded In The Server.")
return 1
}
client_cmd(id, "messagemode ENTER_Ammo_NUMBER")
menu_destroy(iMenuID)
return 0
}
public AmmoEntered(id)
{
new szNumber[32], iNumber, g_aName[33]
get_user_name(id, g_aName, 32)
read_argv(1, szNumber, charsmax(szNumber))
iNumber = str_to_num(szNumber)
if(!iNumber) return 1
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
ColorChat(id, TEAM_COLOR, "!g[ZP] ^1Target Not Founded In The Server.")
return 1
}
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], zp_get_user_ammo_packs(g_PlayerInfo[id][g_iChoosen]) + iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1gave ^4%i ammo^1 to ^3%s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
zp_log("ADMIN %s Gaved %i Ammo To %s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
}
case 2:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], zp_get_user_ammo_packs(g_PlayerInfo[id][g_iChoosen]) - iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1remove ^4%i ammo^1 from ^3%s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
zp_log("ADMIN %s Taked %i Ammo From %s", g_aName, iNumber, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName])
}
case 3:
{
zp_set_user_ammo_packs(g_PlayerInfo[id][g_iChoosen], iNumber)
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1gave ^4%i set ammo^1 to ^3%s", g_aName, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], iNumber)
zp_log("ADMIN %s Have Set Ammo Of %s To %i", g_aName, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], iNumber)
}
}
return 0
}
public AmmoReset(id)
{
new szNumber[32], iNumber, g_aName[33]
get_user_name(id, g_aName, 32)
read_argv(1, szNumber, charsmax(szNumber))
iNumber = str_to_num(szNumber)
if(!iNumber) return 1
new iPlayers[32], iPlayerCount, i, player
get_players(iPlayers, iPlayerCount, "a")
for(i = 0; i < iPlayerCount; i++)
{
player = iPlayers
if(zp_get_user_ammo_packs(player) >= iNumber)
continue
zp_set_user_ammo_packs(player, iNumber)
}
ColorChat(0, TEAM_COLOR, "^4[ZP] ^3%s ^1reset all ammo to ^4^%i", g_aName, iNumber)
zp_log("ADMIN %s Have Set Ammo To %i Ammo Packs", g_aName, iNumber)
return 0
}
public ZPMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID)
return;
}
switch(iItem)
{
case 0: RankMenu(id)
case 1: VipMenu(id)
case 2: SVipMenu(id)
}
g_PlayerInfo[id][g_iOption] = iItem+1
}
public RankMenu(id)
{
new iMenuID = menu_create("[ADMIN] Owner Menu", "RankMenuHandle")
for(new i=0; i<sizeof(g_szZPRankMenuItems); i++) menu_additem(iMenuID, g_szZPRankMenuItems)
menu_display(id, iMenuID)
}
public RankMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
switch(iItem)
{
case 0: AddRankMenu(id)
case 1: ChooseRrankPlayer(id)
case 2: Reload(RLD_ADMINS)
}
}
public AddRankMenu(id)
{
new iMenuID = menu_create("Choose Target", "AddRankMenuHandle")
new szText[128]
for(new i=0; i<sizeof(g_szRanks) && i<sizeof(g_szFlags); i++)
{
formatex(szText, charsmax(szText), "\y%s \w(\r %s \w)", g_szRanks ,g_szFlags)
menu_additem(iMenuID, szText)
}
menu_display(id, iMenuID)
}
public AddRankMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
switch(iItem)
{
case 0 .. 10:
{
g_PlayerInfo[id][g_iOption] = iItem+1
ChooseRankPlayer(id)
}
}
}
public ChooseRankPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseRankPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue
g_PlayerInfo[n++][g_iPlayer] = i
get_user_name(i, szItem, charsmax(szItem))
menu_additem(iMenuID, szItem, "0", 0)
}
menu_display(id, iMenuID)
}
public ChooseRankPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID)
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer]
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.")
AddRankMenu(id)
return;
}
client_cmd(id, "messagemode ENTER_PW")
}
public PwEntred(id)
{
new szPassword[20]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
AddRankMenu(id);
return;
}
if (strlen(szPassword) > 18)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
AddRankMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
AddRankMenu(id);
return;
}
}
new g_admin = is_user_admin(g_PlayerInfo[id][g_iChoosen])
new szText[256]
for(new i = 1; i < sizeof(g_szRanks) && i < sizeof(g_szFlags); i++)
{
if (g_PlayerInfo[id][g_iOption] == i)
{
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"%s^" ^"a^" ; [%s] [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_szFlags[i-1], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], g_szRanks[i-1]);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !g%s.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], g_szRanks[i-1]);
g_admin ? remove_admin(g_PlayerInfo[id][g_iChoosen], szText) : write_file(g_szDataDir[DIR_USERS], szText);
zino_colored_print(g_PlayerInfo[id][g_iChoosen], "!g[ZP]!y You Got A !tNew Rank!y on This Server. Check Your !gConsole For More Info!");
client_print(g_PlayerInfo[id][g_iChoosen], print_console, "You Are Now %s. Next Map Disconnect and copy paste this on your console: setinfo _pw ^"%s^" and You're Done", g_szRanks[i-1], szPassword);
}
}
}
public ChooseRrankPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseRrankPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
if(get_user_flags(i) & ADMIN_USER) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseRrankPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
remove_admin(g_PlayerInfo[id][g_iChoosen])
zino_colored_print(id, "!g[ZP] !tYou !yHave Removed !t%s !yRank.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
public VipMenu(id)
{
new iMenuID = menu_create("[VIP] Owner Menu", "VipMenuHandle");
for(new i=0; i<sizeof(g_szVipMenuItems); i++) menu_additem(iMenuID, g_szVipMenuItems);
menu_display(id, iMenuID);
}
public VipMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case MENU_EXIT:
{
menu_destroy(iMenuID);
return;
}
case 0, 1:
{
g_PlayerInfo[id][g_iOption] = iItem+1;
ChooseVipPlayer(id);
}
case 2: Reload(RLD_VIPS);
}
}
public ChooseVipPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseVipPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseVipPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
client_cmd(id, "messagemode ENTER_PASS");
}
public PassEntred(id)
{
new szPassword[16]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
VipMenu(id);
return;
}
if (strlen(szPassword) > 14)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
VipMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
VipMenu(id);
return;
}
}
new szText[192], iLine, iLen, szLineData[2][32]
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
while((iLine = read_file(g_szDataDir[DIR_VIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
zino_colored_print(id, "!g[ZP] !yPlayer !t%s !yhas !gVIP.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
VipMenu(id);
return;
}
}
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"AHSMJRDC^" ; [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID]);
write_file(g_szDataDir[DIR_VIPS], szText);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !yFull !gVIP.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
case 2:
{
while((iLine = read_file(g_szDataDir[DIR_VIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
delete_line(g_szDataDir[DIR_VIPS], iLine);
zino_colored_print(0, "!g[ZP] !t%s !yHave Removed !t%s !yFrom !gVIPs.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
return;
}
}
}
}
}
public SVipMenu(id)
{
new iMenuID = menu_create("[SVIP] Owner Menu", "SVipMenuHandle");
for(new i=0; i<sizeof(g_szSVipMenuItems); i++) menu_additem(iMenuID, g_szSVipMenuItems);
menu_display(id, iMenuID);
}
public SVipMenuHandle(id, iMenuID, iItem)
{
switch(iItem)
{
case MENU_EXIT:
{
menu_destroy(iMenuID);
return;
}
case 0, 1:
{
g_PlayerInfo[id][g_iOption] = iItem+1;
ChooseSVipPlayer(id);
}
case 2: Reload(RLD_SVIPS);
}
}
public ChooseSVipPlayer(id)
{
new szItem[32], iMenuID = menu_create("Choose Target", "ChooseSVipPlayerHandle");
for(new i=0, n=0; i<=32; i++)
{
if(!is_user_connected(i)) continue;
g_PlayerInfo[n++][g_iPlayer] = i;
get_user_name(i, szItem, charsmax(szItem));
menu_additem(iMenuID, szItem, "0", 0);
}
menu_display(id, iMenuID);
}
public ChooseSVipPlayerHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
g_PlayerInfo[id][g_iChoosen] = g_PlayerInfo[iItem][g_iPlayer];
if(!is_user_connected(g_PlayerInfo[id][g_iChoosen]))
{
zino_colored_print(id, "!g[ZP] !yTarget Not Founded In The Server.");
return;
}
client_cmd(id, "messagemode ENTER_SPW");
}
public SPassEntred(id)
{
new szPassword[16]
read_argv(1, szPassword, charsmax(szPassword))
if (strlen(szPassword) < 3)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !g%s).", !strlen(szPassword) ? "EMPTY" : "TOO SHORT");
SVipMenu(id);
return;
}
if (strlen(szPassword) > 14)
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gToo Long).");
SVipMenu(id);
return;
}
for(new i = 0; i < sizeof(szPassword); i++)
{
if (isspace(szPassword))
{
zino_colored_print(id, "!g[ZP]!y Invalid Password !t(Reason !y: !gContaining Spaces).");
SVipMenu(id);
return;
}
}
new szText[192], iLine, iLen, szLineData[2][32]
switch(g_PlayerInfo[id][g_iOption])
{
case 1:
{
while((iLine = read_file(g_szDataDir[DIR_SVIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
zino_colored_print(id, "!g[ZP] !yPlayer !t%s !yhas !gSVIP.", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
SVipMenu(id);
return;
}
}
formatex(szText, charsmax(szText), "^"%s^" ^"%s^" ^"abcde^" ^"ab^" ; [%s]", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szPassword, g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID]);
write_file(g_szDataDir[DIR_SVIPS], szText);
zino_colored_print(0, "!g[ZP] !t%s !yHas Made !t%s !yFull !gSVIP.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
}
case 2:
{
while((iLine = read_file(g_szDataDir[DIR_SVIPS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;
if(equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], szLineData[0]) || equal(g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szSteamID], szLineData[0]))
{
delete_line(g_szDataDir[DIR_SVIPS], iLine);
zino_colored_print(0, "!g[ZP] !t%s !yHave Removed !t%s !yFrom !gSVIPs.", g_PlayerInfo[id][g_szName], g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName]);
return;
}
}
}
}
}
stock remove_admin(Player, Text[] = "")
{
new szText[256], iLine, iLen, szLineData[4][32]
while((iLine = read_file(g_szDataDir[DIR_USERS], iLine, szText, charsmax(szText), iLen)))
{
if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;
if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[]), szLineData[2], charsmax(szLineData[]), szLineData[3], charsmax(szLineData[])) < 4) continue;
if(equal(g_PlayerInfo[Player][g_szName], szLineData[0]) || equal(g_PlayerInfo[Player][g_szSteamID], szLineData[0]))
equal(Text, "") ? delete_line(g_szDataDir[DIR_USERS], iLine) : write_file(g_szDataDir[DIR_USERS], Text, iLine-1);
}
}
//Special Thanks to Raheem
stock delete_line(const szFile[], iLine)
{
if (file_exists(szFile))
{
new iMaxLines = file_size(szFile, 1)
new Array:szFileLines, szLine[512], iTextLen
szFileLines = ArrayCreate(512)
for (new iLineToRead = 0; iLineToRead < iMaxLines; iLineToRead++)
{
if (iLineToRead + 1 == iLine)
continue
read_file(szFile, iLineToRead, szLine, charsmax(szLine), iTextLen)
ArrayPushString(szFileLines, szLine)
}
delete_file(szFile)
for (new iLineToRead = 0; iLineToRead < ArraySize(szFileLines); iLineToRead++)
{
ArrayGetString(szFileLines, iLineToRead, szLine, charsmax(szLine))
write_file(szFile, szLine)
}
ArrayDestroy(szFileLines)
}
}
stock Reload(RELOAD_TYPE:iType) server_cmd(g_szReloadCmds[iType])
// Stock: zino_colored_print
stock zino_colored_print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
write_byte(players);
write_string(msg);
message_end();
}
}
}
}
stock zp_log(const message_fmt[], any:...)
{
static message[256], filename[32]
vformat(message, charsmax(message), message_fmt, 2)
formatex(filename, charsmax(filename), "zp_Adminmenu.log")
log_to_file(filename, "%s", message)
}