Редакция на GlowMenu

Въпроси и проблеми свързани с AMXModX.
Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Редакция на GlowMenu

Мнение от HeatoN » 24 Яну 2023, 16:51

Здравейте, бих искал ако може кода по долу да се направи за респаун сървър така че след като умреш glow-a да не изчезва

Пускам нова тема защото не мога да издигна старата

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

/* Sublime AMXX Editor v2.2 */

/*
	Credits to OciXCrom: took his way of configuring everything without hardcoding.
*/

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cromchat>

#pragma semicolon 1

#define PLUGIN  "Advanced Glow Menu [AGM]"
#define VERSION "2.1.1"
#define AUTHOR  "NapoleoN#"

#if AMXX_VERSION_NUM < 183
	const MAX_PLAYERS = 32;
	const MAX_NAME_LENGTH = 32;
	const MAX_FMT_LENGTH = 256;
#endif

enum _:g_eSettings
{
	PREFIX_STR[MAX_PLAYERS + 1],
	ACCESS_FLAGS_BIT,
	ACCESS_FLAGS_STR[MAX_PLAYERS + 1],
	AIM_FLAGS_BIT,
	AIM_FLAGS_STR[MAX_PLAYERS + 1],
	bool:CHAT_MSG_ENABLED,
	bool:RESET_GLOW_ROUNDSTART,
};

new g_szSettings[g_eSettings];

new Array:g_aColorInfo;
new g_iColorSize;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_dictionary("AGMML.txt");

	register_logevent("roundStart", 2, "1=Round_Start");

	g_aColorInfo = ArrayCreate(50);

	readConfigFile(); // Changing any settings requires the map to be changed or the server to be restarted.
	readColors(); // Changing any settings requires the map to be changed or the server to be restarted.
}

public plugin_end()
{
	ArrayDestroy(g_aColorInfo);
}

public setGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);

		log_amx("Access granted.");
		
		if(iTarget)
		{
			log_amx("Valid target found.");

			switch(get_user_team(iTarget))
			{
				case 1: set_user_rendering(iTarget, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25); // Terrorists
				case 2: set_user_rendering(iTarget, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25); // CT
			}
		}
	}
}

public removeGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);
		
		if(iTarget)
		{
			set_user_rendering(iTarget);
		}
	}
}

public openGlowMenu(id)
{
	if(!has_agm_access(id))
	{
		if(g_szSettings[CHAT_MSG_ENABLED])
		{
			ColorChat(id, GREEN, "%L", id, "MSG_NO_ACCESS", g_szSettings[PREFIX_STR]);
		}
		return PLUGIN_HANDLED;
	}

	displayColorMenu(id);
	return PLUGIN_HANDLED;
}

displayColorMenu(id)
{
	new szTemp[64];
	formatex(szTemp, charsmax(szTemp), "%s Set glow color", g_szSettings[PREFIX_STR]);
	new iColorMenu = menu_create(szTemp, "colorMenuHandler");

	new szColor[32], szCode[32], szColorData[MAX_FMT_LENGTH];
	for(new i; i < g_iColorSize; i++) {
		ArrayGetString(g_aColorInfo, i, szColorData, charsmax(szColorData));

		split(szColorData, szColor, charsmax(szColor), szCode, charsmax(szCode), " ");
		remove_quotes(szColor);

		formatex(szColorData, charsmax(szColorData), "%s %s", szCode, szColor);
		menu_additem(iColorMenu, szColor, szColorData);
	}
	menu_display(id, iColorMenu);
}

public colorMenuHandler(id, iMenu, iItem)
{
	if(is_user_alive(id))
	{
		new szCode[50], szR[4], szG[4], szB[4], szItem[38], iRed, iGreen, iBlue;
		new iAccess, iCallBack;
		menu_item_getinfo(iMenu, iItem, iAccess, szCode, charsmax(szCode), _, _, iCallBack);

		parse(szCode, szR, charsmax(szR), szG, charsmax(szG), szB, charsmax(szB), szItem, charsmax(szItem));

		iRed = str_to_num(szR);
		iGreen = str_to_num(szG);
		iBlue = str_to_num(szB);

		set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 25);

		if(g_szSettings[CHAT_MSG_ENABLED] && (iItem != MENU_EXIT))
		{
			new szName[32]; get_user_name(id, szName, charsmax(szName));
			ColorChat(id, GREEN, "%L", id, "MSG_SET_GLOW", g_szSettings[PREFIX_STR], szName, szItem);
		}
	}
	menu_destroy(iMenu);
}

