Проблем с Adminchat,2-ри админ не си вижда чата

Въпроси и проблеми свързани с AMXModX.
Аватар
devilchy
Извън линия
Потребител
Потребител
Мнения: 223
Регистриран на: 03 Фев 2017, 14:08
Местоположение: Burgas
Се отблагодари: 3 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от devilchy » 23 Апр 2020, 03:02

Както е в заглавието не мога да се оправя със този плъгин оправих единия сега този проблем.
явно колегата е барал нещо по сма и сега се случва това но той не помни какво е правил за последно
защото слагам същия плъгин който му имаме само амхх от преди няма никви проблеми но този като го сложа излиза ето така:
2 ри админ като влезне той неси вижда неговия админ чат а аз го виждам така

sma на плъгина:

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

// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
//     https://alliedmods.net/amxmodx-license

//
// Admin Chat Plugin
//

#include <amxmodx>
#include <amxmisc>

new g_msgChannel

#define MAX_CLR 10

new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

new amx_show_activity;
new amx_flood_time;
new g_AdminChatFlag = ADMIN_CHAT;

new Float:g_Flooding[MAX_PLAYERS + 1] = {0.0, ...}
new g_Flood[MAX_PLAYERS + 1] = {0, ...}

enum Color
{
	NORMAL = 1, 	// Client's con_color cvar color
	GREEN, 			// Green Color
	TEAM_COLOR, 	// Red, grey, blue
	GREY, 			// Grey
	RED, 			// Red
	BLUE, 			// Blue
}

new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" }

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	static message[256];

	switch(type)
	{
		case NORMAL: message[0] = 0x01;
		case GREEN: message[0] = 0x04;
		default: message[0] = 0x03;
	}

	vformat(message[1], 251, msg, 4);
	
	replace_all(message, charsmax(message), "^1", "^x01");
	replace_all(message, charsmax(message), "^3", "^x03");
	replace_all(message, charsmax(message), "^4", "^x04");

	// Make sure message is not longer than 192 character. Will crash the server.
	message[192] = '^0';

	static team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	}
	else
	{
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);
	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
		Team_Info(index, MSG_Type, TeamName[team]);
}

ShowColorMessage(id, type, message[])
{
	message_begin(type, get_user_msgid("SayText"), _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	message_begin(type, get_user_msgid("TeamInfo"), _, id);
	write_byte(id);
	write_string(team);
	message_end();
	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED: return Team_Info(index, type, TeamName[1]);
		case BLUE: return Team_Info(index, type, TeamName[2]);
		case GREY: return Team_Info(index, type, TeamName[0]);
	}

	return 0;
}

FindPlayer()
{
	static i;
	i = -1;

	while(i <= get_maxplayers())
	{
		if(is_user_connected(++i))
			return i;
	}

	return -1;
}

public plugin_init()
{
	new admin_chat_id

	register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("adminchat.txt")
	register_dictionary("common.txt")
	register_dictionary("antiflood.txt")
	register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message", 1) // forces FlagManager as it is a say command
	register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
	register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
	admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
	register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
	register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
	register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")
	
	amx_show_activity = get_cvar_pointer("amx_show_activity");
	
	if (amx_show_activity == 0)
	{
		amx_show_activity = register_cvar("amx_show_activity", "2", FCVAR_PROTECTED);
	}

	new str[1]
	get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
}

public plugin_cfg()
{
	// check if cvar amx_flood_time exists (created by antiflood plugin)
	
	amx_flood_time = get_cvar_pointer("amx_flood_time");
	
	if( !amx_flood_time )
	{
		// else create it
		amx_flood_time = register_cvar("amx_flood_time", "0.75");
	}
}

public cmdSayChat(id, level)
{
	if (!access(id, level))
	{
		return PLUGIN_CONTINUE
	}
	
	new said[6], i = 0
	read_argv(1, said, charsmax(said))
	
	while (said[i] == '@')
	{
		i++
	}
	
	if (!i || i > 3)
	{
		return PLUGIN_CONTINUE
	}
	
	new message[192], a = 0
	read_args(message, charsmax(message))
	remove_quotes(message)
	
	switch (said[i])
	{
		case 'r': a = 1
		case 'g': a = 2
		case 'b': a = 3
		case 'y': a = 4
		case 'm': a = 5
		case 'c': a = 6
		case 'o': a = 7
	}
	
	new n, s = i
	if (a)
	{
		n++
		s++
	}
	while (said[s] && isspace(said[s]))
	{
		n++
		s++
	}
	

	new name[MAX_NAME_LENGTH], authid[32], userid
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	
	log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
	
	if (++g_msgChannel > 6 || g_msgChannel < 3)
	{
		g_msgChannel = 3
	}
	
	new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
	
	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

	switch (get_pcvar_num(amx_show_activity))
	{
		case 3, 4:
		{
			new players[MAX_PLAYERS], plrsnum, pl
			get_players(players, plrsnum, "ch")
			for(new j; j<plrsnum; j++)
			{
				pl = players[j]

				if (is_user_admin(pl))
				{
					show_hudmessage(pl, "%s: %s", name, message[i + n])
					client_print(pl, print_notify, "%s: %s", name, message[i + n])
				}
				else
				{
					show_hudmessage(pl, "%s", message[i + n])
					client_print(pl, print_notify, "%s", message[i + n])
				}
			}
		}
		case 2:
		{
			show_hudmessage(0, "%s: %s", name, message[i + n])
			client_print(0, print_notify, "%s: %s", name, message[i + n])
		}
		default:
		{
			show_hudmessage(0, "%s", message[i + n])
			client_print(0, print_notify, "%s", message[i + n])
		}
	}

	return PLUGIN_HANDLED
}

