Заявка за Chat Manager [Admin Prefix & Color Chat]

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
x7s
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 20 Яну 2018, 11:00
Местоположение: България
Се отблагодари: 19 пъти
Обратна връзка:

Заявка за Chat Manager [Admin Prefix & Color Chat]

Мнение от x7s » 21 Яну 2018, 00:39

Знам че вече има такъв плъгин, но аз търся малко по различен от този, които се доближава до това което искам.
Та ето и за какво точно говоря ще цитирам отново себе си и авторът на плъгина, а когато има възможност да пише по темата.
Ще се радвам да ми покаже на мен и на останалите от форума, как се пренаписва плъгинът да работи с nVault библиотека, която смятам, че ще е много по удобна и лесна за работа в моя случай, защото искам да има няколко прости команди и нещо като меню в което да изредя командите които искам да има.
Ето и един пример: say /AdminPrefix или да е нещо от сорта в конзолата на играта да напиша crx_addprefix Nickname Prefix и всичкото това
да си има колор чата и останалите неща, които си има, както си го има в стандартния плъгин Chat Manager[Admin Prefix & Color Chat], но да работи с nVault вместо с .ini файл които, трябва да преработвам постоянно, когато искам да сложа префикс на някой админ, а това е досадно и в някой случай когато работим с отдалечен достъп, това става и невъзможно и се налага да чакаме с дни за да се запише определен префикс на някой админ във въпросния файл.
А идеята ми е да се улеснят нещата с една команда по-време на игра, и или когато примерно имам време влизам в сървъра пиша командата в конзолата слагам префикс на админа които искам да има префикс и излизам.
Съответно да може и да се трие префикса, когато определен админ е загубил правата си поради некомпетентност, или злоупотреби с правата си в сървъра.
А .ini фаилът да стане, като конфигурационен файл .cfg или да си остане същият .ini но без последните 6 реда, които ще се записват в nVault за префиксите на админите.
Благодаря предварително за отделеното време ;))
x7s написа: 20 Яну 2018, 11:53 Здравейте
Имам едно запитване, понеже не съм се занимавал с това от доста време, и някой неща не са ми ясни все още, може ли да се направи плъгина да работи с nvault библиотека, и допълнителна cvar за да добавям префикси директно с команда по-време на игра?
Пример:

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

register_cvar("CRXChatManagerAdd", "CRXChatManager_addprefix", 0, 0.00);
register_clcmd("say /AdminPrefix", "adminprefix", -1, "", -1);
И съответно да отваря nvault да си проверява дали вече съществува такъв префикс, и ако съществува да връща отговор, че вече има такъв префикс, за да се измисли нов такъв.
Вместо да използва фаилът .ini, който трябва да отварям всеки път и да го редактирам, за да добавям префикс на определен админ.
А файлът .ini в /config папката да си остане, като конфигурационен, как точно да показва всеки префикс и т.н.
Ако може да се направи от някой по-разбиращ ще се радвам да ни покаже, как точно става това.
Благодаря предварително.

ПП.
Скрито съдържание
Форумът изисква да си влезнал в акаунта си за да можеш да четеш това.
OciXCrom™ написа: 20 Яну 2018, 16:33 Може да стане, разбира се. По-скоро ще изработя отделен плъгин за тази цел, отколкото да редактирам главния или да вкарвам нещата в него. Може да се направи ако има запазен префикс в nVault, да ползва този вместо зададения в .ini файла префикс. Тези дни съм малко зает с изпити и не мога да кажа със сигурност кога ще имам време да го направя.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Заявка за Chat Manager [Admin Prefix & Color Chat]

Мнение от OciXCrom » 22 Яну 2018, 20:22

Не е тествано. Добави кода като отделен плъгин и сложи го под оригиналния Chat Manager в plugins.ini.

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

#include <amxmodx>
#include <amxmisc>
#include <chatmanager>
#include <nvault>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define PREFIX_DELAY 0.2

new g_iVault
new g_szPrefix[33][32], g_szName[33][32]

public plugin_init()
{
	register_plugin("ChatManager: Nvault", "1.0", "OciXCrom")
	register_concmd("crx_set_prefix", "Cmd_Prefix", ADMIN_BAN, "<player> [prefix]")
	register_concmd("crx_remove_prefix", "Cmd_Prefix", ADMIN_BAN, "<player>")
	g_iVault = nvault_open("ChatManager")
}

public plugin_end()
	nvault_close(g_iVault)
	
public client_putinserver(id)
{
	get_user_name(id, g_szName[id], charsmax(g_szName[]))
	strtolower(g_szName[id])
	use_vault(id, false, g_szName[id])
}

public client_disconnect(id)
	use_vault(id, true, g_szName[id])
	
public client_infochanged(id)
{		
	static szNewName[32], szOldName[32]
	get_user_info(id, "name", szNewName, charsmax(szNewName))
	get_user_name(id, szOldName, charsmax(szOldName))
	
	if(!equali(szNewName, szOldName))
	{
		strtolower(szNewName); strtolower(szOldName)
		use_vault(id, true, szOldName)
		use_vault(id, false, szNewName)
	}
}
	
