Имам нужда от помощ да довърша един плъгин нписах всичко но ми излизат грешки които хе знам как да ги поправя:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Prefix Editor"
#define VERSION "1.0"
#define AUTHOR "real<Abiss>"
#define Founder ADMIN_CFG
enum
{
DIR_PREFIXES
}
new const g_szDataDir[][] =
{
"addons/amxmodx/configs/ap_prefixes.ini"
}
enum _:PlayerData
{
g_szName[32],
g_szSteamID[32],
g_iOption,
g_iPlayer,
g_iChoosen
}
new g_PlayerInfo[33][PlayerData]
new const g_szPrefixMenuItems[][]=
{
"Add Pre-made Prefix",
"Remove Prefix"
}
new const g_szPremadeMenuItems[][]=
{
"VIP",
"ADMIN",
"STAFF",
"HEAD STAFF",
"CO-OWNER",
"OWNER"
}
new const g_szPremadePrefixes[][]=
{
"[VIP]",
"[Admin]",
"[OZ Staff]",
"[OZ Head Staff]",
"[-<Co-Owner>-]",
"[-<OWNER>-]"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("Prefix_Editor","check_access")
}
public check_access(id)
{
if(get_user_flags(id) & Founder)
{
PrefixEditorMenu(id)
}
else client_print(id, print_chat,"You don't have access to this menu!")
}
public PrefixEditorMenu(id)
{
new iMenuID = menu_create("\rPrefix Editor \w:", "PrefixEditorMenuHndle")
for(new i=0; i<sizeof(g_szPrefixMenuItems); i++) menu_additem(iMenuID, g_szPrefixMenuItems[i])
menu_display(id, iMenuID)
}
public PrefixEditorMenuHndle(id,iMenuID, iItem)
{
switch(iItem)
{
case 1: AddPremade(id)
case 2: RemovePrefix(id)
}
return PLUGIN_HANDLED
}
public AddPremade(id)
{
new szText[128]
new iMenuID = menu_create("\rChoose Prefix\w:","AddPremadeMenuHandle")
for(new i=0; i<sizeof(g_szPremadeMenuItems) && i<sizeof(g_szPremadePrefixes); i++)
{
formatex(szText, charsmax(szText), "\y%s \w(\r %s \w)", g_szPremadeMenuItems[i] ,g_szPremadePrefixes[i])
menu_additem(iMenuID, szText)
}
menu_display(id, iMenuID)
}
public AddPremadeMenuHandle(id, iMenuID, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenuID);
return;
}
switch(iItem)
{
case 0 .. 10:
{
g_PlayerInfo[id][g_iOption] = iItem+1
ChoosePrefixPlayer(id)
}
}
}
public ChoosePrefixPlayer(id)
{
new szItem[32], iMenuID = menu_create("\yChoose Target \w:", "ChoosePrefixPlayerHandle");
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 ChoosePrefixPlayerHandle(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]))
{
client_print(id, print_chat, "!g[Oblivion Zombie] !yTarget Not Founded In The Server.")
AddPremade(id)
return;
}
PrefixAdded(id)
}
public PrefixAdded(id)
{
new szText[256]
for(new i = 1; i < sizeof(g_szPremadePrefixes); i++)
{
if (g_PlayerInfo[id][g_iOption] == i)
{
formatex(szText, charsmax(szText), "^"n^"^"%s^"^"%s^"", g_PlayerInfo[g_PlayerInfo[id][g_iChoosen]][g_szName], g_szPremadePrefixes[i-1]);
write_file(g_szDataDir[DIR_PREFIXES], szText);
client_print(id, print_chat, "Perfix is added!")
}
}
}
public RemovePrefix(id)
{
{
new szItem[32]
new iMenuID = menu_create("\yChoose Target \w:", "RemovePrefixHandle");
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 RemovePrefixHandle(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]))
{
client_print(id, print_chat, "[Oblivion Zombie] Target Not Founded In The Server.")
PrefixEditorMenu(id)
return;
}
PrefixRemoved(id)
}
public PrefixRemoved(id)
{
new szText[192], iLine, iLen, szLineData[2][32]
while((iLine = read_file(g_szDataDir[DIR_PREFIXES], 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_PREFIXES], iLine);
client_print(id, print_chat,"Prefix removed!")
return;
}
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)
}
}
Това са грешките които излизат.
Warning: Loose indentation on line 185
Error: Invalid expression, assumed zero on line 185
Error: Undefined symbol "RemovePrefixHandle" on line 185
Error: Undefined symbol "iItem" on line 185
Error: Too many error messages on one line on line 185
Compilation aborted.
4 Errors.
Could not locate output file E:\games\Counter-Strike\cstrike\addons\amxmodx\scripting\zp_prefix_editor_menu.amx (compile failed).