public cmdSayAdmin(id)
{
	new said[2]
	read_argv(1, said, charsmax(said))

	if (said[0] != '@')
		return PLUGIN_CONTINUE

	new Float:maxChat = get_pcvar_float(amx_flood_time)
		
	if (maxChat)
	{
		new Float:nexTime = get_gametime()
			
		if (g_Flooding[id] > nexTime)
		{
			if (g_Flood[id] >= 3)
			{
				client_print(id, print_notify, "** %L **", id, "STOP_FLOOD")
				g_Flooding[id] = nexTime + maxChat + 3.0
				return PLUGIN_HANDLED
			}
			g_Flood[id]++
		}
		else if (g_Flood[id])
		{
			g_Flood[id]--
		}
		
		g_Flooding[id] = nexTime + maxChat
	}

	new message[192], name[MAX_NAME_LENGTH], authid[32], userid
	new players[MAX_PLAYERS], inum, pl
	
	read_args(message, charsmax(message))
	remove_quotes(message)
        replace(message, charsmax(message), "@", " ")
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	
	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
	
	new flag = get_user_flags(id);
	new Color:iColor;
	
	if(flag & ADMIN_RCON)
	{	
		format(message, 191, "[BIG BOSS] %s:%s", name, message);	
		iColor = RED;
	}

	else if(flag & ADMIN_LEVEL_H)
	{
		format(message, 191, "[HEAD ADMIN] %s:%s", name, message);	
		iColor = GREEN;
	}
        else if(flag & ADMIN_BAN)
	{
		format(message, 191, "[ADMIN] %s:%s", name, message);	
		iColor = BLUE;
	}
	else if(flag & ADMIN_LEVEL_A)
	{
		format(message, 191, "[TEST ADMIN] %s:%s", name, message);
		iColor = GREY;
	}
	else if(flag & ADMIN_CHAT)
	{
		format(message, 191, "[V.I.P] %s:%s", name, message);
		iColor = GREY;
	}
	else
	{
		format(message, 191, "[%L] %s: %s", id, "PLAYER", name, message[1]);
		iColor = BLUE;
	}

	get_players(players, inum, "ch")
	
	for (new i = 0; i < inum; ++i)
	{
		pl = players[i]
		if (pl != id && get_user_flags(pl) & g_AdminChatFlag)
                        ColorChat(pl, iColor, message);
	}

        ColorChat(pl, iColor, message);

	return PLUGIN_HANDLED
}

public cmdChat(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new message[192]
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	
	if (!message[0])
		return PLUGIN_HANDLED
	
	new name[MAX_NAME_LENGTH], players[MAX_PLAYERS], inum, authid[32], userid, pl
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	get_players(players, inum, "ch")
	
	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
	
	new flag = get_user_flags(id);
	new Color:iColor;
	
	if(flag & ADMIN_RCON)
	{	
		format(message, 191, "[BIG BOSS] %s:%s", name, message);	
		iColor = RED;
	}	

		else if(flag & ADMIN_LEVEL_H)
	{
		format(message, 191, "[HEAD ADMIN] %s:%s", name, message);	
		iColor = GREEN;
	}
		else if(flag & ADMIN_BAN)
	{
		format(message, 191, "[ADMIN] %s:%s", name, message);	
		iColor = BLUE;
	}
		else if(flag & ADMIN_LEVEL_A)
	{
		format(message, 191, "[TEST ADMIN] %s:%s", name, message);
		iColor = GREY;
	}
		else if(flag & ADMIN_KICK)
	{
		format(message, 191, "[V.I.P] %s:%s", name, message);
		iColor = GREY;
	}
	
		else
	{
		format(message, 191, "[%L] %s: %s", id, "PLAYER", name, message[1]);
		iColor = BLUE;
	}
	
	for (new i = 0; i < inum; ++i)
	{
		pl = players[i]
		if (access((pl =players[i]), g_AdminChatFlag))
			ColorChat(pl, iColor, message);
	}
	
	return PLUGIN_HANDLED
	}	

	public cmdSay(id, level, cid)
	{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new message[192], name[MAX_NAME_LENGTH], authid[32], userid
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	ColorChat(0, GREEN, "%L", "LANG_PLAYER", "PRINT_ALL", name, message)
	console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
	
	log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
	log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
	
	return PLUGIN_HANDLED
}

