Хотел скомпилировать плагин для зомби сервера но вылезла ошибка
Ошибка компиляции:
AMX Mod X Compiler 1.8.3-dev+5147
Copyright © 1997-2006 ITB CompuPhase
Copyright © 2004-2013 AMX Mod X Team
bossmenuZM.sma(45) : error 035: argument type mismatch (argument 2)
bossmenuZM.sma(68) : error 028: invalid subscript (not an array or too many subscripts): "iWeapon"
bossmenuZM.sma(68) : warning 215: expression has no effect
bossmenuZM.sma(68) : error 001: expected token: ";", but found "]"
bossmenuZM.sma(68) : error 029: invalid expression, assumed zero
bossmenuZM.sma(68) : fatal error 107: too many error messages on one line
Compilation aborted.
5 Errors.
Done.
Исходник прикрепляю
Кто не может скачать то он ниже
Код:
/*История изменений:
1.0 (???) by ???
*Первый релиз.
1.1 (07.11.2020) by b0t.
*Редактура.
*Оптимизация.
*/
#include < amxmodx >
#include < zombieplague >
new const VERSION[] = "1.1"
native give_plasmagun(const pPlayer);
native give_weapon_turbulent5(const pPlayer);
native give_augex(const pPlayer);
native give_xm8(const pPlayer);
native give_NENATIVE_sprifle(const pPlayer);
#define fx formatex
#define cx charsmax
#define flags(%0) get_user_flags(%0)
/*
*Флаг доступа к меню.
*/
new const g_szAdminAccess[] = "d";
new
g_szAdminFlags,
gMaxPlayers,
iRounds[33][4],
iWeapon[33][5];
public plugin_init()
{
register_plugin("BossMenuZP",VERSION,"[CSMods]");
RegisterHookSay("boss_menu","ShowBossMenu");
g_szAdminFlags = read_flags(g_szAdminAccess);
gMaxPlayers = get_maxplayers();
}
public zp_round_ended()
{
for(new pPlayer=0;pPlayer<=gMaxPlayers;pPlayer++)
{
if(!is_user_connected(pPlayer))
continue;
if(flags(pPlayer) & g_szAdminFlags)
{
for(new iRound=0;iRound<4;iRound++)
{
if(iRounds[pPlayer][iRound] > 0)
iRounds[pPlayer][iRound]--;
}
for(new iWeapon=0;iWeapon<5;iWeapon++)
{
if(iWeapon[pPlayer][iWeapon] > 0)
iWeapon[pPlayer][iWeapon]--;
}
}
}
}
public ShowBossMenu(const id)
{
new iMenu = menu_create("\wМеню \yБосса","BossMenuHandled");
if(flags(id) & g_szAdminFlags)
{
menu_additem(iMenu,"Оружия \yБосса","1");
menu_additem(iMenu,"Взять Аммо [\y+500\w]","2");
menu_additem(iMenu,"Взять Броню [\y+100\w]","3");
menu_additem(iMenu,"Взять Жизни [\y+100\w]","4");
}
else
{
menu_additem(iMenu,"\dОружия Босса","1");
menu_additem(iMenu,"\dВзять Аммо [+500]","2");
menu_additem(iMenu,"\dВзять Броню [+100]","3");
menu_additem(iMenu,"\dВзять Жизни [+100]","4");
}
menu_setprop(iMenu,MPROP_EXITNAME,"Выход");
menu_setprop(iMenu,MPROP_NUMBER_COLOR,flags(id) & g_szAdminFlags ? "\y" : "\d");
menu_display(id,iMenu,0);
return PLUGIN_HANDLED;
}
public BossMenuHandled(const id,const iMenu,const iItem)
{
if(iItem==MENU_EXIT)
return menu_destroy(iMenu);
new iAccess,szData[64],szName[64],iCallback;
menu_item_getinfo(iMenu,iItem,iAccess,szData,cx(szData),szName,cx(szName),iCallb
ack);
menu_destroy(iMenu);
if(!(flags(id) & g_szAdminFlags))
return client_print_color(id,print_team_default,"^4[^1Ошибка^4]^1 Для этого вам нужно купить ^4Босс^1. Пишите в : [СКОРО]");
else if(!is_user_alive(id))
return client_print_color(id,print_team_default,"^4[^1Ошибка^4]^1 Для этого вы должны быть ^4живы^1!");
else if(iRound[id][str_to_num(szData)] > 0)
return client_print_color(id,print_team_default,"^4[^x01Ошибка^4]^1 Подождите еще ^4%i^1 раундов!",iRound[id][str_to_num(szData)])
switch(str_to_num(szData))
{
case 1: ShowWeaponMenu(id);
case 2:
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 500);
iRound[id][str_to_num(szData)]=30;
}
case 3:
{
if(zp_get_user_zombie(id))
return zp_colored_print(id, "^4[Ошибка]^3Броню ^1можно брать ^4ТОЛЬКО ЛЮДЯМ");
set_pev(id,pev_armorvalue,pev(id, pev_armorvalue)+100.0);
iRound[id][str_to_num(szData)]=1;
}
case 4:
{
if(zp_get_user_zombie(id))
return zp_colored_print(id, "^4[Ошибка]^1Жизни можно брать ^4ТОЛЬКО ЛЮДЯМ")
set_pev(id, pev_health, pev(id, pev_health)+100.0)
iRound[id][str_to_num(szData)]=1;
}
}
return PLUGIN_HANDLED;
}
public ShowWeaponMenu(const id)
{
new iMenu = menu_create("\yОружия \wБосса","WeaponMenuHandled");
if(flags(id) & g_szAdminFlags)
{
menu_additem(iMenu,"Взять \r[\wGuardian\r]","1");
menu_additem(iMenu,"Взять \r[\wCrow-7\r]","2");
menu_additem(iMenu,"Взять \r[\wAK-47 Paladin\r]","3");
menu_additem(iMenu,"Взять \r[\wM4a1 Vulcan\r]","4");
menu_additem(iMenu,"Взять \r[\wThunderbolt\r]","5");
}
else
{
menu_additem(iMenu,"\dВзять [Guardian]","1");
menu_additem(iMenu,"\dВзять [Crow-7]","2");
menu_additem(iMenu,"\dВзять [AK-47 Paladin]","3");
menu_additem(iMenu,"\dВзять [M4a1 Vulcan]","4");
menu_additem(iMenu,"\dВзять [Thunderbolt]","5");
}
menu_setprop(iMenu,MPROP_EXITNAME,"Выход");
menu_setprop(iMenu,MPROP_NUMBER_COLOR,flags(id) & g_szAdminFlags ? "\y" : "\d");
menu_display(id,iMenu,0);
return PLUGIN_HANDLED;
}
public WeaponMenuHandled(const id,const iMenu,const iItem)
{
if(iItem==MENU_EXIT)
return menu_destroy(iMenu);
new iAccess,szData[64],szName[64],iCallback;
menu_item_getinfo(iMenu,iItem,iAccess,szData,cx(szData),szName,cx(szName),iCallb
ack);
menu_destroy(iMenu);
if(!(flags(id) & g_szAdminFlags))
return client_print_color(id,print_team_default,"^4[^1Ошибка^4]^1 Для этого вам нужно купить ^4Босс^1. Пишите в : [СКОРО]");
else if(!is_user_alive(id))
return client_print_color(id,print_team_default,"^4[^1Ошибка^4]^1 Для этого вы должны быть ^4живы^1!");
else if(zp_get_user_zombie(id))
return client_print_color(id,print_team_default,"^4[Ошибка]^1оружия Босса можно брать ^4ТОЛЬКО ЛЮДЯМ");
else if(iWeapon[id][str_to_num(szData)] > 0)
return client_print_color(id,print_team_default,"^4[^x01Ошибка^4]^1 Подождите еще ^4%i^1 раундов!",iWeapon[id][str_to_num(szData)])
switch(str_to_num(szData))
{
case 1:
{
give_plasmagun(id)
iWeapon[id][str_to_num(szData)]=1
}
case 2:
{
give_weapon_turbulent5(id)
iWeapon[id][str_to_num(szData)]=1
}
case 3:
{
give_augex(id)
iWeapon[id][str_to_num(szData)]=1
}
case 4:
{
give_xm8(id)
iWeapon[id][str_to_num(szData)]=1
}
case 5:
{
give_NENATIVE_sprifle(id)
iWeapon[id][str_to_num(szData)]=1
}
}
return PLUGIN_HANDLED;
}
stock RegisterHookSay(szCmd[],szFunc)
{
new szView[64];
fx(szView,cx(szView),"say /%s",szCmd);
register_clcmd(szView,szFunc);
fx(szView,cx(szView),"say_team /%s",szCmd);
register_clcmd(szView,szFunc);
fx(szView,cx(szView),"%s",szCmd);
register_clcmd(szView,szFunc);
}