public Cmd_Prefix(id, iLevel, iCid)
{	
	if(!cmd_access(id, iLevel, iCid, 2))
		return PLUGIN_HANDLED
		
	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))
	
	new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF)
	
	if(!iPlayer)
		return PLUGIN_HANDLED
		
	new szCommand[6], szName[32]
	read_argv(0, szCommand, charsmax(szCommand))
	get_user_name(iPlayer, szName, charsmax(szName))
	
	if(szCommand[4] == 's')
	{
		new szPrefix[32]
		read_argv(2, szPrefix, charsmax(szPrefix))
		
		if(szPrefix[0])
		{
			cm_set_user_prefix(iPlayer, szPrefix)
			copy(g_szPrefix[iPlayer], charsmax(g_szPrefix[]), szPrefix)
			console_print(id, "* Prefix %s set on player %s", szPrefix, szName)
		}
		else
		{
			if(g_szPrefix[iPlayer][0])
				console_print(id, "* The prefix for player %s is %s", szName, g_szPrefix[iPlayer])
			else
				no_prefix(id, szName)
		}
	}
	else
	{
		if(g_szPrefix[iPlayer][0])
		{
			g_szPrefix[iPlayer][0] = EOS
			console_print(id, "* Removed prefix from player %s", szName)
			cm_set_user_prefix(iPlayer, "")
		}
		else
			no_prefix(id, szName)
	}
	
	return PLUGIN_HANDLED
}

use_vault(const id, const bool:bSave, const szInfo[])
{
	if(!szInfo[0])
		return
	
	if(bSave)
		nvault_set(g_iVault, szInfo, g_szPrefix[id])
	else
	{
		nvault_get(g_iVault, szInfo, g_szPrefix[id], charsmax(g_szPrefix[]))
		set_task(PREFIX_DELAY, "set_the_prefix", id)
	}
}

public set_the_prefix(id)
	cm_set_user_prefix(id, g_szPrefix[id])

no_prefix(const id, const szName[])
	console_print(id, "* %s doesn't have a prefix", szName)
crx_set_prefix <nick|#userid> [prefix] -- задава префикс на играча
crx_set_prefix <nick|#userid> -- показва какъв префикс има играчът
crx_remove_prefix <nick|#userid> -- премахва префикса

Аватар
x7s
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 20 Яну 2018, 11:00
Местоположение: България
Се отблагодари: 19 пъти
Обратна връзка:

Заявка за Chat Manager [Admin Prefix & Color Chat]

Мнение от x7s » 24 Яну 2018, 12:56

OciXCrom™ написа: 22 Яну 2018, 20:22 Не е тествано. Добави кода като отделен плъгин и сложи го под оригиналния Chat Manager в plugins.ini.

crx_set_prefix <nick|#userid> [prefix] -- задава префикс на играча
crx_set_prefix <nick|#userid> -- показва какъв префикс има играчът
crx_remove_prefix <nick|#userid> -- премахва префикса
:tnx: :worthy: Работи идиялно, но има малък проблем, когато сетвам префикс, изисква да сложа в кавички Префикса, който желая да добавя.
Пример:
crx_set_prefix <nick|#userid> "[prefix]" -- задава префикс на играча

Иначе всичко си работи както трябва, ще продължа тестовете в реална обстановка с реални играчи в реално време и ще пиша, ако забележа някакви проблеми.
Относно това crx_set_prefix <nick|#userid> "[prefix]" трябва ли задължително да слагам кавички и скоби, за да слага префикс на даден играч, и може ли да се оправи да си е нормално crx_set_prefix <nick|#userid> <prefix> без да се налага да слагам кавички и скоби ?
Ако може би ли го направил :tnx:

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Заявка за Chat Manager [Admin Prefix & Color Chat]

Мнение от OciXCrom » 24 Яну 2018, 21:08

Това си е напълно нормално при положение, че има разстояние в префикса. Абсолютно всички AMXX команди (и не само) работят на този принцип. Ако искаш да зададеш префикс на играча "amxx bg" и напишеш crx_set_prefix amxx bg [prefix], плъгинът няма как да знае коя част е името на играча, а коя префиксът. В случая плъгинът ще прочете "amxx" като име на играча, "bg" като префикс, а самият префикс изобщо няма да го прочете. Плъгинът чете отделните параметри когато са разделени със space, съответно трябва да се сложат в кавички.

amx_komanda "параметър1" "параметър2" "параметър3" - най-правилен начин при всякакви команди.

Аватар
stambeto2006
Извън линия
Модератор
Модератор
Мнения: 505
Регистриран на: 06 Окт 2016, 15:44
Се отблагодари: 53 пъти
Получена благодарност: 45 пъти
Обратна връзка:

Заявка за Chat Manager [Admin Prefix & Color Chat]

Мнение от stambeto2006 » 05 Юли 2020, 20:08

Здравейте! Извинявам се, че пиша в тази тема, но тествах плъгина със който може да си променяш префиксите по време на игра. Проблема е следният, когато даден админ влезе в сървъра и подразбиране в началото има префикса, който е зададен от .ini файла.

Например е зададен в началото по флаг:

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

"flag" "m" "[Server Admin]"
След като админа влезе в сървъра и си смени префикса със друго име, например:

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

crx_set_prefix ".:cs.stambeto:." [TEST]
му се сменя префикса без проблем, като напише нещо след това, проблема е там, че когато даден играч излезе от сървъра или се смени мапа на друг, самият файл му е записал новият префикс и следователно трябва да му прочете него като влезе отново в игра или се смени мапа, но него прочита, ами излиза префикса, който е бил зададен по flag от преди. Това нещо може ли да се оправи?

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

Обратно към “Заявки за плъгини”

Кой е на линия

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