Simple Glow Menu v2.0

В този раздел можете да публикувате нови плъгини, като същите ще бъдат одобрени или неодобрени от страна на екипа.
Правила на форума
ИНФОРМАЦИЯ: В този раздел най-вероятно няма да намерите много теми (възможно е и да е напълно празен), тъй като новите теми се местят в https://amxx-bg.info/viewforum.php?f=21 или https://amxx-bg.info/viewforum.php?f=22, зависимо от качеството им.
Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5038
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 470 пъти
Години: 21
Контакти:

Re: Simple Glow Menu v1.2

Мнение от OciXCrom TM » 16 фев 2017, 20:52

TheRedShoko написа:

Код: Избери всички

for(new i; i < ArraySize(g_aGlow); i++)
=>

Код: Избери всички

new iSize = ArraySize(g_aGlow);
for (new i = 0; i < iSize; i++)
Само това виждам, ако някой колега вижда някоя друга забележка, нека каже. Може да пропускам нещо.
Горното важи само ако iSize е глобална променлива. Както си го направил - даже е по-неправилно, тъй като ползваш нова променлива за нещо, което се ползва само един път. Най-добре е след четене на файла да се запази големината в глобална променлива. Моята единствена забележка е това:

Код: Избери всички

for(new i; i < ArraySize(g_aGlow); i++)
{
    static eGlow[GlowInfo]
Променливи не трябва да се създават в loop. Направи я извън него.


Потребителски аватар

TheRedShoko ReShoko
Модератор
Модератор
Мнения: 990
Регистриран: 06 окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 4 пъти
Получена благодарност: 53 пъти

Re: Simple Glow Menu v1.2

Мнение от TheRedShoko ReShoko » 16 фев 2017, 21:39

OciXCrom™ написа:
TheRedShoko написа:

Код: Избери всички

for(new i; i < ArraySize(g_aGlow); i++)
=>

Код: Избери всички

new iSize = ArraySize(g_aGlow);
for (new i = 0; i < iSize; i++)
Само това виждам, ако някой колега вижда някоя друга забележка, нека каже. Може да пропускам нещо.
Горното важи само ако iSize е глобална променлива. Както си го направил - даже е по-неправилно, тъй като ползваш нова променлива за нещо, което се ползва само един път. Най-добре е след четене на файла да се запази големината в глобална променлива. Моята единствена забележка е това:

Код: Избери всички

for(new i; i < ArraySize(g_aGlow); i++)
{
    static eGlow[GlowInfo] 
Променливи не трябва да се създават в loop. Направи я извън него.
Напротив. ArraySize се извиква при всяко завъртане на цикъла, затова е по-правилно да се изнесе в променлива дори и за веднъж. Относно декларирането на променливи в цикъл - it's okay.
1. променливата е static, няма как да задели памет за няколко'
2. специално съм го проверявал, понеже в повечето езици за програмиране е така, ако декларираш променлива в тялото на цикъл тя се инстанцира само веднъж, т.е. не се заделя по няколко пъти памет, а само веднъж. Следял съм адресите в паметта и при 100 завъртания на цикъла, стойностите на променливите си остават на същото място в паметта.

Потребителски аватар

Автор на темата
Unbr3akable 3/120
Потребител
Потребител
Мнения: 178
Регистриран: 21 дек 2016, 20:50

Re: Simple Glow Menu v2.0

Мнение от Unbr3akable 3/120 » 22 апр 2017, 01:34

UPDATE v2.0 @ 22.04.2017
  • Плъгинът е изцяло пренаписан и оптимизиран.
  • Променен е начина на добавяне на нови glow-ове.
  • Кваровете са премахнати и вече настройките се променят чрез конфигурационен файл.
  • Добавени са нови настройки.
  • Добавени са нови съобщения в lang файла.
  • Добавена е опция в менюто, която премахва glow-а ви.
  • В менюто срещу избрания от вас glow, ще изписва [SELECTED] и в заглавието ще изписва името на текущия ви glow.
  • Вече можете да добавяте повече от един флаг за достъп до менюто.

Потребителски аватар

Maverick
Рекламатор
Рекламатор
Мнения: 227
Регистриран: 22 окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 15 пъти
Получена благодарност: 7 пъти
Контакти:

Simple Glow Menu v2.0

Мнение от Maverick » 18 дек 2017, 09:45

Добавих това в настроиките: Dark red = 135 0 0 и не работи, плюс това е достъпно само за Т отбора, а това е празно: GLOW_TEAM

Потребителски аватар

g0gIch Beg
Потребител
Потребител
Мнения: 162
Регистриран: 20 юли 2017, 17:29
Се отблагодари: 10 пъти
Получена благодарност: 2 пъти
Години: 16

Simple Glow Menu v2.0

Мнение от g0gIch Beg » 09 фев 2018, 19:16

Ще може ли, менюто да се използва само от админ с флаг 'c' и от Simon. Пробвах аз, но не успях да направя каквото искам.

Потребителски аватар

Marinovv Facebook
Потребител
Потребител
Мнения: 349
Регистриран: 19 сеп 2017, 10:01
Местоположение: САЩ
Се отблагодари: 86 пъти
Получена благодарност: 7 пъти
Години: 21
Контакти:

Simple Glow Menu v2.0

Мнение от Marinovv Facebook » 23 мар 2018, 00:02

Плъгина работи, но не препоръчвам използването на плъгина, за Respawn или Classic сървъри и подобни сървъри с този вид модове.

Използвайки този плъгин в Respawn сървъри ще ти свети само докато не умреш. После ще трябва отново да го избираш. :)
89.106.109.225:27018
► Покажи скъсения текст

Потребителски аватар

deadlylord ZONATAEU
Рекламатор
Рекламатор
Мнения: 572
Регистриран: 04 апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 1 път
Години: 21
Контакти:

Simple Glow Menu v2.0

Мнение от deadlylord ZONATAEU » 23 мар 2018, 03:27

Marinovv написа:
23 мар 2018, 00:02
Плъгина работи, но не препоръчвам използването на плъгина, за Respawn или Classic сървъри и подобни сървъри с този вид модове.

Използвайки този плъгин в Respawn сървъри ще ти свети само докато не умреш. После ще трябва отново да го избираш. :)
Оправих го

