[INC] CromChat - a better ColorChat!

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

[INC] CromChat - a better ColorChat!

Мнение от User12 » 27 Яну 2018, 18:24

Не става , нищо не изписва като съобщение , компилира се но в чата нищо не показва . Може да няма начин да стане ..
Каналът ми в YouTube : Георги Пламенов

Изображение

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

[INC] CromChat - a better ColorChat!

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

Объркал съм един ред:

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

/* AMX Mod X
*   Maps Menu Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/


#include <amxmodx>
#include <amxmisc>
#include <cromchat>


new Array:g_mapName;
new g_mapNums
new g_menuPosition[33]

new g_voteCount[5]

new g_voteSelected[33][4]
new g_voteSelectedNum[33]

new g_coloredMenus

new g_choosed
new g_activity

public plugin_init()
{
	register_plugin("Maps Menu", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("mapsmenu.txt")
	register_dictionary("common.txt")
	register_clcmd("amx_mapmenu", "cmdMapsMenu", ADMIN_MAP, "- displays changelevel menu")
	register_clcmd("amx_votemapmenu", "cmdVoteMapMenu", ADMIN_VOTE, "- displays votemap menu")

	register_menucmd(register_menuid("Changelevel Menu"), 1023, "actionMapsMenu")
	register_menucmd(register_menuid("Which map do you want?"), 527, "voteCount")
	register_menucmd(register_menuid("Change map to"), 527, "voteCount")
	register_menucmd(register_menuid("Votemap Menu"), 1023, "actionVoteMapMenu")
	register_menucmd(register_menuid("The winner: "), 3, "actionResult")

	g_mapName=ArrayCreate(32);
	
	new maps_ini_file[64];
	get_configsdir(maps_ini_file, 63);
	format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file);

	if (!file_exists(maps_ini_file))
		get_cvar_string("mapcyclefile", maps_ini_file, sizeof(maps_ini_file) - 1);
		
	if (!file_exists(maps_ini_file))
		format(maps_ini_file, 63, "mapcycle.txt")
	
	load_settings(maps_ini_file)

	g_coloredMenus = colored_menus()
	g_activity = get_cvar_pointer("amx_show_activity")
}

public autoRefuse()
{
	log_amx("Vote: %L", "en", "RESULT_REF")
	ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "RESULT_REF")
}

public actionResult(id, key)
{
	remove_task(4545454)
	
	switch (key)
	{
		case 0:
		{
			new _modName[10]
			get_modname(_modName, 9)
			
			if (!equal(_modName, "zp"))
			{
				message_begin(MSG_ALL, SVC_INTERMISSION)
				message_end()
			}

			new tempMap[32];
			ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
			
			set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
			log_amx("Vote: %L", "en", "RESULT_ACC")
			ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "RESULT_ACC")
		}
		case 1: autoRefuse()
	}
	
	return PLUGIN_HANDLED
}

public checkVotes(id)
{
	id -= 34567
	new num, ppl[32], a = 0
	
	get_players(ppl, num, "c")
	if (num == 0) num = 1
	g_choosed = -1
	
	for (new i = 0; i < g_voteSelectedNum[id]; ++i)
		if (g_voteCount[a] < g_voteCount[i])
			a = i

	new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4]
	new iRatio = votesNum ? floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1
	new iResult = g_voteCount[a]

	if (iResult >= iRatio)
	{
		g_choosed = g_voteSelected[id][a]
		new tempMap[32];
		ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L ^3%s", LANG_PLAYER, "VOTE_SUCCESS", tempMap);
		log_amx("!tVote: %L %s", "en", "VOTE_SUCCESS", tempMap);
	}
	
	if (g_choosed != -1)
	{
		if (is_user_connected(id))
		{
			new menuBody[512]
			new tempMap[32];
			ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
			new len = format(menuBody, 511, g_coloredMenus ? "\y%L: \w%s^n^n" : "%L: %s^n^n", id, "THE_WINNER", tempMap)
			
			len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", id, "WANT_CONT")
			format(menuBody[len], 511-len, "^n1. %L^n2. %L", id, "YES", id, "NO")

			show_menu(id, 0x03, menuBody, 10, "The winner: ")
			set_task(10.0, "autoRefuse", 4545454)
		} else {
			new _modName[10]
			get_modname(_modName, 9)
			
			if (!equal(_modName, "zp"))
			{
				message_begin(MSG_ALL, SVC_INTERMISSION)
				message_end()
			}
			new tempMap[32];
			ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap));
			set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
		}
	} else {
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "VOTE_FAILED")
		log_amx("Vote: %L", "en", "VOTE_FAILED")
	}
	
	remove_task(34567 + id)
}

public voteCount(id, key)
{
	if (key > 3)
	{
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "VOT_CANC")
		remove_task(34567 + id)
		set_cvar_float("amx_last_voting", get_gametime())
		log_amx("Vote: Cancel vote session")
		
		return PLUGIN_HANDLED
	}
	
	if (get_cvar_float("amx_vote_answers"))
	{
		new name[32]
		
		get_user_name(id, name, 31)
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "X_VOTED_FOR", name, key + 1)
	}
	
	++g_voteCount[key]
	
	return PLUGIN_HANDLED
}

isMapSelected(id, pos)
{
	for (new a = 0; a < g_voteSelectedNum[id]; ++a)
		if (g_voteSelected[id][a] == pos)
			return 1
	return 0
}

displayVoteMapsMenu(id, pos)
{
	if (pos < 0)
		return

	new menuBody[512], b = 0, start = pos * 7

	if (start >= g_mapNums)
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "VOTEMAP_MENU", pos + 1, (g_mapNums / 7 + ((g_mapNums % 7) ? 1 : 0)))
	new end = start + 7, keys = MENU_KEY_0

	if (end > g_mapNums)
		end = g_mapNums

	new tempMap[32];
	for (new a = start; a < end; ++a)
	{
		ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
		if (g_voteSelectedNum[id] == 4 || isMapSelected(id, pos * 7 + b))
		{
			++b
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, tempMap)
			else
				len += format(menuBody[len], 511-len, "#. %s^n", tempMap)
		} else {
			keys |= (1<<b)
			len += format(menuBody[len], 511-len, "%d. %s^n", ++b, tempMap)
		}
	}

	if (g_voteSelectedNum[id])
	{
		keys |= MENU_KEY_8
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "START_VOT")
	}
	else
		len += format(menuBody[len], 511-len, g_coloredMenus ? "^n\d8. %L^n\w" : "^n#. %L^n", id, "START_VOT")

	if (end != g_mapNums)
	{
		len += format(menuBody[len], 511-len, "^n9. %L...^n0. %L^n", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		len += format(menuBody[len], 511-len, "^n0. %L^n", id, pos ? "BACK" : "EXIT")

	if (g_voteSelectedNum[id])
		len += format(menuBody[len], 511-len, g_coloredMenus ? "^n\y%L:^n\w" : "^n%L:^n", id, "SEL_MAPS")
	else
		len += format(menuBody[len], 511-len, "^n^n")

	for (new c = 0; c < 4; c++)
	{
		if (c < g_voteSelectedNum[id])
		{
			ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap));
			len += format(menuBody[len], 511-len, "%s^n", tempMap)
		}
		else
			len += format(menuBody[len], 511-len, "^n")
	}

	new menuName[64]
	format(menuName, 63, "%L", "en", "VOTEMAP_MENU")

	show_menu(id, keys, menuBody, -1, menuName)
}

public cmdVoteMapMenu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	if (get_cvar_float("amx_last_voting") > get_gametime())
	{
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", id, "ALREADY_VOT")
		return PLUGIN_HANDLED
	}

	g_voteSelectedNum[id] = 0

	if (g_mapNums)
	{
		displayVoteMapsMenu(id, g_menuPosition[id] = 0)
	} else {
		console_print(id, "%L", id, "NO_MAPS_MENU")
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", id, "NO_MAPS_MENU")
	}

	return PLUGIN_HANDLED
}

public cmdMapsMenu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	if (g_mapNums)
	{
		displayMapsMenu(id, g_menuPosition[id] = 0)
	} else {
		console_print(id, "%L", id, "NO_MAPS_MENU")
		ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", id, "NO_MAPS_MENU")
	}

	return PLUGIN_HANDLED
}

public delayedChange(mapname[])
	server_cmd("changelevel %s", mapname)
	
public actionVoteMapMenu(id, key)
{
	new tempMap[32];
	switch (key)
	{
		case 7:
		{
			new Float:voting = get_cvar_float("amx_last_voting")
		
			if (voting > get_gametime())
			{
				ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", id, "ALREADY_VOT")
				return PLUGIN_HANDLED
			}

			if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
			{
				ColorChat(0, TEAM_COLOR, "^1[^4VOTEMAP^1]^4 %L", id, "VOT_NOW_ALLOW")
				return PLUGIN_HANDLED
			}

			g_voteCount = {0, 0, 0, 0, 0}
			
			new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0
			set_cvar_float("amx_last_voting", get_gametime() + vote_time)
			new iVoteTime = floatround(vote_time)

			set_task(vote_time, "checkVotes", 34567 + id)

			new menuBody[512]
			new players[32]
			new pnum, keys, len

			get_players(players, pnum)

			if (g_voteSelectedNum[id] > 1)
			{
				len = format(menuBody, 511, g_coloredMenus ? "\y%L^n\w^n" : "%L^n^n", id, "WHICH_MAP")
				
				for (new c = 0; c < g_voteSelectedNum[id]; ++c)
				{
					ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap));
					len += format(menuBody[len], 511, "%d. %s^n", c + 1, tempMap)
					keys |= (1<<c)
				}
				
				keys |= (1<<8)
				len += format(menuBody[len], 511, "^n9. %L^n", id, "NONE")
			} else {
				ArrayGetString(g_mapName, g_voteSelected[id][0], tempMap, charsmax(tempMap));
				len = format(menuBody, 511, g_coloredMenus ? "\y%L^n%s?^n\w^n1. %L^n2. %L^n" : "%L^n%s?^n^n1. %L^n2. %L^n", id, "CHANGE_MAP_TO", tempMap, id, "YES", id, "NO")
				keys = MENU_KEY_1|MENU_KEY_2
			}

			new menuName[64]
			format(menuName, 63, "%L", "en", "WHICH_MAP")

			for (new b = 0; b < pnum; ++b)
				if (players[b] != id)
					show_menu(players[b], keys, menuBody, iVoteTime, menuName)

			format(menuBody[len], 511, "^n0. %L", id, "CANC_VOTE")
			keys |= MENU_KEY_0
			show_menu(id, keys, menuBody, iVoteTime, menuName)

			new authid[32], name[32]
			
			get_user_authid(id, authid, 31)
			get_user_name(id, name, 31)

			//show_activity_key("ADMIN_V_MAP_1", "ADMIN_V_MAP_2", name);
			
			switch(get_pcvar_num(g_activity))
			{
				case 1: CC_SendMessage(0, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "ADMIN_V_MAP_1")
				case 2: CC_SendMessage(0, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "ADMIN_V_MAP_2", name)
			}

			new tempMapA[32];
			new tempMapB[32];
			new tempMapC[32];
			new tempMapD[32];
			if (g_voteSelectedNum[id] > 0)
			{
				ArrayGetString(g_mapName, g_voteSelected[id][0], tempMapA, charsmax(tempMapA));
			}
			else
			{
				copy(tempMapA, charsmax(tempMapA), "");
			}
			if (g_voteSelectedNum[id] > 1)
			{
				ArrayGetString(g_mapName, g_voteSelected[id][1], tempMapB, charsmax(tempMapB));
			}
			else
			{
				copy(tempMapB, charsmax(tempMapB), "");
			}
			if (g_voteSelectedNum[id] > 2)
			{
				ArrayGetString(g_mapName, g_voteSelected[id][2], tempMapC, charsmax(tempMapC));
			}
			else
			{
				copy(tempMapC, charsmax(tempMapC), "");
			}
			if (g_voteSelectedNum[id] > 3)
			{
				ArrayGetString(g_mapName, g_voteSelected[id][3], tempMapD, charsmax(tempMapD));
			}
			else
			{
				copy(tempMapD, charsmax(tempMapD), "");
			}
			
			log_amx("Vote: ^"^3%s<%d><^3%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", 
					name, get_user_userid(id), authid, 
					tempMapA, tempMapB, tempMapC, tempMapD)
		}
		case 8: displayVoteMapsMenu(id, ++g_menuPosition[id])
		case 9: displayVoteMapsMenu(id, --g_menuPosition[id])
		default:
		{
			g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * 7 + key
			displayVoteMapsMenu(id, g_menuPosition[id])
		}
	}

	return PLUGIN_HANDLED
}

public actionMapsMenu(id, key)
{
	switch (key)
	{
		case 8: displayMapsMenu(id, ++g_menuPosition[id])
		case 9: displayMapsMenu(id, --g_menuPosition[id])
		default:
		{
			new a = g_menuPosition[id] * 8 + key
			new _modName[10]

			get_modname(_modName, 9)
			if (!equal(_modName, "zp"))
			{
				message_begin(MSG_ALL, SVC_INTERMISSION)
				message_end()
			}
			
			new authid[32], name[32]
			
			get_user_authid(id, authid, 31)
			get_user_name(id, name, 31)

			new tempMap[32];
			ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
			
			//show_activity_key("ADMIN_CHANGEL_1", "ADMIN_CHANGEL_2", name, tempMap);
			
			switch(get_pcvar_num(g_activity))
			{
				case 1: CC_SendMessage(0, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "ADMIN_CHANGEL_1", tempMap)
				case 2: CC_SendMessage(0, "^1[^4VOTEMAP^1]^4 %L", LANG_PLAYER, "ADMIN_CHANGEL_2", name, tempMap)
			}

			log_amx("Cmd: ^"%s<%d><%s><>^"changelevel ^"%s^"", name, get_user_userid(id), authid, tempMap)
			set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1)
			/* displayMapsMenu(id, g_menuPosition[id]) */
		}
	}
	
	return PLUGIN_HANDLED
}