public cmdPsay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new name[MAX_NAME_LENGTH]
	read_argv(1, name, charsmax(name))
	new priv = cmd_target(id, name, 0)

	if (!priv)
		return PLUGIN_HANDLED
	
	new length = strlen(name) + 1

	new message[192], name2[MAX_NAME_LENGTH], authid[32], authid2[32], userid, userid2
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name2, charsmax(name2))
	userid = get_user_userid(id)
	read_args(message, charsmax(message))
	
	if (message[0] == '"' && message[length] == '"') // HLSW fix
	{
		message[0] = ' '
		message[length] = ' '
		length += 2
	}
	
	remove_quotes(message[length])
	get_user_name(priv, name, charsmax(name))
	
	if (id && id != priv)
		ColorChat(id, GREEN, "(%s) %s: %s", name, name2, message[length])
	
	ColorChat(priv, GREEN, "(%s) %s: %s", name, name2, message[length])
	console_print(id, "(%s) %s :   %s", name, name2, message[length])
	get_user_authid(priv, authid2, charsmax(authid2))
	userid2 = get_user_userid(priv)
	
	log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
	
	return PLUGIN_HANDLED
}

public cmdTsay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new cmd[16], color[16], color2[16], message[192], name[MAX_NAME_LENGTH], authid[32], userid = 0
	
	read_argv(0, cmd, charsmax(cmd))
	new bool:tsay = (tolower(cmd[4]) == 't')
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	parse(message, color, charsmax(color))
	
	new found = 0, a = 0
	new lang[3], langnum = get_langsnum()

	for (new i = 0; i < MAX_CLR; ++i)
	{
		for (new j = 0; j < langnum; j++)
		{
			get_lang(j, lang)
			formatex(color2, charsmax(color2), "%L", lang, g_Colors[i])
			
			if (equali(color, color2))
			{
				a = i
				found = 1
				break
			}
		}
		if (found == 1)
			break
	}
	
	new length = found ? (strlen(color) + 1) : 0
	
	if (++g_msgChannel > 6 || g_msgChannel < 3)
		g_msgChannel = 3

	new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

	switch (get_pcvar_num(amx_show_activity))
	{
		case 3, 4:
		{
			new players[MAX_PLAYERS], plrsnum, pl
			get_players(players, plrsnum, "ch")
			for(new i; i<plrsnum; i++)
			{
				pl = players[i]
				
				if (is_user_admin(pl))
				{
					show_hudmessage(pl, "%s: %s", name, message[length])
					client_print(pl, print_notify, "%s: %s", name, message[length])
				}
				else
				{
					show_hudmessage(pl, "%s", message[length])
					client_print(pl, print_notify, "%s", message[length])
				}
			}
			console_print(id, "%s: %s", name, message[length])
		}
		case 2:
		{
			show_hudmessage(0, "%s: %s", name, message[length])
			client_print(0, print_notify, "%s :   %s", name, message[length])
			console_print(id, "%s: %s", name, message[length])
		}
		default:
		{
			show_hudmessage(0, "%s", message[length])
			client_print(0, print_notify, "%s", message[length])
			console_print(id, "%s", message[length])
		}
	}

	log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
	log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

	return PLUGIN_HANDLED
}
Добавено преди 5 часа 29 минути 15 секунди:
Имали някой който може да се справи с това ?

Добавено преди 2 часа 28 минути 1 секунда:
Значи разбрах че проблема идва от ред 354 до 358

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

 	{
		pl = players[i]
		if (pl != id && get_user_flags(pl) & g_AdminChatFlag)
                        ColorChat(pl, iColor, message);
	}
Не мога да разбера какво му е грешното на това...
Като добавя ето този код:

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

	{
		pl = players[i]

		if (pl == id || get_user_flags(pl) & g_AdminChatFlag)
		{
			client_print(pl, print_chat, "(%l) %s :  %s", is_sender_admin ? "ADMIN" : "PLAYER", name, message[1])
			ColorChat(pl, iColor, message);
		}
	}
Втория тогава вижда админчата но тогава пък излиза съобщението на 3 реда с различни префикси ето така като на втората снимка: [img]
Прикачени файлове
Screenshot_1.png
Screenshot_1.png (801.98 KiB) Преглеждано 2171 пъти
Screenshot_1.png
Screenshot_1.png (801.98 KiB) Преглеждано 2171 пъти
20200422182736_1.jpg
20200422182736_1.jpg (201.46 KiB) Преглеждано 2242 пъти
20200422182736_1.jpg
20200422182736_1.jpg (201.46 KiB) Преглеждано 2242 пъти

Аватар
Drea<M>40BG ;]]
Извън линия
Потребител
Потребител
Мнения: 750
Регистриран на: 11 Окт 2016, 11:35
Се отблагодари: 115 пъти
Получена благодарност: 63 пъти
Обратна връзка:

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от Drea<M>40BG ;]] » 23 Апр 2020, 08:26

Пробвай с този, ползвам го и не прави проблеми.
https://amxx-bg.info/forum/viewtopic.php?f=21&t=46

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от atmax » 23 Апр 2020, 09:53

Ползвай по-горния adminchat заедно със chatmanager-a на ocixcrom или ползвай оригиналния adminchat заедно с prefix+colorchat-а по-долу, защото този който си пратил е редакция на оригиналния adminchat и този който си е играл на скриптър не е знаел какво прави.
Ето ти един prefix+colorchat плъгин, нагласил съм го според твоите изисквания, освен цветовете:

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

#include <amxmodx>
#include <amxmisc>

#define VERSION    "3.0"

#define FLAGADMINONE ADMIN_RCON
#define PREFIXADMINONE "BIG BOSS"

#define FLAGADMINTWO ADMIN_LEVEL_H
#define PREFIXADMINTWO "HEAD ADMIN"

#define FLAGADMINVIP ADMIN_BAN
#define PREFIXADMINVIP "ADMIN"

#define FLAGADMINSMS ADMIN_LEVEL_A
#define PREFIXADMINSMS "TEST ADMIN"

#define FLAGADMINTHREE ADMIN_CHAT
#define PREFIXADMINTHREE "V.I.P"

new FirstPrefix, SecondPrefix, ThirdPrefix, FourthPrefix, LastPrefix;
new SzMaxPlayers, SzSayText;

new SzGTeam[3][] = {
    "Spectator",
    "Terrorist",
    "Counter-Terrorist"
}

public plugin_init()
{
    register_plugin("Admin Prefix And Chat Color", VERSION, "kostov,Dark_Style");
   
    // Cvars Plugins
    FirstPrefix = register_cvar("show_admin_prefix_one", "1");
    SecondPrefix = register_cvar("show_admin_prefix_two", "1");
    ThirdPrefix      = register_cvar("show_sms_admin_prefix", "1");
    FourthPrefix      = register_cvar("show_vip_admin_prefix", "1");
    LastPrefix = register_cvar("show_admin_prefix_three", "1")
   
    register_cvar("admin_prefix_version",    VERSION, FCVAR_SERVER|FCVAR_SPONLY);
    set_cvar_string("admin_prefix_version",    VERSION);
    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say_team");
   
    SzSayText = get_user_msgid ("SayText");
    SzMaxPlayers = get_maxplayers();
   
    register_message(SzSayText, "MsgDuplicate");
}

public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public hook_say(id)
{
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
   
    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
   
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
   
    if(get_pcvar_num(FirstPrefix) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages));
    else if(get_pcvar_num(FirstPrefix) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));

    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
       
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}

public hook_say_team(id){
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    new SzGetTeam = get_user_team(id);

    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
   
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
   
    if(get_pcvar_num(FirstPrefix) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages));
    else if(get_pcvar_num(FirstPrefix) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
   
    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
           
            if(get_user_team(i) != SzGetTeam)
                continue;
           
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}


bool:is_valid_msg(const SzMessages[]){
    if( SzMessages[0] == '@'
    || !strlen(SzMessages)){ return false; }
    return true;
} 
Prefix-а се редактира от тези редове:

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

#define FLAGADMINONE ADMIN_RCON
#define PREFIXADMINONE "BIG BOSS"

#define FLAGADMINTWO ADMIN_LEVEL_H
#define PREFIXADMINTWO "HEAD ADMIN"

#define FLAGADMINVIP ADMIN_BAN
#define PREFIXADMINVIP "ADMIN"

#define FLAGADMINSMS ADMIN_LEVEL_A
#define PREFIXADMINSMS "TEST ADMIN"

#define FLAGADMINTHREE ADMIN_CHAT
#define PREFIXADMINTHREE "V.I.P"
А за цветовете отиваш на format и заместваш тези ^3,^4.. като имаш това в предвид:
^4-зелено, а ^3-според отбора.
Предполагам ще се справиш! Успех!
Извън темата
P.S За тоя зле написан admin prefix пусна 3 теми, че чак на ЛС си ми писал..Вари виж другата тема казал съм ти какво да правиш
Rest in peace my friend I always will remember you! 🖤👊

Аватар
devilchy
Извън линия
Потребител
Потребител
Мнения: 223
Регистриран на: 03 Фев 2017, 14:08
Местоположение: Burgas
Се отблагодари: 3 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от devilchy » 25 Апр 2020, 03:30

Първо ти благодаря за плъгина.
Значи този чат префикс доста добар лесно за настройки но има 2 проблема.
1.Хората като писат на say_team виждат само префикса не виждат всъщност на кой чат са писали.
2.при компилиране ми дава следната грешка:

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

prefix.sma(28) : warning 203: symbol is never used: "SzGTeam"
Относно моя пренаписан админ чат плъгин където всъщност имах проблеми.
го оправих(макарче не мисля че трябва да е така оправен, ще посоча и ред от къде идва проблема понеже АКО МОЖЕ ДА СЕ ФИКСНЕ НЯКАК КАКТО ТРЯБВА) иначе сега си работи както трябва на ли префикси има само следните проблеми.
1.Дава грешка при компилиране тя е следната

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

warning 204: symbol is assigned a value that is never used: "is_sender_admin"
2.Admin_chat , Admin_psay , amx_say и т.н. тези команди които са за долния чат излизат жълто (като нормален клиентски чат, макарче префикса се показва нормално само където цвета му е жълт) Ако може да се направи цвета да му е Син.
3. Спрял съм със // icolor понеже дава грешка при компилиране тя е следната:

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

 error 017: undefined symbol "iColor"
sma на въпросния плъгин:

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

// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
//     https://alliedmods.net/amxmodx-license

//
// Admin Chat Plugin
//

#include <amxmodx>
#include <amxmisc>

new g_msgChannel

#define MAX_CLR 10

new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

new amx_show_activity;
new amx_flood_time;
new g_AdminChatFlag = ADMIN_CHAT;

new Float:g_Flooding[MAX_PLAYERS + 1] = {0.0, ...}
new g_Flood[MAX_PLAYERS + 1] = {0, ...}

enum Color
{
	NORMAL = 1, 	// Client's con_color cvar color
	GREEN, 			// Green Color
	TEAM_COLOR, 	// Red, grey, blue
	GREY, 			// Grey
	RED, 			// Red
	BLUE, 			// Blue
}

new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" }

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	static message[256];

	switch(type)
	{
		case NORMAL: message[0] = 0x01;
		case GREEN: message[0] = 0x04;
		default: message[0] = 0x03;
	}

	vformat(message[1], 251, msg, 4);
	
	replace_all(message, charsmax(message), "^1", "^x01");
	replace_all(message, charsmax(message), "^3", "^x03");
	replace_all(message, charsmax(message), "^4", "^x04");

	// Make sure message is not longer than 192 character. Will crash the server.
	message[192] = '^0';

	static team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	}
	else
	{
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);
	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
		Team_Info(index, MSG_Type, TeamName[team]);
}

ShowColorMessage(id, type, message[])
{
	message_begin(type, get_user_msgid("SayText"), _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	message_begin(type, get_user_msgid("TeamInfo"), _, id);
	write_byte(id);
	write_string(team);
	message_end();
	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED: return Team_Info(index, type, TeamName[1]);
		case BLUE: return Team_Info(index, type, TeamName[2]);
		case GREY: return Team_Info(index, type, TeamName[0]);
	}

	return 0;
}

FindPlayer()
{
	static i;
	i = -1;

	while(i <= get_maxplayers())
	{
		if(is_user_connected(++i))
			return i;
	}

	return -1;
}

public plugin_init()
{
	new admin_chat_id

	register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("adminchat.txt")
	register_dictionary("common.txt")
	register_dictionary("antiflood.txt")
	register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message", 1) // forces FlagManager as it is a say command
	register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
	register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
	admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
	register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
	register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
	register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")
	
	amx_show_activity = get_cvar_pointer("amx_show_activity");
	
	if (amx_show_activity == 0)
	{
		amx_show_activity = register_cvar("amx_show_activity", "2", FCVAR_PROTECTED);
	}

	new str[1]
	get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
}

public plugin_cfg()
{
	//check if cvar amx_flood_time exists (created by antiflood plugin)
	
	amx_flood_time = get_cvar_pointer("amx_flood_time");
	
	if( !amx_flood_time )
	{
		//else create it
		amx_flood_time = register_cvar("amx_flood_time", "0.75");
	}
}

public cmdSayChat(id, level)
{
	if (!access(id, level))
	{
		return PLUGIN_CONTINUE
	}
	
	new said[6], i = 0
	read_argv(1, said, charsmax(said))
	
	while (said[i] == '@')
	{
		i++
	}
	
	if (!i || i > 3)
	{
		return PLUGIN_CONTINUE
	}
	
	new message[192], a = 0
	read_args(message, charsmax(message))
	remove_quotes(message)
	
	switch (said[i])
	{
		case 'r': a = 1
		case 'g': a = 2
		case 'b': a = 3
		case 'y': a = 4
		case 'm': a = 5
		case 'c': a = 6
		case 'o': a = 7
	}
	
	new n, s = i
	if (a)
	{
		n++
		s++
	}
	while (said[s] && isspace(said[s]))
	{
		n++
		s++
	}
	

	new name[MAX_NAME_LENGTH], authid[32], userid
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	
	log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
	
	if (++g_msgChannel > 6 || g_msgChannel < 3)
	{
		g_msgChannel = 3
	}
	
	new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
	
	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

	switch (get_pcvar_num(amx_show_activity))
	{
		case 3, 4:
		{
			new players[MAX_PLAYERS], plrsnum, pl
			get_players(players, plrsnum, "ch")
			for(new j; j<plrsnum; j++)
			{
				pl = players[j]

				if (is_user_admin(pl))
				{
					show_hudmessage(pl, "%s :   %s", name, message[i + n])
					client_print(pl, print_notify, "%s :   %s", name, message[i + n])
				}
				else
				{
					show_hudmessage(pl, "%s", message[i + n])
					client_print(pl, print_notify, "%s", message[i + n])
				}
			}
		}
		case 2:
		{
			show_hudmessage(0, "%s :   %s", name, message[i + n])
			client_print(0, print_notify, "%s :   %s", name, message[i + n])
		}
		default:
		{
			show_hudmessage(0, "%s", message[i + n])
			client_print(0, print_notify, "%s", message[i + n])
		}
	}

	return PLUGIN_HANDLED
}

public cmdSayAdmin(id)
{
	new said[2]
	read_argv(1, said, charsmax(said))

	if (said[0] != '@')
		return PLUGIN_CONTINUE

	new Float:maxChat = get_pcvar_float(amx_flood_time)
		
	if (maxChat)
	{
		new Float:nexTime = get_gametime()
			
		if (g_Flooding[id] > nexTime)
		{
			if (g_Flood[id] >= 3)
			{
				client_print(id, print_notify, "** %L **", id, "STOP_FLOOD")
				g_Flooding[id] = nexTime + maxChat + 3.0
				return PLUGIN_HANDLED
			}
			g_Flood[id]++
		}
		else if (g_Flood[id])
		{
			g_Flood[id]--
		}
		
		g_Flooding[id] = nexTime + maxChat
	}

	new message[192], name[MAX_NAME_LENGTH], authid[32], userid
	new players[MAX_PLAYERS], inum, pl
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	replace(message, charsmax(message), "@", " ")
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	
	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
	
	new flag = get_user_flags(id);
	new Color:iColor;
	
	if(flag & ADMIN_RCON)
	{	
		format(message, 191, "[BIG BOSS] %s:%s", name, message);	
		iColor = GREEN;
	}

	else if(flag & ADMIN_LEVEL_H)
	{
		format(message, 191, "[HEAD ADMIN] %s:%s", name, message);	
		iColor = GREEN;
	}
	
	else if(flag & ADMIN_LEVEL_G)
	{
		format(message, 191, "[Lady Admin] %s:%s", name, message);	
		iColor = RED;
	}
	
	else if(flag & ADMIN_BAN)
	{
		format(message, 191, "[ADMIN] %s:%s", name, message);	
		iColor = BLUE;
	}
	
	
	else if(flag & ADMIN_LEVEL_A)
	{
		format(message, 191, "[TEST ADMIN] %s:%s", name, message);
		iColor = GREY;
	}
	
	else if(flag & ADMIN_CHAT)
	{
		format(message, 191, "[V.I.P] %s:%s", name, message);
		iColor = GREY;
	}
	
	else
	{
		format(message, 191, "[%L] %s: %s", id, "PLAYER", name, message[1]);
		iColor = BLUE;
	}
	
	get_players(players, inum, "ch")
	
	for (new bool:is_sender_admin = is_user_admin(id) != 0, i = 0; i < inum; ++i)
	{
		pl = players[i]

		if (pl == id || get_user_flags(pl) & g_AdminChatFlag)
		{
			//client_print(pl, print_chat, "(%l) %s :  %s", is_sender_admin ? "ADMIN" : "PLAYER", name, message[1])
			ColorChat(pl, iColor, message);
		}
	}
	
    //ColorChat(pl, iColor, message);
	
	return PLUGIN_HANDLED
}

public cmdChat(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new message[192]
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	
	if (!message[0])
		return PLUGIN_HANDLED
	
	new name[MAX_NAME_LENGTH], players[MAX_PLAYERS], inum, authid[32], userid, pl
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	get_players(players, inum, "ch")
	
	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
	
	new flag = get_user_flags(id);
	//new Color:iColor;

	if(flag & ADMIN_RCON)
	{	
		format(message, 191, "[BIG BOSS] %s:%s", name, message);	
		//iColor = RED;
	}

	else if(flag & ADMIN_LEVEL_H)
	{
		format(message, 191, "[HEAD ADMIN] %s:%s", name, message);	
		//iColor = GREEN;
	}
        else if(flag & ADMIN_BAN)
	{
		format(message, 191, "[ADMIN] %s:%s", name, message);	
		//iColor = BLUE;
	}
	else if(flag & ADMIN_LEVEL_A)
	{
		format(message, 191, "[TEST ADMIN] %s:%s", name, message);
		//iColor = GREY;
	}
	else if(flag & ADMIN_CHAT)
	{
		format(message, 191, "[V.I.P] %s:%s", name, message);
		//iColor = GREY;
	}
	else
	{
		format(message, 191, "[%L] %s: %s", id, "PLAYER", name, message[1]);
		//iColor = BLUE;
	}
	
	get_players(players, inum, "ch")
	
	for (new i = 0; i < inum; ++i)
	{
		pl = players[i]
		if (access(pl, g_AdminChatFlag))
			client_print(pl, print_chat, "%s", message)
	}
	
	return PLUGIN_HANDLED
}

public cmdSay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new message[192], name[MAX_NAME_LENGTH], authid[32], userid
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
	console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
	
	log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
	log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
	
	return PLUGIN_HANDLED
}

public cmdPsay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new name[MAX_NAME_LENGTH]
	read_argv(1, name, charsmax(name))
	new priv = cmd_target(id, name, 0)

	if (!priv)
		return PLUGIN_HANDLED
	
	new length = strlen(name) + 1

	new message[192], name2[MAX_NAME_LENGTH], authid[32], authid2[32], userid, userid2
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name2, charsmax(name2))
	userid = get_user_userid(id)
	read_args(message, charsmax(message))
	
	if (message[0] == '"' && message[length] == '"') // HLSW fix
	{
		message[0] = ' '
		message[length] = ' '
		length += 2
	}
	
	remove_quotes(message[length])
	get_user_name(priv, name, charsmax(name))
	
	if (id && id != priv)
		client_print(id, print_chat, "(%s) %s :   %s", name, name2, message[length])
	
	client_print(priv, print_chat, "(%s) %s :   %s", name, name2, message[length])
	console_print(id, "(%s) %s :   %s", name, name2, message[length])
	get_user_authid(priv, authid2, charsmax(authid2))
	userid2 = get_user_userid(priv)
	
	log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
	log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
	
	return PLUGIN_HANDLED
}

public cmdTsay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new cmd[16], color[16], color2[16], message[192], name[MAX_NAME_LENGTH], authid[32], userid = 0
	
	read_argv(0, cmd, charsmax(cmd))
	new bool:tsay = (tolower(cmd[4]) == 't')
	
	read_args(message, charsmax(message))
	remove_quotes(message)
	parse(message, color, charsmax(color))
	
	new found = 0, a = 0
	new lang[3], langnum = get_langsnum()

	for (new i = 0; i < MAX_CLR; ++i)
	{
		for (new j = 0; j < langnum; j++)
		{
			get_lang(j, lang)
			formatex(color2, charsmax(color2), "%L", lang, g_Colors[i])
			
			if (equali(color, color2))
			{
				a = i
				found = 1
				break
			}
		}
		if (found == 1)
			break
	}
	
	new length = found ? (strlen(color) + 1) : 0
	
	if (++g_msgChannel > 6 || g_msgChannel < 3)
		g_msgChannel = 3

	new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
	
	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	userid = get_user_userid(id)
	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

	switch (get_pcvar_num(amx_show_activity))
	{
		case 3, 4:
		{
			new players[MAX_PLAYERS], plrsnum, pl
			get_players(players, plrsnum, "ch")
			for(new i; i<plrsnum; i++)
			{
				pl = players[i]
				
				if (is_user_admin(pl))
				{
					show_hudmessage(pl, "%s :   %s", name, message[length])
					client_print(pl, print_notify, "%s :   %s", name, message[length])
				}
				else
				{
					show_hudmessage(pl, "%s", message[length])
					client_print(pl, print_notify, "%s", message[length])
				}
			}
			console_print(id, "%s :  %s", name, message[length])
		}
		case 2:
		{
			show_hudmessage(0, "%s :   %s", name, message[length])
			client_print(0, print_notify, "%s :   %s", name, message[length])
			console_print(id, "%s :  %s", name, message[length])
		}
		default:
		{
			show_hudmessage(0, "%s", message[length])
			client_print(0, print_notify, "%s", message[length])
			console_print(id, "%s", message[length])
		}
	}

	log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
	log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

	return PLUGIN_HANDLED
}


atmax написа: 23 Апр 2020, 09:53 Ползвай по-горния adminchat заедно със chatmanager-a на ocixcrom или ползвай оригиналния adminchat заедно с prefix+colorchat-а по-долу, защото този който си пратил е редакция на оригиналния adminchat и този който си е играл на скриптър не е знаел какво прави.
Ето ти един prefix+colorchat плъгин, нагласил съм го според твоите изисквания, освен цветовете:

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

#include <amxmodx>
#include <amxmisc>

#define VERSION    "3.0"

#define FLAGADMINONE ADMIN_RCON
#define PREFIXADMINONE "BIG BOSS"

#define FLAGADMINTWO ADMIN_LEVEL_H
#define PREFIXADMINTWO "HEAD ADMIN"

#define FLAGADMINVIP ADMIN_BAN
#define PREFIXADMINVIP "ADMIN"

#define FLAGADMINSMS ADMIN_LEVEL_A
#define PREFIXADMINSMS "TEST ADMIN"

#define FLAGADMINTHREE ADMIN_CHAT
#define PREFIXADMINTHREE "V.I.P"

new FirstPrefix, SecondPrefix, ThirdPrefix, FourthPrefix, LastPrefix;
new SzMaxPlayers, SzSayText;

new SzGTeam[3][] = {
    "Spectator",
    "Terrorist",
    "Counter-Terrorist"
}

public plugin_init()
{
    register_plugin("Admin Prefix And Chat Color", VERSION, "kostov,Dark_Style");
   
    // Cvars Plugins
    FirstPrefix = register_cvar("show_admin_prefix_one", "1");
    SecondPrefix = register_cvar("show_admin_prefix_two", "1");
    ThirdPrefix      = register_cvar("show_sms_admin_prefix", "1");
    FourthPrefix      = register_cvar("show_vip_admin_prefix", "1");
    LastPrefix = register_cvar("show_admin_prefix_three", "1")
   
    register_cvar("admin_prefix_version",    VERSION, FCVAR_SERVER|FCVAR_SPONLY);
    set_cvar_string("admin_prefix_version",    VERSION);
    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say_team");
   
    SzSayText = get_user_msgid ("SayText");
    SzMaxPlayers = get_maxplayers();
   
    register_message(SzSayText, "MsgDuplicate");
}

public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public hook_say(id)
{
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
   
    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
   
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
   
    if(get_pcvar_num(FirstPrefix) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages));
    else if(get_pcvar_num(FirstPrefix) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));

    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
       
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}

public hook_say_team(id){
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    new SzGetTeam = get_user_team(id);

    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
   
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
   
    if(get_pcvar_num(FirstPrefix) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages));
    else if(get_pcvar_num(FirstPrefix) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SecondPrefix) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(ThirdPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(FourthPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(LastPrefix) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
   
    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
           
            if(get_user_team(i) != SzGetTeam)
                continue;
           
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}


bool:is_valid_msg(const SzMessages[]){
    if( SzMessages[0] == '@'
    || !strlen(SzMessages)){ return false; }
    return true;
} 
Prefix-а се редактира от тези редове:

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

#define FLAGADMINONE ADMIN_RCON
#define PREFIXADMINONE "BIG BOSS"

#define FLAGADMINTWO ADMIN_LEVEL_H
#define PREFIXADMINTWO "HEAD ADMIN"

#define FLAGADMINVIP ADMIN_BAN
#define PREFIXADMINVIP "ADMIN"

#define FLAGADMINSMS ADMIN_LEVEL_A
#define PREFIXADMINSMS "TEST ADMIN"

#define FLAGADMINTHREE ADMIN_CHAT
#define PREFIXADMINTHREE "V.I.P"
А за цветовете отиваш на format и заместваш тези ^3,^4.. като имаш това в предвид:
^4-зелено, а ^3-според отбора.
Предполагам ще се справиш! Успех!
Извън темата
P.S За тоя зле написан admin prefix пусна 3 теми, че чак на ЛС си ми писал..Вари виж другата тема казал съм ти какво да правиш

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от atmax » 25 Апр 2020, 10:22

Браво, оправил си adminchat, въпреки че ти казах да ползваш оригиналния на AMXX Dev Team без никакви редакции...
Също те съветвах да ползваш плъгините на OciXcrom, но ти пак...
При компилиране не ти дава грешки, а предупреждения че SzGetTeam не е използван.. Поради тази причина не ти пише дали е team chat или не.. Щом си оправил онзи adminchat дето беше пълен с грешки мисля че ще се справиш и с това отиди на format и използвай SzGetTeam.
Извън темата
Не си ти единственият, дето ми пишете на ЛС.. За теб и всички останали, това че се опитвам да ви помогна в темите, не означава че съм зависим от това да помагам.. Просто форума изисква това и за това където мога помагам, това не означава да ми спамите на ЛС и да ма издирвате в скайп и т.н.. Има си форум, пускайте си теми!
Rest in peace my friend I always will remember you! 🖤👊

Аватар
devilchy
Извън линия
Потребител
Потребител
Мнения: 223
Регистриран на: 03 Фев 2017, 14:08
Местоположение: Burgas
Се отблагодари: 3 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Проблем с Adminchat,2-ри админ не си вижда чата

Мнение от devilchy » 25 Апр 2020, 20:19

Еми братле извинявай много но ако исках някакъв друг плъгин щях да пусна тема в която да искам предложения за други плъгини.
Ако ще помагаш за тези грешки където съм споменал в 2та плъгина помагай тези неща където си ми писал да отида на формат нз си кфо нищо не ми говори.
atmax написа: 25 Апр 2020, 10:22 Браво, оправил си adminchat, въпреки че ти казах да ползваш оригиналния на AMXX Dev Team без никакви редакции...
Също те съветвах да ползваш плъгините на OciXcrom, но ти пак...
При компилиране не ти дава грешки, а предупреждения че SzGetTeam не е използван.. Поради тази причина не ти пише дали е team chat или не.. Щом си оправил онзи adminchat дето беше пълен с грешки мисля че ще се справиш и с това отиди на format и използвай SzGetTeam.
Извън темата
Не си ти единственият, дето ми пишете на ЛС.. За теб и всички останали, това че се опитвам да ви помогна в темите, не означава че съм зависим от това да помагам.. Просто форума изисква това и за това където мога помагам, това не означава да ми спамите на ЛС и да ма издирвате в скайп и т.н.. Има си форум, пускайте си теми!

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

Обратно към “Поддръжка / Помощ”

Кой е на линия

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