Код: Избери всички

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

#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
#endif

#define PLUGIN_VERSION "2.0"

enum _:Settings
{
	GLOW_TEAM,
	GLOW_FLAG,
	GLOW_TITLE[128],
	GLOW_TITLE_PAGE[64],
	GLOW_BACK_NAME[32],
	GLOW_NEXT_NAME[32],
	GLOW_EXIT_NAME[32],
	GLOW_PER_PAGE,
	GLOW_MESSAGE_TYPE,
	Float:GLOW_HUD_X,
	Float:GLOW_HUD_Y,
	GLOW_HUD_EFFECTS,
	Float:GLOW_HUD_EFFTIME,
	Float:GLOW_HUD_HOLDTIME
}

enum _:Glows
{
	NAME[32],
	COLOR[3]
}

enum
{
	SECTION_SETTINGS,
	SECTION_GLOWS
}

new Array:g_aGlows
new g_eSettings[Settings]
new g_iGlow[33]

new bool:isGlowing = false
static eGlows[Glows]

public plugin_init()
{
	register_plugin("Simple Glow Menu", PLUGIN_VERSION, "Unbr3akable")
	
	register_cvar("SimpleGlowMenu", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	register_dictionary("SimpleGlowMenu.txt")
	
	register_event("ResetHUD", "sp_on", "be")
}

public sp_on(id)
{
	if(isGlowing == true)
	{
		set_task(0.1, "glow", id)
	}
}

public glow(id)
{
	set_user_rendering(id, kRenderFxGlowShell, eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2])
}
public plugin_cfg()
{
	g_aGlows = ArrayCreate(Glows)
	
	ReadFile()
}

