Simple Glow Menu v2.0

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

Re: Simple Glow Menu v1.2

Мнение от OciXCrom » 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
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Simple Glow Menu v1.2

Мнение от TheRedShoko » 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
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Simple Glow Menu v2.0

Мнение от Unbr3akable » 22 Апр 2017, 01:34

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

Аватар
Maverick
Извън линия
Рекламатор
Рекламатор
Мнения: 254
Регистриран на: 22 Окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 34 пъти
Получена благодарност: 14 пъти
Обратна връзка:

Simple Glow Menu v2.0

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

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

Аватар
g0gIch
Извън линия
Потребител
Потребител
Мнения: 206
Регистриран на: 20 Юли 2017, 17:29
Се отблагодари: 37 пъти
Получена благодарност: 24 пъти
Обратна връзка:

Simple Glow Menu v2.0

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

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

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Simple Glow Menu v2.0

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

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

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

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Simple Glow Menu v2.0

Мнение от deadlylord » 23 Мар 2018, 03:50

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

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
Извън линия
Потребител
Потребител
Мнения: 1318
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 244 пъти
Получена благодарност: 42 пъти

Simple Glow Menu v2.0

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

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

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

Обратно към “Нови попълнения”

Кой е на линия

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