Оцветяване на съобщение с CromChat

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Оцветяване на съобщение с CromChat

Мнение от Buzdrev » 09 Юли 2018, 20:09

Искам да оцветя някои от базовите команди от admincmd плъгина, но ми е трудно, защото самото съобщение се изкарва по някакъв много странен начин, заради променливите, като например командата ban:

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

public cmdBan(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED

	new target[32], minutes[8], reason[64]
	
	read_argv(1, target, charsmax(target))
	read_argv(2, minutes, charsmax(minutes))
	read_argv(3, reason, charsmax(reason))
	
	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
	
	if (!player)
		return PLUGIN_HANDLED

	new nNum = str_to_num(minutes)
	new const tempBanMaxTime = get_pcvar_num(p_amx_tempban_maxtime);
	if( nNum < 0 ) // since negative values result in permanent bans
	{
		nNum = 0;
		minutes = "0";
	}
	if( !(get_user_flags(id) & ( ADMIN_BAN | ADMIN_RCON )) && (nNum <= 0 || nNum > tempBanMaxTime) )
	{
		console_print(id, "%L", id, "ADMIN_MUST_TEMPBAN", tempBanMaxTime);
		return PLUGIN_HANDLED
	}

	new authid[32], name2[MAX_NAME_LENGTH], authid2[32], name[MAX_NAME_LENGTH]
	new userid2 = get_user_userid(player)

	get_user_authid(player, authid2, charsmax(authid2))
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(player, name2, charsmax(name2))
	get_user_name(id, name, charsmax(name))
	
	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)

	TrieSetString(g_tempBans, authid2, authid); // store all bans in case a permanent ban would override a temporary one.
	
	new temp[64], banned[16]
	if (nNum)
		formatex(temp, charsmax(temp), "%L", player, "FOR_MIN", minutes)
	else
		formatex(temp, charsmax(temp), "%L", player, "PERM")

	formatex(banned, charsmax(banned), "%L", player, "BANNED")

	if (reason[0])
		server_cmd("kick #%d ^"%s (%s %s)^";wait;banid %s %s;wait;writeid", userid2, reason, banned, temp, minutes, authid2)
	else
		server_cmd("kick #%d ^"%s %s^";wait;banid %s %s;wait;writeid", userid2, banned, temp, minutes, authid2)

	
	// Display the message to all clients

	new msg[256];
	new len;
	new players[MAX_PLAYERS], pnum, plr
	get_players(players, pnum, "ch")
	for (new i; i<pnum; i++)
	{
		plr = players[i]

		len = formatex(msg, charsmax(msg), "%L", plr, "BAN");
		len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
		if (nNum)
		{
			len += formatex(msg[len], charsmax(msg) - len, "%L", plr, "FOR_MIN", minutes);
		}
		else
		{
			len += formatex(msg[len], charsmax(msg) - len, "%L", plr, "PERM");
		}
		if (strlen(reason) > 0)
		{
			formatex(msg[len], charsmax(msg) - len, " (%L: %s)", plr, "REASON", reason);
		}
		show_activity_id(plr, id, name, msg);
	}
	
	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
	
	return PLUGIN_HANDLED
}

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

Оцветяване на съобщение с CromChat

Мнение от OciXCrom » 09 Юли 2018, 20:26

Като цяло съобщенията в базовите плъгини са направени с доста лоша функция и за да я оцветиш трябва да добавиш един куп проверки в кода. Въпросната функция изпраща съобщението по различен начин зависимо от квара amx_show_activity, демек според него може да не се показва името на админа. Ако не ти трябват различни съобщения според квара, директно можеш да замениш цялата функция, в противен случай ще трябва да имаш 5 отделни съобщения за всяка една стойност на квара.

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Оцветяване на съобщение с CromChat

Мнение от Buzdrev » 09 Юли 2018, 20:44

Да, като цяло ясно ми е това. Примерно amx_slay я направих така:

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

	switch( get_cvar_num( "amx_show_activity" ) )
	{
		case 1: CC_SendMessage ( 0, "&x01[&x04%s&x01] %L", szPrefix, LANG_PLAYER, "ADMIN_SLAY_1", name2);
		case 2: CC_SendMessage ( 0, "&x01[&x04%s&x01] %L", szPrefix, LANG_PLAYER, "ADMIN_SLAY_2", name, name2);
	}
Но тези команди: cmdPause, cmdXvar, cmdCvar, cmdBanIP и cmdBan са с още повече променливи и не мога да се справя.
Ако не ти е проблем и не е толкова сложно, може ти да направиш някоя от тях, а аз ще се потрудя за останалите.

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

Оцветяване на съобщение с CromChat

Мнение от OciXCrom » 07 Авг 2018, 21:18

Ако все още не си успял да се оправиш. В новата версия на cromchat е добавено автоматично оцветяване на тези съобщения.

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

Обратно към “Помощ в скриптирането”

Кой е на линия

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