код
Код:
#include <amxmodx>
#include <amxmisc>
#include <string>
#include <file>
#include <amxconst>
#include <float>
#pragma semicolon 1
#define PLUGIN "CSSB Game Menu"
#define VERSION "1.0"
#define AUTHOR "CSSB"
#define MAX_MENU 30
#define MAX_ARG 30
//Client Menus
new szNameMenu_Client[MAX_MENU][256] ;
new szCmdMenu_Client[MAX_MENU][MAX_ARG] [256];
new szSubMenu_Client[MAX_MENU][MAX_ARG][256];
new szFlagsMenu_Client[MAX_MENU][MAX_ARG][256];
new idMainMenu_Client[MAX_MENU] = 0;
new iMenuClientNum = 0;
//Admin Menus
new szNameMenu_ClientF3[MAX_MENU][256] ;
new szCmdMenu_ClientF3[MAX_MENU][MAX_ARG][256];
new szSubMenu_ClientF3[MAX_MENU][MAX_ARG][256];
new szFlagsMenu_ClientF3[MAX_MENU][MAX_ARG][256];
new idMainMenu_ClientF3[MAX_MENU] = 0;
new iMenuClientF3Num = 0;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("clientmenu", "cssbDisplayClientF3Menu");
register_clcmd("chooseteam", "cssbDisplayClientMenu");
cssbBuildClientMenu();
cssbBuildClientF3Menu();
}
public client_authorized(id)
{
client_cmd(id, "bind ^"F3^" ^"say /menu^"");
client_cmd(id, "bind ^"M^" ^"say /admmenu^"");
}
//------------Client Menus-------------------------------------------------------
public cssbDisplayClientMenu(id)
{
menu_display( id, idMainMenu_Client[1], 0);
return PLUGIN_HANDLED;
}
cssbBuildClientMenu()
{
new szNameFileread[256] = "addons/amxmodx/configs/CSSBMenu/cssbMenuClient.ini";
if(file_exists(szNameFileread) == 1)
{
new iLine = 0;
new szDataString[256] = "\0";
new iLengthText = 0;
new szTypeSection[32];
new iNumItem = 0;
while((iLine =read_file(szNameFileread,iLine,szDataString,255,iLengthText))!=0)
{
if(equali(szDataString,";",1) || equali(szDataString,"//",2) || (strlen(szDataString) == 0) )
continue;
new szLeft[256];
new szRight[256];
split(szDataString, szLeft, 255, szRight, 255, "=");
copy(szTypeSection,31,szLeft);
if(equali(szTypeSection,"[MENU]",6))
{
iNumItem = 0;
iMenuClientNum +=1;
while(strlen(szRight))
{
split(szRight, szLeft, 255, szRight, 255, "^"");
if(!equali(szLeft," ",1))
{
copy(szNameMenu_Client[iMenuClientNum],127,szLeft);
}
}
idMainMenu_Client[iMenuClientNum] = menu_create(szNameMenu_Client[iMenuClientNum], "cssbMenuHandlerClient");
}
if(equali(szTypeSection,"[SUB]",5))
{
iNumItem += 1;
new iArg = 0;
while(strlen(szRight))
{
split(szRight, szLeft, 255, szRight, 255, "^"");
if(!equali(szLeft," ",1))
{
iArg += 1;
switch(iArg)
{
case 1:
{
new szItem[32];
format(szItem,31,"%d",iNumItem);
menu_additem(idMainMenu_Client[iMenuClientNum], szLeft,szItem,0, -1);
copy(szSubMenu_Client[iMenuClientNum][iNumItem],127,szLeft);
}
case 2:
{
copy(szCmdMenu_Client[iMenuClientNum][iNumItem],127,szLeft);
}
case 3:
{
copy(szFlagsMenu_Client[iMenuClientNum][iNumItem],127,szLeft);
iArg = 0;
}
}
}
}
}
}
}
}
public cssbMenuHandlerClient(id, menu, item)
{
if (item == MENU_EXIT)
return PLUGIN_HANDLED;
new cmd[6], szItemName[64];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,5, szItemName, 63, callback);
new iChoice = str_to_num(cmd);
new iMenu = 1;
new iIndexMenu = 1;
for(new i = 1;i <= iMenuClientNum; i++)
{
if(idMainMenu_Client[i] == menu)
{
iMenu = menu;
iIndexMenu = i;
}
}
for(new iNumArg = 1;iNumArg <= MAX_ARG; iNumArg++)
{
if(iChoice == iNumArg)
{
if(equali(szSubMenu_Client[iIndexMenu][iChoice],szItemName,32))
{
new bitFlags = read_flags(szFlagsMenu_Client[iIndexMenu][iChoice]);
if (bitFlags & 4)
client_cmd(id, "%s", szCmdMenu_Client[iIndexMenu][iChoice]);
if (bitFlags & 8)
{
new iPage = floatround(float(item / 7), floatround_method);
menu_display(id, iMenu,iPage);
}
if(equali(szFlagsMenu_Client[iIndexMenu][iChoice],"menu",32))
{
for(new iIn = 1;iIn <= iMenuClientNum;iIn++)
{
if(equali(szCmdMenu_Client[iIndexMenu][iChoice],szNameMenu_Client[iIn],32))
menu_display(id, idMainMenu_Client[iIn], 0);
}
}
}
}
}
return PLUGIN_HANDLED;
}
//------------Client Menus-------------------------------------------------------
//------------ClientF3 Menus-------------------------------------------------------
public cssbDisplayClientF3Menu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED;
menu_display( id, idMainMenu_ClientF3[1], 0);
return PLUGIN_HANDLED;
}
cssbBuildClientF3Menu()
{
new szNameFileread[256] = "addons/amxmodx/configs/CSSBMenu/cssbMenuClientF3.ini";
if(file_exists(szNameFileread) == 1)
{
new iLine = 0;
new szDataString[256] = "\0";
new iLengthText = 0;
new szTypeSection[32];
new iNumItem = 0;
while((iLine =read_file(szNameFileread,iLine,szDataString,255,iLengthText))!=0)
{
if(equali(szDataString,";",1) || equali(szDataString,"//",2) || (strlen(szDataString) == 0) )
continue;
new szLeft[256];
new szRight[256];
split(szDataString, szLeft, 255, szRight, 255, "=");
copy(szTypeSection,31,szLeft);
if(equali(szTypeSection,"[MENU]",6))
{
iNumItem = 0;
iMenuClientF3Num +=1;
while(strlen(szRight))
{
split(szRight, szLeft, 255, szRight, 255, "^"");
if(!equali(szLeft," ",1))
{
copy(szNameMenu_ClientF3[iMenuClientF3Num],127,szLeft);
}
}
idMainMenu_ClientF3[iMenuClientF3Num] = menu_create(szNameMenu_ClientF3[iMenuClientF3Num], "cssbMenuHandlerClientF3");
}
if(equali(szTypeSection,"[SUB]",5))
{
iNumItem += 1;
new iArg = 0;
while(strlen(szRight))
{
split(szRight, szLeft, 255, szRight, 255, "^"");
if(!equali(szLeft," ",1))
{
iArg += 1;
switch(iArg)
{
case 1:
{
new szItem[32];
format(szItem,31,"%d",iNumItem);
menu_additem(idMainMenu_ClientF3[iMenuClientF3Num], szLeft,szItem,0, -1);
copy(szSubMenu_ClientF3[iMenuClientF3Num][iNumItem],127,szLeft);
}
case 2:
{
copy(szCmdMenu_ClientF3[iMenuClientF3Num][iNumItem],127,szLeft);
}
case 3:
{
copy(szFlagsMenu_ClientF3[iMenuClientF3Num][iNumItem],127,szLeft);
iArg = 0;
}
}
}
}
}
}
}
}
public cssbMenuHandlerClientF3(id, menu, item)
{
if (item == MENU_EXIT)
return PLUGIN_HANDLED;
new cmd[6], szItemName[64];
new access, callback;
menu_item_getinfo(menu, item, access, cmd,5, szItemName, 63, callback);
new iChoice = str_to_num(cmd);
new iMenu = 1;
new iIndexMenu = 1;
for(new i = 1;i <= iMenuClientF3Num; i++)
{
if(idMainMenu_ClientF3[i] == menu)
{
iMenu = menu;
iIndexMenu = i;
}
}
for(new iNumArg = 1;iNumArg <= MAX_ARG; iNumArg++)
{
if(iChoice == iNumArg)
{
if(equali(szSubMenu_ClientF3[iIndexMenu][iChoice],szItemName,32))
{
new bitFlags = read_flags(szFlagsMenu_ClientF3[iIndexMenu][iChoice]);
//log_amx(szCmdMenu_ClientF3[iIndexMenu][iChoice]);
if (bitFlags & 1)
server_cmd("%s", szCmdMenu_ClientF3[iIndexMenu][iChoice]);
else if (bitFlags & 2)
console_cmd(id, "%s", szCmdMenu_ClientF3[iIndexMenu][iChoice]);
else if (bitFlags & 4)
client_cmd(id, "%s", szCmdMenu_ClientF3[iIndexMenu][iChoice]);
if (bitFlags & 8)
{
new iPage = floatround(float(item / 7), floatround_method);
menu_display(id, iMenu,iPage);
}
if(equali(szFlagsMenu_ClientF3[iIndexMenu][iChoice],"menu",32))
{
for(new iIn = 1;iIn <= iMenuClientF3Num;iIn++)
{
if(equali(szCmdMenu_ClientF3[iIndexMenu][iChoice],szNameMenu_ClientF3[iIn],32))
menu_display(id, idMainMenu_ClientF3[iIn], 0);
}
}
}
}
}
return PLUGIN_HANDLED;
}
//------------ClientF3 Menus-------------------------------------------------------