public roundStart()
{
	if(g_szSettings[RESET_GLOW_ROUNDSTART])
	{
		new iPlayers[MAX_PLAYERS], iNum;
		get_players(iPlayers, iNum, "ch");

		for(new i; i < iNum; i++)
		{
			set_user_rendering(iPlayers[i]);
		}
	}
}

bool:has_agm_access(const id)
{
	 return ((get_user_flags(id) & g_szSettings[ACCESS_FLAGS_BIT]) == g_szSettings[ACCESS_FLAGS_BIT]);
}

bool:has_aim_access(const id)
{
	return ((get_user_flags(id) & g_szSettings[AIM_FLAGS_BIT]) == g_szSettings[AIM_FLAGS_BIT]);
}

readConfigFile()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMConfig.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");

	if(iPointer)
	{
		new szData[96], szValue[64], szKey[32];

		while(!feof(iPointer))
		{
			fgets(iPointer, szData, charsmax(szData));
			trim(szData);

			switch(szData[0])
			{
				case EOS, '#', ';': continue;
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=');
					trim(szKey);
					trim(szValue);

					if(equal(szKey, "CHAT_PREFIX"))
					{
						copy(g_szSettings[PREFIX_STR], charsmax(g_szSettings[PREFIX_STR]), szValue);
					}

					else if(equal(szKey, "ACCESS_FLAGS"))
					{
						copy(g_szSettings[ACCESS_FLAGS_STR], charsmax(g_szSettings[ACCESS_FLAGS_STR]), szValue);
						g_szSettings[ACCESS_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "AIM_FLAGS"))
					{
						copy(g_szSettings[AIM_FLAGS_STR], charsmax(g_szSettings[AIM_FLAGS_STR]), szValue);
						g_szSettings[AIM_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "CHAT_MSG_ENABLED"))
					{
						g_szSettings[CHAT_MSG_ENABLED] = bool:str_to_num(szValue);
					}

					else if(equal(szKey, "RESET_GLOW"))
					{
						g_szSettings[RESET_GLOW_ROUNDSTART] = bool:str_to_num(szValue);
					}

					if(equal(szKey, "GLOWMENU_COMMANDS"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							if(szKey[0] == '/' || szKey[0] == '!')
							{
								formatex(szData, charsmax(szData), "say %s", szKey);
								register_clcmd(szData, "openGlowMenu");
								formatex(szData, charsmax(szData), "say_team %s", szKey);
								register_clcmd(szData, "openGlowMenu");
							}
							else 
							{
								register_clcmd(szData, "openGlowMenu");
							}
						}
					}

					if(equal(szKey, "TARGET_AIM_SET_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "setGlowTarget");
						}
					}

					if(equal(szKey, "TARGET_AIM_REMOVE_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "removeGlowTarget");
						}
					}
				}
			}
		}
		fclose(iPointer);
	}
}

readColors()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMColors.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");
	new szLine[50];

	while(fgets(iPointer, szLine, charsmax(szLine))) 
	{
		trim(szLine);

		if(szLine[0] == EOS || szLine[0] == ';' || (szLine[0] == '/' && szLine[1] == '/') || szLine[0] == '#') 
		{
			continue;
		}

		ArrayPushString(g_aColorInfo, szLine);
		g_iColorSize = ArraySize(g_aColorInfo);
		log_amx(szLine);
	}
	fclose(iPointer);
}
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

Re: Редакция на GlowMenu

Мнение от Dennis » 27 Яну 2023, 20:06

Here you go.

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

/* Sublime AMXX Editor v2.2 */

/*
	Credits to OciXCrom: took his way of configuring everything without hardcoding.
*/

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cromchat>
#include <hamsandwich>

#pragma semicolon 1

#define PLUGIN  "Advanced Glow Menu [AGM]"
#define VERSION "2.1.1"
#define AUTHOR  "NapoleoN#"

#if AMXX_VERSION_NUM < 183
	const MAX_PLAYERS = 32;
	const MAX_NAME_LENGTH = 32;
	const MAX_FMT_LENGTH = 256;
#endif

enum _:g_eSettings
{
	PREFIX_STR[MAX_PLAYERS + 1],
	ACCESS_FLAGS_BIT,
	ACCESS_FLAGS_STR[MAX_PLAYERS + 1],
	AIM_FLAGS_BIT,
	AIM_FLAGS_STR[MAX_PLAYERS + 1],
	bool:CHAT_MSG_ENABLED,
};

new g_szSettings[g_eSettings];

new Array:g_aColorInfo;
new g_iColorSize;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_dictionary("AGMML.txt");

	register_logevent("roundStart", 2, "1=Round_Start");

	g_aColorInfo = ArrayCreate(50);
	
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)

	readConfigFile(); // Changing any settings requires the map to be changed or the server to be restarted.
	readColors(); // Changing any settings requires the map to be changed or the server to be restarted.
}

public plugin_end()
{
	ArrayDestroy(g_aColorInfo);
}

public setGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);

		log_amx("Access granted.");
		
		if(iTarget)
		{
			log_amx("Valid target found.");

			switch(get_user_team(iTarget))
			{
				case 1: set_user_rendering(iTarget, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25); // Terrorists
				case 2: set_user_rendering(iTarget, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25); // CT
			}
		}
	}
}

public removeGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);
		
		if(iTarget)
		{
			set_user_rendering(iTarget);
		}
	}
}

public openGlowMenu(id)
{
	if(!has_agm_access(id))
	{
		if(g_szSettings[CHAT_MSG_ENABLED])
		{
			ColorChat(id, GREEN, "%L", id, "MSG_NO_ACCESS", g_szSettings[PREFIX_STR]);
		}
		return PLUGIN_HANDLED;
	}

	displayColorMenu(id);
	return PLUGIN_HANDLED;
}

displayColorMenu(id)
{
	new szTemp[64];
	formatex(szTemp, charsmax(szTemp), "%s Set glow color", g_szSettings[PREFIX_STR]);
	new iColorMenu = menu_create(szTemp, "colorMenuHandler");

	new szColor[32], szCode[32], szColorData[MAX_FMT_LENGTH];
	for(new i; i < g_iColorSize; i++) {
		ArrayGetString(g_aColorInfo, i, szColorData, charsmax(szColorData));

		split(szColorData, szColor, charsmax(szColor), szCode, charsmax(szCode), " ");
		remove_quotes(szColor);

		formatex(szColorData, charsmax(szColorData), "%s %s", szCode, szColor);
		menu_additem(iColorMenu, szColor, szColorData);
	}
	menu_display(id, iColorMenu);
}

public colorMenuHandler(id, iMenu, iItem)
{
	if(is_user_alive(id))
	{
		new szCode[50], szR[4], szG[4], szB[4], szItem[38], iRed, iGreen, iBlue;
		new iAccess, iCallBack;
		menu_item_getinfo(iMenu, iItem, iAccess, szCode, charsmax(szCode), _, _, iCallBack);

		parse(szCode, szR, charsmax(szR), szG, charsmax(szG), szB, charsmax(szB), szItem, charsmax(szItem));

		iRed = str_to_num(szR);
		iGreen = str_to_num(szG);
		iBlue = str_to_num(szB);

		set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 25);

		if(g_szSettings[CHAT_MSG_ENABLED] && (iItem != MENU_EXIT))
		{
			new szName[32]; get_user_name(id, szName, charsmax(szName));
			ColorChat(id, GREEN, "%L", id, "MSG_SET_GLOW", g_szSettings[PREFIX_STR], szName, szItem);
		}
	}
	menu_destroy(iMenu);
}

public fwHamPlayerSpawnPost(iPlayer)
{
	if (is_user_alive(iPlayer))
	{
		set_user_rendering(iPlayer);
	}
}

bool:has_agm_access(const id)
{
	 return ((get_user_flags(id) & g_szSettings[ACCESS_FLAGS_BIT]) == g_szSettings[ACCESS_FLAGS_BIT]);
}

bool:has_aim_access(const id)
{
	return ((get_user_flags(id) & g_szSettings[AIM_FLAGS_BIT]) == g_szSettings[AIM_FLAGS_BIT]);
}

readConfigFile()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMConfig.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");

	if(iPointer)
	{
		new szData[96], szValue[64], szKey[32];

		while(!feof(iPointer))
		{
			fgets(iPointer, szData, charsmax(szData));
			trim(szData);

			switch(szData[0])
			{
				case EOS, '#', ';': continue;
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=');
					trim(szKey);
					trim(szValue);

					if(equal(szKey, "CHAT_PREFIX"))
					{
						copy(g_szSettings[PREFIX_STR], charsmax(g_szSettings[PREFIX_STR]), szValue);
					}

					else if(equal(szKey, "ACCESS_FLAGS"))
					{
						copy(g_szSettings[ACCESS_FLAGS_STR], charsmax(g_szSettings[ACCESS_FLAGS_STR]), szValue);
						g_szSettings[ACCESS_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "AIM_FLAGS"))
					{
						copy(g_szSettings[AIM_FLAGS_STR], charsmax(g_szSettings[AIM_FLAGS_STR]), szValue);
						g_szSettings[AIM_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "CHAT_MSG_ENABLED"))
					{
						g_szSettings[CHAT_MSG_ENABLED] = bool:str_to_num(szValue);
					}

					if(equal(szKey, "GLOWMENU_COMMANDS"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							if(szKey[0] == '/' || szKey[0] == '!')
							{
								formatex(szData, charsmax(szData), "say %s", szKey);
								register_clcmd(szData, "openGlowMenu");
								formatex(szData, charsmax(szData), "say_team %s", szKey);
								register_clcmd(szData, "openGlowMenu");
							}
							else 
							{
								register_clcmd(szData, "openGlowMenu");
							}
						}
					}

					if(equal(szKey, "TARGET_AIM_SET_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "setGlowTarget");
						}
					}

					if(equal(szKey, "TARGET_AIM_REMOVE_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "removeGlowTarget");
						}
					}
				}
			}
		}
		fclose(iPointer);
	}
}

readColors()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMColors.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");
	new szLine[50];

	while(fgets(iPointer, szLine, charsmax(szLine))) 
	{
		trim(szLine);

		if(szLine[0] == EOS || szLine[0] == ';' || (szLine[0] == '/' && szLine[1] == '/') || szLine[0] == '#') 
		{
			continue;
		}

		ArrayPushString(g_aColorInfo, szLine);
		g_iColorSize = ArraySize(g_aColorInfo);
		log_amx(szLine);
	}
	fclose(iPointer);
}

Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Re: Редакция на GlowMenu

Мнение от Huehue » 27 Яну 2023, 21:44

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

/* Sublime AMXX Editor v2.2 */

/*
	Credits to OciXCrom: took his way of configuring everything without hardcoding.
*/

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cromchat>
#include <hamsandwich>

//#define DEBUG_MESSAGES

#pragma semicolon 1

#define PLUGIN  "Advanced Glow Menu [AGM]"
#define VERSION "2.1.2"
#define AUTHOR  "NapoleoN#"

#if AMXX_VERSION_NUM < 183
	const MAX_PLAYERS = 32;
	const MAX_NAME_LENGTH = 32;
	const MAX_FMT_LENGTH = 256;
#endif

enum _:g_eSettings
{
	PREFIX_STR[MAX_PLAYERS + 1],
	ACCESS_FLAGS_BIT,
	ACCESS_FLAGS_STR[MAX_PLAYERS + 1],
	AIM_FLAGS_BIT,
	AIM_FLAGS_STR[MAX_PLAYERS + 1],
	bool:CHAT_MSG_ENABLED,
};

new g_szSettings[g_eSettings];

enum _:eRGB
{
	R, G, B
};

new g_iPlayerColor[MAX_PLAYERS + 1][eRGB];

new Array:g_aColorInfo;
new g_iColorSize;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_dictionary("AGMML.txt");

	g_aColorInfo = ArrayCreate(50);
	
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);

	readConfigFile(); // Changing any settings requires the map to be changed or the server to be restarted.
	readColors(); // Changing any settings requires the map to be changed or the server to be restarted.
}

public plugin_end()
{
	ArrayDestroy(g_aColorInfo);
}

public setGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);

		#if defined DEBUG_MESSAGES
		log_amx("Access granted.");
		#endif
		
		if(iTarget)
		{
			#if defined DEBUG_MESSAGES
			log_amx("Valid target found.");
			#endif

			switch(get_user_team(iTarget))
			{
				case 1:
				{
					g_iPlayerColor[iTarget][R] = 255;
					g_iPlayerColor[iTarget][G] = 0;
					g_iPlayerColor[iTarget][B] = 0;
					set_user_rendering(iTarget, kRenderFxGlowShell, g_iPlayerColor[iTarget][R], g_iPlayerColor[iTarget][G], g_iPlayerColor[iTarget][B], kRenderNormal, 25); // Terrorists
				}
				case 2:
				{
					g_iPlayerColor[iTarget][R] = 0;
					g_iPlayerColor[iTarget][G] = 0;
					g_iPlayerColor[iTarget][B] = 255;
					set_user_rendering(iTarget, kRenderFxGlowShell, g_iPlayerColor[iTarget][R], g_iPlayerColor[iTarget][G], g_iPlayerColor[iTarget][B], kRenderNormal, 25); // CT
				}
			}
		}
	}
}

public removeGlowTarget(id)
{
	if(has_aim_access(id))
	{
		new iTarget, iBody;
		get_user_aiming(id, iTarget, iBody);
		
		if(iTarget)
		{
			set_user_rendering(iTarget);
		}
	}
}

public openGlowMenu(id)
{
	if(!has_agm_access(id))
	{
		if(g_szSettings[CHAT_MSG_ENABLED])
		{
			ColorChat(id, GREEN, "%L", id, "MSG_NO_ACCESS", g_szSettings[PREFIX_STR]);
		}
		return PLUGIN_HANDLED;
	}

	displayColorMenu(id);
	return PLUGIN_HANDLED;
}

displayColorMenu(id)
{
	new szTemp[64];
	formatex(szTemp, charsmax(szTemp), "%s Set glow color", g_szSettings[PREFIX_STR]);
	new iColorMenu = menu_create(szTemp, "colorMenuHandler");

	new szColor[32], szCode[32], szColorData[MAX_FMT_LENGTH];
	for(new i; i < g_iColorSize; i++) {
		ArrayGetString(g_aColorInfo, i, szColorData, charsmax(szColorData));

		split(szColorData, szColor, charsmax(szColor), szCode, charsmax(szCode), " ");
		remove_quotes(szColor);

		formatex(szColorData, charsmax(szColorData), "%s %s", szCode, szColor);
		menu_additem(iColorMenu, szColor, szColorData);
	}
	menu_display(id, iColorMenu);
}

public colorMenuHandler(id, iMenu, iItem)
{
	if(is_user_alive(id))
	{
		new szCode[50], szR[4], szG[4], szB[4], szItem[38];
		new iAccess, iCallBack;
		menu_item_getinfo(iMenu, iItem, iAccess, szCode, charsmax(szCode), _, _, iCallBack);

		parse(szCode, szR, charsmax(szR), szG, charsmax(szG), szB, charsmax(szB), szItem, charsmax(szItem));

		g_iPlayerColor[id][R] = str_to_num(szR);
		g_iPlayerColor[id][G] = str_to_num(szG);
		g_iPlayerColor[id][B] = str_to_num(szB);

		set_user_rendering(id, kRenderFxGlowShell, g_iPlayerColor[id][R], g_iPlayerColor[id][G], g_iPlayerColor[id][B], kRenderNormal, 25);

		if(g_szSettings[CHAT_MSG_ENABLED] && (iItem != MENU_EXIT))
		{
			new szName[32]; get_user_name(id, szName, charsmax(szName));
			ColorChat(id, GREEN, "%L", id, "MSG_SET_GLOW", g_szSettings[PREFIX_STR], szName, szItem);
		}
	}
	menu_destroy(iMenu);
}

public fwHamPlayerSpawnPost(iPlayer)
{
	if (is_user_alive(iPlayer))
	{
		set_user_rendering(iPlayer, kRenderFxGlowShell, g_iPlayerColor[iPlayer][R], g_iPlayerColor[iPlayer][G], g_iPlayerColor[iPlayer][B], kRenderNormal, 25);
	}
}

bool:has_agm_access(const id)
{
	 return ((get_user_flags(id) & g_szSettings[ACCESS_FLAGS_BIT]) == g_szSettings[ACCESS_FLAGS_BIT]);
}

bool:has_aim_access(const id)
{
	return ((get_user_flags(id) & g_szSettings[AIM_FLAGS_BIT]) == g_szSettings[AIM_FLAGS_BIT]);
}