displayMapsMenu(id, pos)
{
	if (pos < 0)
		return

	new menuBody[512]
	new tempMap[32]
	new start = pos * 8
	new b = 0

	if (start >= g_mapNums)
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CHANGLE_MENU", pos + 1, (g_mapNums / 8 + ((g_mapNums % 8) ? 1 : 0)))
	new end = start + 8
	new keys = MENU_KEY_0

	if (end > g_mapNums)
		end = g_mapNums

	for (new a = start; a < end; ++a)
	{
		keys |= (1<<b)
		ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap));
		len += format(menuBody[len], 511-len, "%d. %s^n", ++b, tempMap)
	}

	if (end != g_mapNums)
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	new menuName[64]
	format(menuName, 63, "%L", "en", "CHANGLE_MENU")

	show_menu(id, keys, menuBody, -1, menuName)
}
stock bool:ValidMap(mapname[])
{
	if ( is_map_valid(mapname) )
	{
		return true;
	}
	// If the is_map_valid check failed, check the end of the string
	new len = strlen(mapname) - 4;
	
	// The mapname was too short to possibly house the .bsp extension
	if (len < 0)
	{
		return false;
	}
	if ( equali(mapname[len], ".bsp") )
	{
		// If the ending was .bsp, then cut it off.
		// the string is byref'ed, so this copies back to the loaded text.
		mapname[len] = '^0';
		
		// recheck
		if ( is_map_valid(mapname) )
		{
			return true;
		}
	}
	
	return false;
}

load_settings(filename[])
{
	new fp = fopen(filename, "r");
	
	if (!fp)
	{
		return 0;
	}
		

	new text[256];
	new tempMap[32];
	
	while (!feof(fp))
	{
		fgets(fp, text, charsmax(text));
		
		if (text[0] == ';')
		{
			continue;
		}
		if (parse(text, tempMap, charsmax(tempMap)) < 1)
		{
			continue;
		}
		if (!ValidMap(tempMap))
		{
			continue;
		}
		
		ArrayPushString(g_mapName, tempMap);
		g_mapNums++;
	}

	fclose(fp);

	return 1;
}

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

[INC] CromChat - a better ColorChat!

Мнение от User12 » 27 Яну 2018, 23:23

Да така стана зелено цялото съобщение , а дали има вариант да бъде така : ADMIN PLAYER : changelevel to zm_gbox6(цвета на отбора) , а не цялото зелено ADMIN PLAYER : changelevel to zm_gbox6
Каналът ми в YouTube : Георги Пламенов

Изображение

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

[INC] CromChat - a better ColorChat!

Мнение от OciXCrom » 27 Яну 2018, 23:45

За тази цел трябва да добавиш цветовете в lang файла. В .sma файла се ползва само %L, което замества цялото съобщение от lang файла.

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

[INC] CromChat - a better ColorChat!

Мнение от User12 » 28 Яну 2018, 02:36

Успях да го направя , прилагам снимка на ефекта .
Изображение
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

[INC] CromChat - a better ColorChat!

Мнение от User12 » 11 Фев 2018, 19:30

Въпрос за библиотеката , имали начин да се добави друг цвят примерно cyan или пък purple в чата както е на hud съобщенията , или е невъзможно ?
Каналът ми в YouTube : Георги Пламенов

Изображение

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

[INC] CromChat - a better ColorChat!

Мнение от OciXCrom » 11 Фев 2018, 20:36

Единствените възможни цветове за чата в CS 1.6 са тези в темата. Добавяне на други е невъзможно.

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

[INC] CromChat - a better ColorChat!

Мнение от LoShIaA » 19 Фев 2018, 15:53

Как да заменя тази библиотека за цветни съобщения с твоята?

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

/*	Formatright © 2009, ConnorMcLeod

	Info Rank is free software;
	you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Info Rank; if not, write to the
	Free Software Foundation, Inc., 59 Temple Place - Suite 330,
	Boston, MA 02111-1307, USA.
*/

/* Configuration */
#define ENABLED_BY_DEFAULT		1
#define NVAULT_MAX_DAYS_SAVE	30
/* DON'T CHANGE ANYTHING BELOW */

#include <amxmodx>
#include <csx>
#include <nvault>
#include <chatcolor>

#define VERSION "0.4.1"

#define MAX_PLAYERS 32
#define A_DAY_IN_SECONDS		86400 // 60 * 60 * 24

new g_iOldRank[MAX_PLAYERS+1]

new playerbitStatsEnabled
#define EnablePlayerStats(%0)		playerbitStatsEnabled |= 1<<(%0&31)
#define DisablePlayerStats(%0)		playerbitStatsEnabled &= ~(1<<(%0&31))
#define ArePlayerStatsEnabled(%0)	playerbitStatsEnabled & 1<<(%0&31)
#define TogglePlayerStats(%0)		playerbitStatsEnabled ^= 1<<(%0&31)

new playerbitDisplayStats
//#define DisplayStatsOnNextResetHUDEvent(%0)			playerbitDisplayStats |= 1<<(%0&31)
#define DontDisplayStatsOnNextResetHUDEvent(%0)		playerbitDisplayStats &= ~(1<<(%0&31))
#define ShouldDisplayStatsOnNextResetHUDEvent(%0)	playerbitDisplayStats & 1<<(%0&31)

new g_iEnabledByDefault = ENABLED_BY_DEFAULT
new g_iNvault
new g_pCvarInfoRank

public plugin_init()
{
	register_plugin("Info Rank", VERSION, "ConnorMcLeod")
	register_dictionary("inforank.txt")

	g_pCvarInfoRank = register_cvar("amx_inforank", "1")

	register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")
	register_event("ResetHUD", "Event_ResetHUD", "b")

	register_clcmd("say /inforank", "ClientCommand_InfoRank", 0, "- enable/disable info rank messages")
	register_clcmd("say_team /inforank", "ClientCommand_InfoRank", 0, "- enable/disable info rank messages")

	g_iNvault = nvault_open("inforank")
	nvault_prune(g_iNvault, 0, get_systime(-(A_DAY_IN_SECONDS * NVAULT_MAX_DAYS_SAVE)) )
}

public client_authorized(id)
{
	new szSteamId[32]
	get_user_authid(id, szSteamId, charsmax(szSteamId))
	if( szSteamId[0] == 'S' ) // skip bots
	{
		new mOsef[8]
		g_iOldRank[id] = get_user_stats(id, mOsef, mOsef)

		new szPlayerSettings[2]
		nvault_get(g_iNvault,szSteamId, szPlayerSettings, charsmax(szPlayerSettings))

		switch( szPlayerSettings[0] )
		{
			case '0':
			{
				DisablePlayerStats(id)
			}
			case '1':
			{
				EnablePlayerStats(id)
			}
			default:
			{
				if( g_iEnabledByDefault )
				{
					EnablePlayerStats(id)
				}
				else
				{
					DisablePlayerStats(id)
				}
			}
		}
	}
	else
	{
		DisablePlayerStats(id)
	}
}

public plugin_end()
{
	nvault_close(g_iNvault)
}

public Event_HLTV_New_Round()
{
	if( get_pcvar_num(g_pCvarInfoRank) )
	{
		playerbitDisplayStats = 0xFFFFFFFF // set everyone enabled
	}
}

public Event_ResetHUD(id)
{
	if( ShouldDisplayStatsOnNextResetHUDEvent(id) && ArePlayerStatsEnabled(id) )
	{
		DontDisplayStatsOnNextResetHUDEvent(id)
		set_task(0.3, "DisplayStats", id)
	}
}

public DisplayStats(id)
{
	if( is_user_connected(id) )
	{
		new mOsef[8], iRank, iOldRank
		iRank = get_user_stats(id, mOsef, mOsef)

		iOldRank = g_iOldRank[id]
		if( !iOldRank ) // First Spawn
		{
			iOldRank = iRank
		}
		g_iOldRank[id] = iRank

		new iDiff = iOldRank - iRank

		if(iDiff > 0)
		{
			client_print_color(id, id, "^4%L", id, "IR_GOOD", iDiff)	
		}
		else if(iDiff < 0)
		{
			client_print_color(id, Red, "^3%L", id, "IR_BAD", iDiff)
		}
		client_print_color(id, Grey, "^3%L", id, "IR_RANK", iRank, get_statsnum())
	}
}

public ClientCommand_InfoRank(id)
{
	if( get_pcvar_num(g_pCvarInfoRank) )
	{
		new szSteamId[32]
		get_user_authid(id, szSteamId, charsmax(szSteamId))
		TogglePlayerStats(id)
		if( ArePlayerStatsEnabled(id) )
		{
			nvault_set(g_iNvault, szSteamId, "1")
			client_print_color(id, id, "^4%L", id, "IR_ENABLE")
		}
		else
		{
			nvault_set(g_iNvault, szSteamId, "0")
			client_print_color(id, Red, "^3%L", id, "IR_DISABLE")
		}
	}
	return PLUGIN_CONTINUE
}
Това с какво да го заменя client_print_color? Пробвах няколко метода, но все ми дава грешка при компилация. Даже ще е добре самото оцветяване да става само през lang файла, защото гледам, че тук в кода има някви оцветявания.

Аватар
Fr0sTt
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 16 Фев 2018, 19:11

[INC] CromChat - a better ColorChat!

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

Вместо #include <chatcolor> , трябва да е #include <cromchat> и след това всички client_print_color{id, Grey, трябва да ги направиш CC_SendMessage(id, и да ги оцветиш по твой вкус - &x01, &x03, &x04, &x05, &x06, &x07

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

[INC] CromChat - a better ColorChat!

Мнение от LoShIaA » 19 Фев 2018, 17:35

Така съм го направил, но не мога да хвана параметрите. Така ми даваше грешка:

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

CC_SendMessage(id, id, "^4%L", id, "IR_GOOD", iDiff)	

CC_SendMessage(id, Red, "^3%L", id, "IR_BAD", iDiff)
		
CC_SendMessage(id, Grey, "^3%L", id, "IR_RANK", iRank, get_statsnum())

CC_SendMessage(id, id, "^4%L", id, "IR_ENABLE")

CC_SendMessage(id, Red, "^3%L", id, "IR_DISABLE")
премахнах втория id и Red/Grey параметър:

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

CC_SendMessage(id,  "%L", id, "IR_GOOD", iDiff)	

CC_SendMessage(id,  "%L", id, "IR_BAD", iDiff)
		
CC_SendMessage(id, "%L", id, "IR_RANK", iRank, get_statsnum())

CC_SendMessage(id,  "%L", id, "IR_ENABLE")

CC_SendMessage(id,  "%L", id, "IR_DISABLE")
Сега съобщенията си излизат, но нещо не мога да си ги сменям от ланг файла. Използвам !g, !t и т.н.
Като се използва библиотеката те трябва ли някъде да се описват в кода?

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

Обратно към “Полезни кодове/уроци”

Кой е на линия

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