Страница 1 от 1

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 15 Апр 2019, 14:23
от Abiss32
Здравей!

Имам нужда от помощ да довърша един плъгин нписах всичко но ми излизат грешки които хе знам как да ги поправя:

Код за потвърждение: Избери целия код

#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).

Имам нужда от помощ

Публикувано на: 15 Апр 2019, 16:36
от OciXCrom
Оправи си заглавието на темата и сподели какви грешки излизат.

Поправка на плъгин

Публикувано на: 15 Апр 2019, 17:04
от JackEyedJones

Код за потвърждение: Избери целия код

#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)
	}
}
В този вариант, плъгина няма да работи. Без тестове го казвам.
Още от тук е проблема:

Код за потвърждение: Избери целия код

is_user_connected(g_PlayerInfo[id][g_iChoosen])
Без регистрация с for( няма да намери индекса.

Поправка на плъгин

Публикувано на: 15 Апр 2019, 22:28
от stambeto2006
До автора на темата оправи си заглавието това, че си го направил от "Имам нужда от помощ" на "Поправка на плъгин" отново не става на въпрос за какво става дума в темата. Ако не си оправиш заглавието, темата ще ти бъде заключена и директно ще отиде в "КОША" да се научиш.

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 16 Апр 2019, 14:11
от Abiss32
Надявам се новото заглавие да ви устройва...
И ако може някой да оправи плъгине ще бъде страхотно

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 21 Апр 2019, 13:59
от illusion
Пробва ли изобщо това, което е написал @JackEyedJones?

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 22 Апр 2019, 00:03
от Abiss32
То плъгина въобще не иска да се компилира дава много грешки и мисля че някои идват от stock-овете

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 22 Апр 2019, 07:35
от JackEyedJones
Тук е окей всичко.
:hooray:
Screenshot_97.png
Screenshot_97.png (27.12 KiB) Преглеждано 4004 пъти
Screenshot_97.png
Screenshot_97.png (27.12 KiB) Преглеждано 4004 пъти

Заявка за поправяне на Prefix Editor Menu

Публикувано на: 22 Апр 2019, 16:18
от stambeto2006
Abiss32 написа: 22 Апр 2019, 00:03 То плъгина въобще не иска да се компилира дава много грешки и мисля че някои идват от stock-овете
Може да покажеш какви грешки ти дава, а не само да казвате. Ако използваш готов мод от цс-хлапе.инфо, където да са ровичкани библиотеките е нормално да ти дава.

Току що пробвах при мен и се компилира без никакви грешки, както е показал и @JackEyedJones.