Simple Glow Menu v2.0

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

OciXCrom TM
Администратор
Администратор
Мнения: 5255
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 539 пъти
Години: 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
Модератор
Модератор
Мнения: 993
Регистриран: 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
Рекламатор
Рекламатор
Мнения: 228
Регистриран: 22 окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 17 пъти
Получена благодарност: 7 пъти
Контакти:

Simple Glow Menu v2.0

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

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

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

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

Simple Glow Menu v2.0

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

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

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

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

Simple Glow Menu v2.0

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

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

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

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

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
Мнения: 258
Регистриран: 08 апр 2018, 16:56
Се отблагодари: 2 пъти
Получена благодарност: 14 пъти

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
Потребител
Потребител
Мнения: 938
Регистриран: 13 окт 2016, 22:10
Се отблагодари: 68 пъти
Получена благодарност: 10 пъти

Simple Glow Menu v2.0

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

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

Отговори

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

Кой е на линия

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