readConfigFile()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMConfig.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");

	if(iPointer)
	{
		new szData[96], szValue[64], szKey[32];

		while(!feof(iPointer))
		{
			fgets(iPointer, szData, charsmax(szData));
			trim(szData);

			switch(szData[0])
			{
				case EOS, '#', ';': continue;
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=');
					trim(szKey);
					trim(szValue);

					if(equal(szKey, "CHAT_PREFIX"))
					{
						copy(g_szSettings[PREFIX_STR], charsmax(g_szSettings[PREFIX_STR]), szValue);
					}

					else if(equal(szKey, "ACCESS_FLAGS"))
					{
						copy(g_szSettings[ACCESS_FLAGS_STR], charsmax(g_szSettings[ACCESS_FLAGS_STR]), szValue);
						g_szSettings[ACCESS_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "AIM_FLAGS"))
					{
						copy(g_szSettings[AIM_FLAGS_STR], charsmax(g_szSettings[AIM_FLAGS_STR]), szValue);
						g_szSettings[AIM_FLAGS_BIT] = read_flags(szValue);
					}

					else if(equal(szKey, "CHAT_MSG_ENABLED"))
					{
						g_szSettings[CHAT_MSG_ENABLED] = bool:str_to_num(szValue);
					}

					if(equal(szKey, "GLOWMENU_COMMANDS"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							if(szKey[0] == '/' || szKey[0] == '!')
							{
								formatex(szData, charsmax(szData), "say %s", szKey);
								register_clcmd(szData, "openGlowMenu");
								formatex(szData, charsmax(szData), "say_team %s", szKey);
								register_clcmd(szData, "openGlowMenu");
							}
							else 
							{
								register_clcmd(szData, "openGlowMenu");
							}
						}
					}

					if(equal(szKey, "TARGET_AIM_SET_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "setGlowTarget");
						}
					}

					if(equal(szKey, "TARGET_AIM_REMOVE_GLOW"))
					{
						while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
						{
							trim(szKey);
							trim(szValue);

							formatex(szData, charsmax(szData), "%s", szKey);
							register_clcmd(szData, "removeGlowTarget");
						}
					}
				}
			}
		}
		fclose(iPointer);
	}
}

readColors()
{
	new szConfigsDir[MAX_FMT_LENGTH], szFileName[MAX_FMT_LENGTH];
	get_configsdir(szConfigsDir, charsmax(szConfigsDir));
	formatex(szFileName, charsmax(szFileName), "%s/AGMColors.ini", szConfigsDir);

	new iPointer = fopen(szFileName, "rt");
	new szLine[50];

	while(fgets(iPointer, szLine, charsmax(szLine))) 
	{
		trim(szLine);

		if(szLine[0] == EOS || szLine[0] == ';' || (szLine[0] == '/' && szLine[1] == '/') || szLine[0] == '#') 
		{
			continue;
		}

		ArrayPushString(g_aColorInfo, szLine);
		g_iColorSize = ArraySize(g_aColorInfo);
		log_amx(szLine);
	}
	fclose(iPointer);
}
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

My GitHub Profile
GitHub

My AMXX Includes Collection
AMXX Include Libraries

My Steam Profile (from SteamDB)
  • Value: 4179€
  • Games owned: 1855
  • Games played: 754 (40%)
  • Hours on record: 4,994.9h

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Re: Редакция на GlowMenu

Мнение от HeatoN » 27 Яну 2023, 21:46

Не мога да го къмплирам братле
Прикачени файлове
изображение_2023-01-27_214552684.png
изображение_2023-01-27_214552684.png (72.3 KiB) Преглеждано 205 пъти
изображение_2023-01-27_214552684.png
изображение_2023-01-27_214552684.png (72.3 KiB) Преглеждано 205 пъти
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Re: Редакция на GlowMenu

Мнение от HeatoN » 27 Яну 2023, 21:50

Къмплирах го но сега не работи ? няква идея брат
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Re: Редакция на GlowMenu

Мнение от Huehue » 27 Яну 2023, 21:56

Обнових кода, пробвай пак.
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

My GitHub Profile
GitHub

My AMXX Includes Collection
AMXX Include Libraries

My Steam Profile (from SteamDB)
  • Value: 4179€
  • Games owned: 1855
  • Games played: 754 (40%)
  • Hours on record: 4,994.9h

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Re: Редакция на GlowMenu

Мнение от HeatoN » 27 Яну 2023, 22:12

Евала брат работи перфектно благодаря ти можеш да заключиш темата
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 11 госта