public plugin_end()
{
	ArrayDestroy(g_aGlows)
}
	
ReadFile()
{
	new szConfigsDir[64]
	
	get_configsdir(szConfigsDir, charsmax(szConfigsDir))
	add(szConfigsDir, charsmax(szConfigsDir), "/SimpleGlowMenu.ini")
	
	new iFilePointer = fopen(szConfigsDir, "rt")
	
	if (iFilePointer)
	{
		new szData[160], szKey[32], szValue[128], eGlows[Glows], iSection, i
		
		ArrayPushString(g_aGlows, "\rNone")
		
		while (!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			
			trim(szData)
			
			switch (szData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					if (szData[strlen(szData) -1] == ']')
					{
						if (containi(szData, "settings") != -1)
						{
							iSection = SECTION_SETTINGS
						}
						else if (containi(szData, "glows") != -1)
						{
							iSection = SECTION_GLOWS
						}
					}
					
					else continue
				}
				default:
				{	
					switch (iSection)
					{
						case SECTION_SETTINGS:
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					
							trim(szKey)
							trim(szValue)
							
							if (equal(szKey, "GLOW_COMMANDS"))
							{
								while (szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
								{
									trim(szKey)
									trim(szValue)
								
									register_clcmd(szKey, "cmdGlowMenu")
								}
							}
							else if (equal(szKey, "GLOW_PREFIX"))
							{
								CC_SetPrefix(szValue)
							}
							else if (equal(szKey, "GLOW_TEAM"))
							{
								g_eSettings[GLOW_TEAM] = clamp(str_to_num(szValue), 1, 3)
							}
							else if (equal(szKey, "GLOW_FLAG"))
							{
								g_eSettings[GLOW_FLAG] = szValue[0] == EOS ? ADMIN_ALL : read_flags(szValue)
							}
							else if (equal(szKey, "GLOW_TITLE"))
							{
								copy(g_eSettings[GLOW_TITLE], charsmax(g_eSettings[GLOW_TITLE]), szValue)
							}
							else if (equal(szKey, "GLOW_TITLE_PAGE"))
							{
								copy(g_eSettings[GLOW_TITLE_PAGE], charsmax(g_eSettings[GLOW_TITLE_PAGE]), szValue)
							}
							else if (equal(szKey, "GLOW_BACK_NAME"))
							{
								copy(g_eSettings[GLOW_BACK_NAME], charsmax(g_eSettings[GLOW_BACK_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_NEXT_NAME"))
							{
								copy(g_eSettings[GLOW_NEXT_NAME], charsmax(g_eSettings[GLOW_NEXT_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_EXIT_NAME"))
							{
								copy(g_eSettings[GLOW_EXIT_NAME], charsmax(g_eSettings[GLOW_EXIT_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_PER_PAGE"))
							{
								g_eSettings[GLOW_PER_PAGE] = clamp(str_to_num(szValue), 0, 7)
							}
							else if (equal(szKey, "GLOW_MESSAGE_TYPE"))
							{
								g_eSettings[GLOW_MESSAGE_TYPE] = clamp(str_to_num(szValue), 0, 2)
							}
							else if (equal(szKey, "GLOW_HUD_X"))
							{
								g_eSettings[GLOW_HUD_X] = _:floatclamp(str_to_float(szValue), -1.0, 1.0)
							}
							else if (equal(szKey, "GLOW_HUD_Y"))
							{
								g_eSettings[GLOW_HUD_Y] = _:floatclamp(str_to_float(szValue), -1.0, 1.0)
							}
							else if (equal(szKey, "GLOW_HUD_EFFECTS"))
							{
								g_eSettings[GLOW_HUD_EFFECTS] = clamp(str_to_num(szValue), 0, 2)
							}
							else if (equal(szKey, "GLOW_HUD_EFFTIME"))
							{
								g_eSettings[GLOW_HUD_EFFTIME] = _:str_to_float(szValue)
							}
							else if (equal(szKey, "GLOW_HUD_HOLDTIME"))
							{
								g_eSettings[GLOW_HUD_HOLDTIME] = _:str_to_float(szValue)
							}
						}
						case SECTION_GLOWS:
						{
							strtok(szData, eGlows[NAME], charsmax(eGlows[NAME]), szValue, charsmax(szValue), '=')
							
							trim(eGlows[NAME])
							trim(szValue)
							
							static szColor[3][4]
								
							parse(szValue, szColor[0], charsmax(szColor[]), szColor[1], charsmax(szColor[]), szColor[2], charsmax(szColor[]))
								
							for (i = 0; i < 3; i++)
							{
								eGlows[COLOR][i] = clamp(str_to_num(szColor[i]), 0, 255)
							}
							
							ArrayPushArray(g_aGlows, eGlows)
						}
					}
				}
			}
		}
		
		fclose(iFilePointer)
	}
}

public client_putinserver(id)
{
	g_iGlow[id] = 0
}
	
public cmdGlowMenu(id)
{
	if (~get_user_flags(id) & g_eSettings[GLOW_FLAG])
	{
		CC_SendMessage(id, "%L", id, "GLOW_NOACCESS")
		
		return PLUGIN_HANDLED
	}
	
	if (get_user_team(id) != g_eSettings[GLOW_TEAM] && g_eSettings[GLOW_TEAM] != EOS)
	{
		CC_SendMessage(id, "%L", id, "GLOW_NOTEAM")
		
		return PLUGIN_HANDLED
	}
	
	static szTitle[128], iMenu, i, eGlows[Glows]
	
	ArrayGetArray(g_aGlows, g_iGlow[id], eGlows)
	
	formatex(szTitle, charsmax(szTitle), g_eSettings[GLOW_TITLE], eGlows[NAME])
	
	replace_all(szTitle, charsmax(szTitle), "\n", "^n")
	replace_all(g_eSettings[GLOW_TITLE_PAGE], charsmax(g_eSettings[GLOW_TITLE_PAGE]), "\n", "^n")
	
	iMenu = menu_create(szTitle, "handlerGlowMenu")
	
	for (i = 0; i < ArraySize(g_aGlows); i++)
	{
		ArrayGetArray(g_aGlows, i, eGlows)
		
		menu_additem(iMenu, formatin("%s %s", eGlows[NAME], g_iGlow[id] == i ? formatin("%L", id, "GLOW_SELECTED") : formatin("")))
	}
	
	if (menu_pages(iMenu) > 1)
	{
		menu_setprop(iMenu, MPROP_TITLE, formatin("%s%s", szTitle, g_eSettings[GLOW_TITLE_PAGE]))
	}
		
	menu_setprop(iMenu, MPROP_BACKNAME, g_eSettings[GLOW_BACK_NAME])
	menu_setprop(iMenu, MPROP_NEXTNAME, g_eSettings[GLOW_NEXT_NAME])
	menu_setprop(iMenu, MPROP_EXITNAME, g_eSettings[GLOW_EXIT_NAME])
	menu_setprop(iMenu, MPROP_PERPAGE, g_eSettings[GLOW_PER_PAGE])
	
	menu_display(id, iMenu, 0)
	
	return PLUGIN_HANDLED
}

public handlerGlowMenu(id, iMenu, iItem)
{
	if (iItem != MENU_EXIT)
	{
		static szHudText[128]
		
		ArrayGetArray(g_aGlows, iItem, eGlows)
	
		formatex(szHudText, charsmax(szHudText), "%L", id, "GLOW_ONSELECT_HUD", eGlows[NAME])
		
		if (iItem == 0)
		{
			g_iGlow[id] = 0
			
			isGlowing = false
			
			set_user_rendering(id)
			
			CC_SendMessage(id, "%L", id, "GLOW_REMOVE")
			
			return PLUGIN_HANDLED
		}
		
		if (g_iGlow[id] == iItem)
		{
			CC_SendMessage(id, "%L", id, "GLOW_ALREADY")
		}
		else
		{
			g_iGlow[id] = iItem
			
			isGlowing = true
		
			set_user_rendering(id, kRenderFxGlowShell, eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2])
			
			switch (g_eSettings[GLOW_MESSAGE_TYPE])
			{
				case 0: CC_SendMessage(id, "%L", id, "GLOW_ONSELECT_CHAT", eGlows[NAME])
				case 1:
				{
					set_hudmessage(eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2], g_eSettings[GLOW_HUD_X], g_eSettings[GLOW_HUD_Y],
					g_eSettings[GLOW_HUD_EFFECTS], g_eSettings[GLOW_HUD_EFFTIME], g_eSettings[GLOW_HUD_HOLDTIME])
					
					show_hudmessage(id, szHudText)
				}
				case 2:
				{
					set_dhudmessage(eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2], g_eSettings[GLOW_HUD_X], g_eSettings[GLOW_HUD_Y],
					g_eSettings[GLOW_HUD_EFFECTS], g_eSettings[GLOW_HUD_EFFTIME], g_eSettings[GLOW_HUD_HOLDTIME])
					
					show_dhudmessage(id, szHudText)
				}
			}
		}
	}
	
	menu_destroy(iMenu)
	
	return PLUGIN_HANDLED
}
Вече можеш да го препоръчваш и за respawn сървъри :coolface:

Добавено преди 3 минути 13 секунди:

Къв автора,
Хубаво си направил 3 снимки на цветовете от менюто, но във файла от архива липсват и хората трябва да си ги добавят сами, би било хубаво да ги добавиш!
Направи настройката за отбор по подразбиране да бъде 0(тоест менюто да работи за двата отбора).
Проверката за грешен отбор е малко зле, тъй като можеш да си оставиш менюто отворено и да имаш glow като си част от грешния отбор
Направи нова настройка, която да запазва glow-a при respawn

Потребителски аватар

Infamous2018
Foreigner
Foreigner
Мнения: 236
Регистриран: 08 апр 2018, 16:56
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти

Simple Glow Menu v2.0

Мнение от Infamous2018 » 05 май 2018, 21:21

[Glow Menu] Your team isn't allowed to use the Glow Menu!

Ini:

GLOW_TEAM =
GLOW_FLAG = t

How to fix that? It works only for Terrorists but not for Counter !!! :/

Потребителски аватар

cgozzie Dubstep
Потребител
Потребител
Мнения: 926
Регистриран: 13 окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 67 пъти
Получена благодарност: 10 пъти
Контакти:

Simple Glow Menu v2.0

Мнение от cgozzie Dubstep » 05 май 2018, 23:07

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последна промяна от JustyleR на 05 май 2018, 23:15, променено общо 1 път.
Причина: Безсмилен коментар / спам

Потребителски аватар

Infamous2018
Foreigner
Foreigner
Мнения: 236
Регистриран: 08 апр 2018, 16:56
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти

Simple Glow Menu v2.0

Мнение от Infamous2018 » 05 май 2018, 23:15

Your post is not really helpful for anyone @ cgozzie

Потребителски аватар

summertime vibes PSA
Тестов модератор
Тестов модератор
Мнения: 960
Регистриран: 27 ное 2016, 17:47
Местоположение: In the Heaven
Се отблагодари: 39 пъти
Получена благодарност: 75 пъти
Контакти:

Simple Glow Menu v2.0

Мнение от summertime vibes PSA » 13 сеп 2018, 16:45

Не съм тествал плъгина, но само за самият играч ли е това меню? Тоест само себе ли си мога да glow-вам? Ако да - ако може да се направи да може и другите играчи да се glow-ват чрез менюто.. мерси.
Изображение

Потребителски аватар

Marinovv Facebook
Потребител
Потребител
Мнения: 349
Регистриран: 19 сеп 2017, 10:01
Местоположение: САЩ
Се отблагодари: 86 пъти
Получена благодарност: 7 пъти
Години: 21
Контакти:

Simple Glow Menu v2.0

Мнение от Marinovv Facebook » 13 сеп 2018, 17:21

deadlylord написа:
23 мар 2018, 03:50

Код: Избери всички

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

#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
#endif

#define PLUGIN_VERSION "2.0"

enum _:Settings
{
	GLOW_TEAM,
	GLOW_FLAG,
	GLOW_TITLE[128],
	GLOW_TITLE_PAGE[64],
	GLOW_BACK_NAME[32],
	GLOW_NEXT_NAME[32],
	GLOW_EXIT_NAME[32],
	GLOW_PER_PAGE,
	GLOW_MESSAGE_TYPE,
	Float:GLOW_HUD_X,
	Float:GLOW_HUD_Y,
	GLOW_HUD_EFFECTS,
	Float:GLOW_HUD_EFFTIME,
	Float:GLOW_HUD_HOLDTIME
}

enum _:Glows
{
	NAME[32],
	COLOR[3]
}

enum
{
	SECTION_SETTINGS,
	SECTION_GLOWS
}

new Array:g_aGlows
new g_eSettings[Settings]
new g_iGlow[33]

new bool:isGlowing = false
static eGlows[Glows]

public plugin_init()
{
	register_plugin("Simple Glow Menu", PLUGIN_VERSION, "Unbr3akable")
	
	register_cvar("SimpleGlowMenu", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	register_dictionary("SimpleGlowMenu.txt")
	
	register_event("ResetHUD", "sp_on", "be")
}

public sp_on(id)
{
	if(isGlowing == true)
	{
		set_task(0.1, "glow", id)
	}
}

public glow(id)
{
	set_user_rendering(id, kRenderFxGlowShell, eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2])
}
public plugin_cfg()
{
	g_aGlows = ArrayCreate(Glows)
	
	ReadFile()
}

public plugin_end()
{
	ArrayDestroy(g_aGlows)
}
	
ReadFile()
{
	new szConfigsDir[64]
	
	get_configsdir(szConfigsDir, charsmax(szConfigsDir))
	add(szConfigsDir, charsmax(szConfigsDir), "/SimpleGlowMenu.ini")
	
	new iFilePointer = fopen(szConfigsDir, "rt")
	
	if (iFilePointer)
	{
		new szData[160], szKey[32], szValue[128], eGlows[Glows], iSection, i
		
		ArrayPushString(g_aGlows, "\rNone")
		
		while (!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			
			trim(szData)
			
			switch (szData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					if (szData[strlen(szData) -1] == ']')
					{
						if (containi(szData, "settings") != -1)
						{
							iSection = SECTION_SETTINGS
						}
						else if (containi(szData, "glows") != -1)
						{
							iSection = SECTION_GLOWS
						}
					}
					
					else continue
				}
				default:
				{	
					switch (iSection)
					{
						case SECTION_SETTINGS:
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					
							trim(szKey)
							trim(szValue)
							
							if (equal(szKey, "GLOW_COMMANDS"))
							{
								while (szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
								{
									trim(szKey)
									trim(szValue)
								
									register_clcmd(szKey, "cmdGlowMenu")
								}
							}
							else if (equal(szKey, "GLOW_PREFIX"))
							{
								CC_SetPrefix(szValue)
							}
							else if (equal(szKey, "GLOW_TEAM"))
							{
								g_eSettings[GLOW_TEAM] = clamp(str_to_num(szValue), 1, 3)
							}
							else if (equal(szKey, "GLOW_FLAG"))
							{
								g_eSettings[GLOW_FLAG] = szValue[0] == EOS ? ADMIN_ALL : read_flags(szValue)
							}
							else if (equal(szKey, "GLOW_TITLE"))
							{
								copy(g_eSettings[GLOW_TITLE], charsmax(g_eSettings[GLOW_TITLE]), szValue)
							}
							else if (equal(szKey, "GLOW_TITLE_PAGE"))
							{
								copy(g_eSettings[GLOW_TITLE_PAGE], charsmax(g_eSettings[GLOW_TITLE_PAGE]), szValue)
							}
							else if (equal(szKey, "GLOW_BACK_NAME"))
							{
								copy(g_eSettings[GLOW_BACK_NAME], charsmax(g_eSettings[GLOW_BACK_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_NEXT_NAME"))
							{
								copy(g_eSettings[GLOW_NEXT_NAME], charsmax(g_eSettings[GLOW_NEXT_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_EXIT_NAME"))
							{
								copy(g_eSettings[GLOW_EXIT_NAME], charsmax(g_eSettings[GLOW_EXIT_NAME]), szValue)
							}
							else if (equal(szKey, "GLOW_PER_PAGE"))
							{
								g_eSettings[GLOW_PER_PAGE] = clamp(str_to_num(szValue), 0, 7)
							}
							else if (equal(szKey, "GLOW_MESSAGE_TYPE"))
							{
								g_eSettings[GLOW_MESSAGE_TYPE] = clamp(str_to_num(szValue), 0, 2)
							}
							else if (equal(szKey, "GLOW_HUD_X"))
							{
								g_eSettings[GLOW_HUD_X] = _:floatclamp(str_to_float(szValue), -1.0, 1.0)
							}
							else if (equal(szKey, "GLOW_HUD_Y"))
							{
								g_eSettings[GLOW_HUD_Y] = _:floatclamp(str_to_float(szValue), -1.0, 1.0)
							}
							else if (equal(szKey, "GLOW_HUD_EFFECTS"))
							{
								g_eSettings[GLOW_HUD_EFFECTS] = clamp(str_to_num(szValue), 0, 2)
							}
							else if (equal(szKey, "GLOW_HUD_EFFTIME"))
							{
								g_eSettings[GLOW_HUD_EFFTIME] = _:str_to_float(szValue)
							}
							else if (equal(szKey, "GLOW_HUD_HOLDTIME"))
							{
								g_eSettings[GLOW_HUD_HOLDTIME] = _:str_to_float(szValue)
							}
						}
						case SECTION_GLOWS:
						{
							strtok(szData, eGlows[NAME], charsmax(eGlows[NAME]), szValue, charsmax(szValue), '=')
							
							trim(eGlows[NAME])
							trim(szValue)
							
							static szColor[3][4]
								
							parse(szValue, szColor[0], charsmax(szColor[]), szColor[1], charsmax(szColor[]), szColor[2], charsmax(szColor[]))
								
							for (i = 0; i < 3; i++)
							{
								eGlows[COLOR][i] = clamp(str_to_num(szColor[i]), 0, 255)
							}
							
							ArrayPushArray(g_aGlows, eGlows)
						}
					}
				}
			}
		}
		
		fclose(iFilePointer)
	}
}

public client_putinserver(id)
{
	g_iGlow[id] = 0
}
	
public cmdGlowMenu(id)
{
	if (~get_user_flags(id) & g_eSettings[GLOW_FLAG])
	{
		CC_SendMessage(id, "%L", id, "GLOW_NOACCESS")
		
		return PLUGIN_HANDLED
	}
	
	if (get_user_team(id) != g_eSettings[GLOW_TEAM] && g_eSettings[GLOW_TEAM] != EOS)
	{
		CC_SendMessage(id, "%L", id, "GLOW_NOTEAM")
		
		return PLUGIN_HANDLED
	}
	
	static szTitle[128], iMenu, i, eGlows[Glows]
	
	ArrayGetArray(g_aGlows, g_iGlow[id], eGlows)
	
	formatex(szTitle, charsmax(szTitle), g_eSettings[GLOW_TITLE], eGlows[NAME])
	
	replace_all(szTitle, charsmax(szTitle), "\n", "^n")
	replace_all(g_eSettings[GLOW_TITLE_PAGE], charsmax(g_eSettings[GLOW_TITLE_PAGE]), "\n", "^n")
	
	iMenu = menu_create(szTitle, "handlerGlowMenu")
	
	for (i = 0; i < ArraySize(g_aGlows); i++)
	{
		ArrayGetArray(g_aGlows, i, eGlows)
		
		menu_additem(iMenu, formatin("%s %s", eGlows[NAME], g_iGlow[id] == i ? formatin("%L", id, "GLOW_SELECTED") : formatin("")))
	}
	
	if (menu_pages(iMenu) > 1)
	{
		menu_setprop(iMenu, MPROP_TITLE, formatin("%s%s", szTitle, g_eSettings[GLOW_TITLE_PAGE]))
	}
		
	menu_setprop(iMenu, MPROP_BACKNAME, g_eSettings[GLOW_BACK_NAME])
	menu_setprop(iMenu, MPROP_NEXTNAME, g_eSettings[GLOW_NEXT_NAME])
	menu_setprop(iMenu, MPROP_EXITNAME, g_eSettings[GLOW_EXIT_NAME])
	menu_setprop(iMenu, MPROP_PERPAGE, g_eSettings[GLOW_PER_PAGE])
	
	menu_display(id, iMenu, 0)
	
	return PLUGIN_HANDLED
}

public handlerGlowMenu(id, iMenu, iItem)
{
	if (iItem != MENU_EXIT)
	{
		static szHudText[128]
		
		ArrayGetArray(g_aGlows, iItem, eGlows)
	
		formatex(szHudText, charsmax(szHudText), "%L", id, "GLOW_ONSELECT_HUD", eGlows[NAME])
		
		if (iItem == 0)
		{
			g_iGlow[id] = 0
			
			isGlowing = false
			
			set_user_rendering(id)
			
			CC_SendMessage(id, "%L", id, "GLOW_REMOVE")
			
			return PLUGIN_HANDLED
		}
		
		if (g_iGlow[id] == iItem)
		{
			CC_SendMessage(id, "%L", id, "GLOW_ALREADY")
		}
		else
		{
			g_iGlow[id] = iItem
			
			isGlowing = true
		
			set_user_rendering(id, kRenderFxGlowShell, eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2])
			
			switch (g_eSettings[GLOW_MESSAGE_TYPE])
			{
				case 0: CC_SendMessage(id, "%L", id, "GLOW_ONSELECT_CHAT", eGlows[NAME])
				case 1:
				{
					set_hudmessage(eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2], g_eSettings[GLOW_HUD_X], g_eSettings[GLOW_HUD_Y],
					g_eSettings[GLOW_HUD_EFFECTS], g_eSettings[GLOW_HUD_EFFTIME], g_eSettings[GLOW_HUD_HOLDTIME])
					
					show_hudmessage(id, szHudText)
				}
				case 2:
				{
					set_dhudmessage(eGlows[COLOR][0], eGlows[COLOR][1], eGlows[COLOR][2], g_eSettings[GLOW_HUD_X], g_eSettings[GLOW_HUD_Y],
					g_eSettings[GLOW_HUD_EFFECTS], g_eSettings[GLOW_HUD_EFFTIME], g_eSettings[GLOW_HUD_HOLDTIME])
					
					show_dhudmessage(id, szHudText)
				}
			}
		}
	}
	
	menu_destroy(iMenu)
	
	return PLUGIN_HANDLED
}

Благодаря, че си направил този плъгин и за Respawn и Classic, но отново плъгинът не е подходящ като цяло за тези 2 типа сървъри. Ако използвате други плъгини, които имат Glow за време то този плъгин няма да работи правилно. Пример давам CSDM Protection, който има Glow. Както и да е. Няма да спамя излишно или да казвам кое да ползвате и кое не, но имайте едно наум ползвайки този плъгин за Respawn и други подобни типове. :P
89.106.109.225:27018
► Покажи скъсения текст

Отговори

Върни се в “Нови попълнения”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост