Редактиране на rank_sys_hud

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 28 Фев 2018, 21:52

DoPe ;]] написа: 28 Фев 2018, 21:30 Един съвет, не ползвай този мод, или какъвто и да е друг мод на dias, защото всичките му модове са фрашкани с бъгове.
Защо да не ползвам този мод нямам и 1 грешка от него.
Изображение

Аватар
DoPe ;]]
Извън линия
Потребител
Потребител
Мнения: 402
Регистриран на: 27 Фев 2017, 22:10
Обратна връзка:

Редактиране на rank_sys_hud

Мнение от DoPe ;]] » 28 Фев 2018, 22:55

Този е редактиран, но аз помислих, че си взел мода от Dias, а неговия има над 1000 бъга, които ме мързи да обяснявам.
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 28 Фев 2018, 23:58

Ок щот се зачудих каза не върви а пък грешки и 1 нямам разбрахме се...имам нещо на предвит моля темата да не се заключва още.
Изображение

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 02 Апр 2018, 12:49

Така искам ако можете да направите префикса от тази ранк система да излиза също пред никнейма ползват се следните плъгини които са свързани.
rank_sys_hud.sma

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

#include <amxmodx>
#include <reapi>

native get_rank_prefix(id, prefix[], len);
native get_rank_prefix_2(id, prefix[], len);
native get_user_points(index);
native get_user_points_2(index);
native get_user_level(index);
native get_max_levels();

// Cvars
new cvar_hud_normal_red, cvar_hud_normal_green, cvar_hud_normal_blue,
cvar_hud_spec_red, cvar_hud_spec_green, cvar_hud_spec_blue

// Constants Change X,Y If you need (HUD & DHud)
const Float:HUD_SPECT_X = 0.01
const Float:HUD_SPECT_Y = 0.130

const Float:HUD_STATS_X = -1.0
const Float:HUD_STATS_Y = 0.01

#define TASK_SHOWHUD 100
#define ID_SHOWHUD (taskid - TASK_SHOWHUD)

new g_iMsgSync

public plugin_init()
{
	register_plugin("[Rank System] Hud Information", "0.1", "Nikolow")
	
	// Messages
	g_iMsgSync = CreateHudSyncObj()
	
	//Cvars
	cvar_hud_normal_red = register_cvar("rank_hud_info_normal_red", "60")
	cvar_hud_normal_green = register_cvar("rank_hud_info_normal_green", "60")
	cvar_hud_normal_blue = register_cvar("rank_hud_info_normal_blue", "255")
	
	cvar_hud_spec_red = register_cvar("rank_hud_info_spec_red", "100")
	cvar_hud_spec_green = register_cvar("rank_hud_info_spec_green", "100")
	cvar_hud_spec_blue = register_cvar("rank_hud_info_spec_blue", "100")
	
	
	// Aim Information
	register_event("StatusValue","show_status","be","1=2","2!0")
}

public client_putinserver(id)
{
	if(!is_user_bot(id))
	{
		set_task(1.0, "ShowHUD", id+TASK_SHOWHUD, _, _, "b")
	}
}

public client_disconnected(id)
{
	remove_task(id+TASK_SHOWHUD)
}

public ShowHUD(taskid)
{
	new iPlayer = ID_SHOWHUD
	
	if (!is_user_alive(iPlayer))
	{
		iPlayer = get_entvar(iPlayer, var_iuser2)
		
		if (!is_user_alive(iPlayer))
			return
	}
	
	static szCurrentRank[64];
	
	if(iPlayer != ID_SHOWHUD)
	{
		new szName[32]
		get_user_name(iPlayer, szName, charsmax(szName))
		
		get_rank_prefix(iPlayer, szCurrentRank, charsmax(szCurrentRank));

		set_hudmessage(get_pcvar_num(cvar_hud_spec_red), get_pcvar_num(cvar_hud_spec_green), get_pcvar_num(cvar_hud_spec_blue), HUD_SPECT_X, HUD_SPECT_Y, 0, 1.2, 1.1, 0.5, 0.6, -1)
		ShowSyncHudMsg(ID_SHOWHUD, g_iMsgSync, "Spectating: %s^nHealth: %i^nRank: %s^nPoints: %i / %i^nLevel: %i / %i", szName, get_user_health(iPlayer), szCurrentRank, get_user_points(iPlayer), get_user_points_2(iPlayer), get_user_level(iPlayer), get_max_levels())
	}
	else
	{
		get_rank_prefix(ID_SHOWHUD, szCurrentRank, charsmax(szCurrentRank));

		set_hudmessage(get_pcvar_num(cvar_hud_normal_red), get_pcvar_num(cvar_hud_normal_green), get_pcvar_num(cvar_hud_normal_blue), HUD_STATS_X, HUD_STATS_Y, 0, 1.2, 1.1, 0.5, 0.6, -1)
		ShowSyncHudMsg(ID_SHOWHUD, g_iMsgSync, "HP: %i | Rank: %s | Points: %i / %i^nLevel: %i / %i | Level Experience: %0.2f %", get_user_health(ID_SHOWHUD), szCurrentRank, get_user_points(ID_SHOWHUD), get_user_points_2(ID_SHOWHUD), get_user_level(ID_SHOWHUD), get_max_levels(), (float(get_user_points(ID_SHOWHUD)) / float(get_user_points_2(ID_SHOWHUD))) * 100.0)
	}
}

public show_status(id)
{
	new szName[32]
	new iReadID = read_data(2)
	get_user_name(iReadID, szName, 31)
	
	static szCurrentRank[64]
	get_rank_prefix(iReadID, szCurrentRank, charsmax(szCurrentRank));
	
	
	if ((get_member(iReadID, m_iTeam) == TEAM_CT) && (get_member(id, m_iTeam) == TEAM_CT)) // CT gleda CT
	{
       	set_hudmessage(0, 200, 0, -1.0, 0.60, 1, 0.01, 2.0, 0.01, 0.01, 4)
       	show_hudmessage(id, "Teammate: %s^nHealth: %d / Level: %d / Rank: %s", szName, get_user_health(iReadID), get_user_points(iReadID), szCurrentRank)
	}
	
 	if ((get_member(iReadID, m_iTeam) == TEAM_TERRORIST) && (get_member(id, m_iTeam) == TEAM_TERRORIST)) // TT gleda TT
	{
        set_hudmessage(0, 200, 0, -1.0, 0.60, 1, 0.01, 2.0, 0.01, 0.01, 4)
       	show_hudmessage(id, "Teammate: %s^nHealth: %d / Level: %d / Rank: %s", szName, get_user_health(iReadID), get_user_points(iReadID), szCurrentRank)
	}
	
   	if ((get_member(iReadID, m_iTeam) == TEAM_TERRORIST) && (get_member(id, m_iTeam) == TEAM_CT)) // CT gleda TT
	{
       	set_hudmessage(200, 200, 0, -1.0, 0.60, 1, 0.01, 2.0, 0.01, 0.01, 4)
       	show_hudmessage(id, "Enemy: %s", szName)
	}
	
   	if ((get_member(iReadID, m_iTeam) == TEAM_CT) && (get_member(id, m_iTeam) == TEAM_TERRORIST)) // TT gleda CT
	{
       	set_hudmessage(0, 100, 200, -1.0, 0.60, 1, 0.01, 2.0, 0.01, 0.01, 4)
       	show_hudmessage(id, "Enemy: %s", szName)
	}
}
rank_sys.sma

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

#include <amxmodx>
#include <hamsandwich>
#include <nvault>
#include <cromchat>

new PlayerPoints[33], PlayerLevel[33]
new g_vault, MaxPlayers

#define MAXLEVELS 24
new const LEVELS[MAXLEVELS] = 
{
	200,		//1
	500,		//2
	1000,		//3
	3000,		//4
	5000,		//5
	10000,	    //6
	20000,	    //7
	30000,	    //8
	50000,	    //9
	80000,	    //10
	100000,	    //11
	150000, 	//12
	200000, 	//13
	220000, 	//14
	230000, 	//15
	240000, 	//16
	250000, 	//17
	300000, 	//18
	320000, 	//19
	350000, 	//20
	400000, 	//21
	600000, 	//22
	800000, 	//23
	1000000 	//24
}

new const RANKS[][] =
{
	"Newbie",					//1
	"Player",					//2
	"Member",					//3
	"Semi-Pro",					//4
	"Pro",						//5
	"Runner",					//6
	"Redbull gives me wings",	//7
	"OptiMax",					//8
	"Like a Boss",				//9
	"Boss",						//10
	"THE BIG BOSS",				//11
	"Mafiq Boss",				//12
	"Jack the Ripper",			//13
	"Dirty Harry",				//14
	"Сrazy Max",				//15
	"Frankenstein",				//16
	"Freddy Krueger",			//17
	"The Flying Man",			//18
	"Dracula",					//19
	"I am great",				//20
	"I'm getting better",		//21
	"I'm the best now",			//22
	"He is no better than me",	//23
	"I Am Legend"				//24
}

public plugin_init()
{
	register_plugin("Rank System", "0.1", "Nicky")
	
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
	register_event("DeathMsg", "DeathMessage", "a")

	register_concmd( "say /info", "ShowInfo")
	register_concmd( "say /xp", "ShowInfo")
	register_concmd( "say /exp", "ShowInfo")
	register_concmd( "say /rank", "ShowInfo")
	register_concmd( "say /points", "ShowInfo")
	register_concmd( "say /pts", "ShowInfo")
	register_concmd( "say /pt", "ShowInfo")
	register_concmd( "say /point", "ShowInfo")
	register_concmd( "say /credit", "ShowInfo")
	register_concmd( "say /credits", "ShowInfo")
	
	g_vault = nvault_open("4VRankSys")
	
	MaxPlayers = get_maxplayers()
	
	CC_SetPrefix("&x04[&x03 Rank System&x04 ]&x01")
}

public plugin_end() nvault_close(g_vault)

public plugin_natives()
{
	register_native("get_user_points", "_fun_get_user_points", 1)
	register_native("get_user_points_2", "_func_get_user_points_2", 1)
	
	register_native("get_user_level", "_func_get_user_level", 1)
	register_native("get_max_levels", "_func_get_max_levels", 1)
	
	register_native("set_user_points", "_func_set_user_points", 1)
	register_native("remove_user_points", "_func_remove_user_points", 1)
	
	register_native("get_rank_prefix", "_get_rank_prefix")
	register_native("get_rank_prefix_2", "_get_rank_prefix_2")
}

public _fun_get_user_points(index) return PlayerPoints[index]
public _func_get_user_points_2(index) return LEVELS[PlayerLevel[index]]

public _func_get_user_level(index) return PlayerLevel[index]
public _func_get_max_levels() return MAXLEVELS;

public _func_set_user_points(index, amount) PlayerPoints[index] += amount
public _func_remove_user_points(index, amount) PlayerPoints[index] -= amount

public _get_rank_prefix(iPlugin, iParams) set_string(2, RANKS[PlayerLevel[get_param(1)]], get_param(3))
public _get_rank_prefix_2(iPlugin, iParams) set_string(2, RANKS[PlayerLevel[get_param(1)]+1], get_param(3))

public fwHamPlayerSpawnPost(iPlayer) 
{
	if (is_user_alive(iPlayer)) 
	{
		CheckLevel(iPlayer)
		ShowInfo(iPlayer)
		SaveData(iPlayer)
		
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE;
}

public CheckLevel(iPlayer)
{
	while(PlayerPoints[iPlayer] >= LEVELS[PlayerLevel[iPlayer]]) 
	{ 
		PlayerLevel[iPlayer]++
		ColorChat(iPlayer, "Pozdravleniq! Vie ste na nivo^x03 %i^x04 |^x01 Vashite tochki sa^x03 %i^x04 |^x01 Vashiqt Rank e^x03 %s", PlayerLevel[iPlayer], PlayerPoints[iPlayer], RANKS[PlayerLevel[iPlayer]])
	}
}

public DeathMessage()
{       
	new killer = read_data(1);
	new victim = read_data(2);
	new headshot = read_data(3);
	new Weapon[ 32 ];
	read_data( 4, Weapon, charsmax( Weapon ) );
	format( Weapon, charsmax( Weapon ), "weapon_%s", Weapon );
	
	if( contain( Weapon, "nade" ) >= 0 )
	Weapon = "weapon_hegrenade"
	
	
	new iWeapon = get_weaponid( Weapon );
	
	if(killer == victim)
		return PLUGIN_CONTINUE;

	if(!killer || killer > MaxPlayers)
		return PLUGIN_CONTINUE;

	if(iWeapon == CSW_HEGRENADE) PlayerPoints[killer] += 3
	if(iWeapon == CSW_KNIFE) PlayerPoints[killer] += 5
	if(headshot) PlayerPoints[killer] += 2
	else PlayerPoints[killer] += 1
	
	CheckLevel(killer)
	SaveData(killer)
	
	return PLUGIN_CONTINUE
}

public ShowInfo(id)
	ColorChat(id, "Vasheto nivo e:^x03 %i^x04 |^x01 Imate^x03 %i^x01 tochki^x04 |^x01 Rank:^x03 %s.", PlayerLevel[id],PlayerPoints[id], RANKS[PlayerLevel[id]])

public client_connect(id)
	LoadData(id)

public client_disconnected(id)
	SaveData(id)

public SaveData(id) 
{ 
	new szName[35]
	get_user_name(id,szName,34) 
	new vaultkey[64],vaultdata[256] 

	format(vaultkey,63,"%s-Mod",szName) 
	format(vaultdata,255,"%i#%i#",PlayerPoints[id],PlayerLevel[id]) 

	nvault_set(g_vault,vaultkey,vaultdata) 
    
	return PLUGIN_CONTINUE 
}  

public LoadData(id) 
{ 
	new szName[35]
	get_user_name(id,szName,34) 
	new vaultkey[64],vaultdata[256] 

	format(vaultkey,63,"%s-Mod",szName) 
	format(vaultdata,255,"%i#%i#",PlayerPoints[id],PlayerLevel[id]) 

	nvault_get(g_vault,vaultkey,vaultdata,255) 
	replace_all(vaultdata, 255, "#", " ") 
    
	new playerxp[32], playerlevel[32] 
	parse(vaultdata, playerxp, 31, playerlevel, 31) 
    
	PlayerPoints[id] = str_to_num(playerxp) 
	PlayerLevel[id] = str_to_num(playerlevel) 
    
	return PLUGIN_CONTINUE 
}
crx_chatmanager.sma

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

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

#define PLUGIN_VERSION "3.6.5"
#define DELAY_ON_REGISTER 1.0
#define DELAY_ON_CONNECT 1.0
#define DELAY_ON_CHANGE 0.1
#define PLACEHOLDER_LENGTH 64

/* 	You can comment placeholders you don't need from the lines below and that will completely deactivate them.
	You can also activate the additional ones if you want to use them.
	Feel free to experiment in making your custom ones as well. */
	
#define ARG_ADMIN_PREFIX 		"%admin_prefix%"
#define ARG_DEAD_PREFIX 		"%dead_prefix%"
#define ARG_TEAM 				"%team%"
#define ARG_NAME 				"%name%"
#define ARG_IP 					"%ip%"
#define ARG_STEAM 				"%steam%"
#define ARG_USERID 				"%userid%"
#define ARG_CHAT_COLOR 			"%chat_color%"
#define ARG_MESSAGE 			"%message%"
#define ARG_TIME 				"%time%"
#define ARG_RANK				"%rank%"
//#define ARG_HEALTH 			"%health%"
//#define ARG_ARMOR 			"%armor%"
//#define ARG_FRAGS 			"%frags%"
//#define ARG_DEATHS 			"%deaths%"
//#define ARG_CITY 				"%city%"
//#define ARG_COUNTRY 			"%country%"
//#define ARG_COUNTRY_CODE 		"%country_code%"
//#define ARG_CONTINENT 		"%continent%"
//#define ARG_CONTINENT_CODE 	"%continent_code%"

/*	The settings end here. Don't modify anything below this if you don't know what you're doing. */

#if defined ARG_CITY || defined ARG_COUNTRY || defined ARG_COUNTRY_CODE || defined ARG_CONTINENT || defined ARG_CONTINENT_CODE
	#include <geoip>
#endif

#if defined ARG_RANK
native get_rank_prefix(id, prefix[], len)
#endif

enum
{
	SECTION_NONE,
	SECTION_SETTINGS,
	SECTION_ADMIN_PREFIXES,
	SECTION_CHAT_COLORS,
	SECTION_NAME_IP_STEAM
}

enum _:Settings
{
	ADMIN_LISTEN_FLAGS[32],
	DEAD_PREFIX[32],
	ALIVE_PREFIX[32],
	TEAM_PREFIX_T[32],
	TEAM_PREFIX_CT[32],
	TEAM_PREFIX_SPEC[32],
	ERROR_TEXT[32],
	FORMAT_TIME[64],
	FORMAT_SAY[160],
	FORMAT_SAY_TEAM[160],
	bool:ALL_CHAT
}

enum _:PlayerData
{
	PDATA_NAME[32],
	PDATA_NAME_LOWER[32],
	PDATA_IP[16],
	PDATA_STEAM[35],
	PDATA_USERID[10],
	PDATA_PREFIX[32],
	PDATA_CHAT_COLOR[6],
	bool:PDATA_ADMIN_LISTEN
}

new g_eSettings[Settings],
	g_ePlayerData[33][PlayerData],
	Array:g_aAdminFlags,
	Array:g_aAdminPrefixes,
	Array:g_aChatColors,
	Array:g_aChatColorsFlags,
	Trie:g_tName,
	Trie:g_tIP,
	Trie:g_tSteam,
	Trie:g_tBlockFirst,
	g_iAdminPrefixes,
	g_iChatColors

public plugin_init()
{
	register_plugin("Chat Manager", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXChatManager", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	set_task(DELAY_ON_REGISTER, "RegisterCommands")
	g_aAdminFlags = ArrayCreate(32)
	g_aAdminPrefixes = ArrayCreate(32)
	g_aChatColors = ArrayCreate(6)
	g_aChatColorsFlags = ArrayCreate(32)
	g_tBlockFirst = TrieCreate()
	g_tName = TrieCreate()
	g_tIP = TrieCreate()
	g_tSteam = TrieCreate()
	ReadFile()
}

public plugin_end()
{
	ArrayDestroy(g_aAdminFlags)
	ArrayDestroy(g_aAdminPrefixes)
	ArrayDestroy(g_aChatColors)
	ArrayDestroy(g_aChatColorsFlags)
	TrieDestroy(g_tBlockFirst)
	TrieDestroy(g_tName)
	TrieDestroy(g_tIP)
	TrieDestroy(g_tSteam)
}

public RegisterCommands()
{
	register_clcmd("say", "Hook_Say")
	register_clcmd("say_team", "Hook_Say")
}

public client_putinserver(id)
{
	get_user_name(id, g_ePlayerData[id][PDATA_NAME], charsmax(g_ePlayerData[][PDATA_NAME]))
	copy(g_ePlayerData[id][PDATA_NAME_LOWER], charsmax(g_ePlayerData[][PDATA_NAME_LOWER]), g_ePlayerData[id][PDATA_NAME])
	strtolower(g_ePlayerData[id][PDATA_NAME_LOWER])
	get_user_ip(id, g_ePlayerData[id][PDATA_IP], charsmax(g_ePlayerData[][PDATA_IP]), 1)
	get_user_authid(id, g_ePlayerData[id][PDATA_STEAM], charsmax(g_ePlayerData[][PDATA_STEAM]))
	num_to_str(get_user_userid(id), g_ePlayerData[id][PDATA_USERID], charsmax(g_ePlayerData[][PDATA_USERID]))
	set_task(DELAY_ON_CONNECT, "UpdateData", id)
}
	
public client_infochanged(id)
{
	if(!is_user_connected(id))
		return
		
	static szNewName[32]
	get_user_info(id, "name", szNewName, charsmax(szNewName))
	
	if(!equal(szNewName, g_ePlayerData[id][PDATA_NAME]))
	{
		copy(g_ePlayerData[id][PDATA_NAME], charsmax(g_ePlayerData[][PDATA_NAME]), szNewName)
		copy(g_ePlayerData[id][PDATA_NAME_LOWER], charsmax(g_ePlayerData[][PDATA_NAME_LOWER]), szNewName)
		strtolower(g_ePlayerData[id][PDATA_NAME_LOWER])
		set_task(DELAY_ON_CHANGE, "UpdateData", id)
	}
}
	
public UpdateData(id)
{
	if(g_iChatColors)
	{
		g_ePlayerData[id][PDATA_CHAT_COLOR][0] = EOS
		
		for(new szFlags[32], i; i < g_iChatColors; i++)
		{
			ArrayGetString(g_aChatColorsFlags, i, szFlags, charsmax(szFlags))
			
			if(has_all_flags(id, szFlags))
			{
				ArrayGetString(g_aChatColors, i, g_ePlayerData[id][PDATA_CHAT_COLOR], charsmax(g_ePlayerData[][PDATA_CHAT_COLOR]))
				break
			}
		}
	}
	
	if(g_eSettings[ADMIN_LISTEN_FLAGS][0])
		g_ePlayerData[id][PDATA_ADMIN_LISTEN] = bool:has_all_flags(id, g_eSettings[ADMIN_LISTEN_FLAGS])
		
	g_ePlayerData[id][PDATA_PREFIX][0] = EOS
		
	if(TrieKeyExists(g_tSteam, g_ePlayerData[id][PDATA_STEAM]))
		TrieGetString(g_tSteam, g_ePlayerData[id][PDATA_STEAM], g_ePlayerData[id][PDATA_PREFIX], charsmax(g_ePlayerData[][PDATA_PREFIX]))
	else if(TrieKeyExists(g_tIP, g_ePlayerData[id][PDATA_IP]))
		TrieGetString(g_tIP, g_ePlayerData[id][PDATA_IP], g_ePlayerData[id][PDATA_PREFIX], charsmax(g_ePlayerData[][PDATA_PREFIX]))
	else if(TrieKeyExists(g_tName, g_ePlayerData[id][PDATA_NAME_LOWER]))
		TrieGetString(g_tName, g_ePlayerData[id][PDATA_NAME_LOWER], g_ePlayerData[id][PDATA_PREFIX], charsmax(g_ePlayerData[][PDATA_PREFIX]))
	else if(g_iAdminPrefixes)
	{
		for(new szFlags[32], i; i < g_iAdminPrefixes; i++)
		{
			ArrayGetString(g_aAdminFlags, i, szFlags, charsmax(szFlags))
			
			if(has_all_flags(id, szFlags))
			{
				ArrayGetString(g_aAdminPrefixes, i, g_ePlayerData[id][PDATA_PREFIX], charsmax(g_ePlayerData[][PDATA_PREFIX]))
				break
			}
		}
	}
}

public Hook_Say(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED
		
	new szArgs[192]
	read_args(szArgs, charsmax(szArgs)); remove_quotes(szArgs)
	CC_RemoveColors(szArgs, charsmax(szArgs))
	
	new szFirstChar[2]
	szFirstChar[0] = szArgs[0]
	
	if(!szArgs[0] || TrieKeyExists(g_tBlockFirst, szFirstChar))
		return PLUGIN_HANDLED
		
	new szCommand[5]
	read_argv(0, szCommand, charsmax(szCommand))
	
	new szMessage[192], iPlayers[32], iPnum, bool:bTeam = szCommand[3] == '_', iAlive = is_user_alive(id), CsTeams:iTeam = cs_get_user_team(id)
	format_chat_message(bTeam, id, iAlive, iTeam, szArgs, szMessage, charsmax(szMessage))
	get_players(iPlayers, iPnum, "ch")
	
	for(new i, iPlayer; i < iPnum; i++)
	{
		iPlayer = iPlayers[i]
		
		if(g_ePlayerData[iPlayer][PDATA_ADMIN_LISTEN] || (bTeam && iTeam == cs_get_user_team(iPlayer) && iAlive == is_user_alive(iPlayer)) || (!bTeam && (g_eSettings[ALL_CHAT] || iAlive == is_user_alive(iPlayer))))
			CC_SendMatched(iPlayer, id, szMessage)
	}
	
	return PLUGIN_HANDLED
}

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/ChatManager.ini", szConfigsName)
	
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[192], szValue[160], szKey[32], szInfo[32], szPrefix[32], iSection = SECTION_NONE, iSize
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					iSize = strlen(szData)
					
					if(szData[iSize - 1] == ']')
					{
						switch(szData[1])
						{
							case 'S', 's': iSection = SECTION_SETTINGS
							case 'A', 'a': iSection = SECTION_ADMIN_PREFIXES
							case 'C', 'c': iSection = SECTION_CHAT_COLORS
							case 'N', 'n': iSection = SECTION_NAME_IP_STEAM
							default: iSection = SECTION_NONE
						}
					}
					else continue
				}
				default:
				{
					if(iSection == SECTION_NONE)
						continue
						
					switch(iSection)
					{
						case SECTION_SETTINGS:
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
							trim(szKey); trim(szValue)
									
							if(!szValue[0])
								continue
								
							if(equal(szKey, "ADMIN_LISTEN_FLAGS"))
								copy(g_eSettings[ADMIN_LISTEN_FLAGS], charsmax(g_eSettings[ADMIN_LISTEN_FLAGS]), szValue)
							else if(equal(szKey, "BLOCK_FIRST_SYMBOLS"))
							{
								while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
								{
									trim(szKey); trim(szValue)
									TrieSetCell(g_tBlockFirst, szKey, 1)
								}
							}
							else if(equal(szKey, "DEAD_PREFIX"))
								copy(g_eSettings[DEAD_PREFIX], charsmax(g_eSettings[DEAD_PREFIX]), szValue)
							else if(equal(szKey, "ALIVE_PREFIX"))
								copy(g_eSettings[ALIVE_PREFIX], charsmax(g_eSettings[ALIVE_PREFIX]), szValue)
							else if(equal(szKey, "TEAM_PREFIX_T"))
								copy(g_eSettings[TEAM_PREFIX_T], charsmax(g_eSettings[TEAM_PREFIX_T]), szValue)
							else if(equal(szKey, "TEAM_PREFIX_CT"))
								copy(g_eSettings[TEAM_PREFIX_CT], charsmax(g_eSettings[TEAM_PREFIX_CT]), szValue)
							else if(equal(szKey, "TEAM_PREFIX_SPEC"))
								copy(g_eSettings[TEAM_PREFIX_SPEC], charsmax(g_eSettings[TEAM_PREFIX_SPEC]), szValue)
							else if(equal(szKey, "ERROR_TEXT"))
								copy(g_eSettings[ERROR_TEXT], charsmax(g_eSettings[ERROR_TEXT]), szValue)
							else if(equal(szKey, "FORMAT_TIME"))
								copy(g_eSettings[FORMAT_TIME], charsmax(g_eSettings[FORMAT_TIME]), szValue)
							else if(equal(szKey, "FORMAT_SAY"))
								copy(g_eSettings[FORMAT_SAY], charsmax(g_eSettings[FORMAT_SAY]), szValue)
							else if(equal(szKey, "FORMAT_SAY_TEAM"))
								copy(g_eSettings[FORMAT_SAY_TEAM], charsmax(g_eSettings[FORMAT_SAY_TEAM]), szValue)
							else if(equal(szKey, "ALL_CHAT"))
								g_eSettings[ALL_CHAT] = _:clamp(str_to_num(szValue), false, true)
						}
						case SECTION_ADMIN_PREFIXES:
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
							trim(szKey); trim(szValue)
									
							if(!szValue[0])
								continue
								
							ArrayPushString(g_aAdminFlags, szKey)
							ArrayPushString(g_aAdminPrefixes, szValue)
							g_iAdminPrefixes++
						}
						case SECTION_CHAT_COLORS:
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
							trim(szKey); trim(szValue)
									
							if(!szValue[0])
								continue
								
							ArrayPushString(g_aChatColorsFlags, szKey)
							ArrayPushString(g_aChatColors, szValue)
							g_iChatColors++
						}
						case SECTION_NAME_IP_STEAM:
						{
							parse(szData, szKey, charsmax(szKey), szInfo, charsmax(szInfo), szPrefix, charsmax(szPrefix))
							{
								switch(szKey[0])
								{
									case 'N', 'n': { strtolower(szInfo); TrieSetString(g_tName, szInfo, szPrefix); }
									case 'I', 'i': TrieSetString(g_tIP, szInfo, szPrefix)
									case 'S', 's': TrieSetString(g_tSteam, szInfo, szPrefix)
								}
							}
						}
					}
				}
			}
		}
		
		fclose(iFilePointer)
	}
}

format_chat_message(const bool:bTeam, const id, const iAlive, const CsTeams:iTeam, const szArgs[], szMessage[], const iLen)
{
	static szPlaceHolder[PLACEHOLDER_LENGTH]
	copy(szMessage, iLen, g_eSettings[bTeam ? FORMAT_SAY_TEAM : FORMAT_SAY])
	
	#if defined ARG_ADMIN_PREFIX
	replace_all(szMessage, iLen, ARG_ADMIN_PREFIX, g_ePlayerData[id][PDATA_PREFIX])
	#endif
	
	#if defined ARG_DEAD_PREFIX
	replace_all(szMessage, iLen, ARG_DEAD_PREFIX, g_eSettings[iAlive ? ALIVE_PREFIX : DEAD_PREFIX])
	#endif
	
	#if defined ARG_TEAM
	replace_all(szMessage, iLen, ARG_TEAM, g_eSettings[iTeam == CS_TEAM_CT ? TEAM_PREFIX_CT : iTeam == CS_TEAM_T ? TEAM_PREFIX_T : TEAM_PREFIX_SPEC])
	#endif
	
	#if defined ARG_NAME
	replace_all(szMessage, iLen, ARG_NAME, g_ePlayerData[id][PDATA_NAME])
	#endif
	
	#if defined ARG_IP
	replace_all(szMessage, iLen, ARG_IP, g_ePlayerData[id][PDATA_IP])
	#endif
	
	#if defined ARG_STEAM
	replace_all(szMessage, iLen, ARG_STEAM, g_ePlayerData[id][PDATA_STEAM])
	#endif
	
	#if defined ARG_USERID
	replace_all(szMessage, iLen, ARG_USERID, g_ePlayerData[id][PDATA_USERID])
	#endif
	
	#if defined ARG_CHAT_COLOR
	replace_all(szMessage, iLen, ARG_CHAT_COLOR, g_ePlayerData[id][PDATA_CHAT_COLOR])
	#endif
	
	#if defined ARG_MESSAGE
	replace_all(szMessage, iLen, ARG_MESSAGE, szArgs)	
	#endif
	
	#if defined ARG_TIME
	if(has_argument(szMessage, ARG_TIME))
	{
		get_time(g_eSettings[FORMAT_TIME], szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_TIME, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_RANK
	if(has_argument(szMessage, ARG_RANK))
	{
		get_rank_prefix(id, szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_RANK, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_HEALTH
	if(has_argument(szMessage, ARG_HEALTH))
	{
		num_to_str(iAlive ? get_user_health(id) : 0, szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_HEALTH, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_ARMOR
	if(has_argument(szMessage, ARG_ARMOR))
	{
		num_to_str(iAlive ? get_user_armor(id) : 0, szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_ARMOR, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_FRAGS
	if(has_argument(szMessage, ARG_FRAGS))
	{
		num_to_str(get_user_frags(id), szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_FRAGS, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_DEATHS
	if(has_argument(szMessage, ARG_DEATHS))
	{
		num_to_str(cs_get_user_deaths(id), szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_DEATHS, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_CITY
	if(has_argument(szMessage, ARG_CITY))
	{
		geoip_city(g_ePlayerData[id][PDATA_IP], szPlaceHolder, charsmax(szPlaceHolder))
		check_validity(szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_CITY, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_COUNTRY
	if(has_argument(szMessage, ARG_COUNTRY))
	{
		#if defined geoip_country_ex
		geoip_country_ex(g_ePlayerData[id][PDATA_IP], szPlaceHolder, charsmax(szPlaceHolder))
		#else
		geoip_country(g_ePlayerData[id][PDATA_IP], szPlaceHolder, charsmax(szPlaceHolder))
		#endif
		
		check_validity(szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_COUNTRY, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_COUNTRY_CODE
	if(has_argument(szMessage, ARG_COUNTRY_CODE))
	{
		new szCountryCode[3]
		
		#if defined geoip_code2_ex
		geoip_code2_ex(g_ePlayerData[id][PDATA_IP], szCountryCode)
		#else
		geoip_code2(g_ePlayerData[id][PDATA_IP], szCountryCode)
		#endif
		
		check_validity(szCountryCode, charsmax(szCountryCode))
		replace_all(szMessage, iLen, ARG_COUNTRY_CODE, szCountryCode)
	}
	#endif
	
	#if defined ARG_CONTINENT
	if(has_argument(szMessage, ARG_CONTINENT))
	{
		geoip_continent_name(g_ePlayerData[id][PDATA_IP], szPlaceHolder, charsmax(szPlaceHolder))
		check_validity(szPlaceHolder, charsmax(szPlaceHolder))
		replace_all(szMessage, iLen, ARG_CONTINENT, szPlaceHolder)
	}
	#endif
	
	#if defined ARG_CONTINENT_CODE
	if(has_argument(szMessage, ARG_CONTINENT_CODE))
	{
		new szContinentCode[3]
		geoip_continent_code(g_ePlayerData[id][PDATA_IP], szContinentCode)
		check_validity(szContinentCode, charsmax(szContinentCode))
		replace_all(szMessage, iLen, ARG_CONTINENT_CODE, szContinentCode)
	}
	#endif
	
	replace_all(szMessage, iLen, "  ", "")
	trim(szMessage)
}

stock bool:has_argument(const szMessage[], const szArgument[])
	return contain(szMessage, szArgument) != -1

stock check_validity(szText[], const iLen)
{
	if(!szText[0])
		copy(szText, iLen, g_eSettings[ERROR_TEXT])
}

public plugin_natives()
{
	register_library("chatmanager")
	register_native("cm_get_admin_listen_flags", "_cm_get_admin_listen_flags")
	register_native("cm_get_admin_prefix", "_cm_get_admin_prefix")
	register_native("cm_get_chat_color", "_cm_get_chat_color")
	register_native("cm_get_chat_color_by_num", "_cm_get_chat_color_by_num")
	register_native("cm_get_prefix_by_num", "_cm_get_prefix_by_num")
	register_native("cm_has_user_admin_listen", "_cm_has_user_admin_listen")
	register_native("cm_total_chat_colors", "_cm_total_chat_colors")
	register_native("cm_total_prefixes", "_cm_total_chat_colors")
	register_native("cm_update_player_data", "_cm_update_player_data")
	register_native("cm_set_user_prefix", "_cm_set_user_prefix")
}

public _cm_get_admin_prefix(iPlugin, iParams)
	set_string(2, g_ePlayerData[get_param(1)][PDATA_PREFIX], get_param(3))
	
public _cm_get_chat_color(iPlugin, iParams)
	set_string(2, g_ePlayerData[get_param(1)][PDATA_CHAT_COLOR], get_param(3))
	
public _cm_total_prefixes(iPlugin, iParams)
	return g_iAdminPrefixes

public _cm_total_chat_colors(iPlugin, iParams)
	return g_iChatColors
	
public _cm_get_prefix_by_num(iPlugin, iParams)
{
	new iNum = get_param(1)
	
	if(iNum < 0 || iNum >= g_iAdminPrefixes)
		return 0
	
	new szPrefix[32]
	ArrayGetString(g_aAdminPrefixes, iNum, szPrefix, charsmax(szPrefix))
	set_string(2, szPrefix, get_param(3))
	return 1
}

public _cm_get_chat_color_by_num(iPlugin, iParams)
{
	new iNum = get_param(1)
	
	if(iNum < 0 || iNum >= g_iChatColors)
		return 0
	
	new szColor[32]
	ArrayGetString(g_aChatColors, iNum, szColor, charsmax(szColor))
	set_string(2, szColor, get_param(3))
	return 1
}

public _cm_get_admin_listen_flags(iPlugin, iParams)
	set_string(1, g_eSettings[ADMIN_LISTEN_FLAGS], get_param(2))
	
public bool:_cm_has_user_admin_listen(iPlugin, iParams)
	return g_ePlayerData[get_param(1)][PDATA_ADMIN_LISTEN]
	
public _cm_update_player_data(iPlugin, iParams)
	UpdateData(get_param(1))

public _cm_set_user_prefix(iPlugin, iParams)
	get_string(2, g_ePlayerData[get_param(1)][PDATA_PREFIX], charsmax(g_ePlayerData[][PDATA_PREFIX]))
Изображение

Аватар
DoPe ;]]
Извън линия
Потребител
Потребител
Мнения: 402
Регистриран на: 27 Фев 2017, 22:10
Обратна връзка:

Редактиране на rank_sys_hud

Мнение от DoPe ;]] » 02 Апр 2018, 12:59

До колкото разбрах искаш да е първо името, после префикса и накрая ранга, ако е така ето, само трябва да си го настроиш там префиксите и тем подобни...
Прикачени файлове
ChatManager.ini
Miza (Server Owner) (Newbie) : Zdr all (така е направено сега, защото аз така те разбрах)
(2.4 KiB) Свалено 112 пъти
ChatManager.ini
Miza (Server Owner) (Newbie) : Zdr all (така е направено сега, защото аз така те разбрах)
(2.4 KiB) Свалено 112 пъти
Последно промяна от DoPe ;]] на 02 Апр 2018, 13:06, променено общо 1 път.
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 02 Апр 2018, 13:06

1-во сега излиза префикса за админ/фип и т.н 2-ро искам да ми излиза ранка от системата. 3-то да излиза ника на играча така искам да са подредени.
Изображение

Аватар
DoPe ;]]
Извън линия
Потребител
Потребител
Мнения: 402
Регистриран на: 27 Фев 2017, 22:10
Обратна връзка:

Редактиране на rank_sys_hud

Мнение от DoPe ;]] » 02 Апр 2018, 13:07

Пробвай така.
Прикачени файлове
ChatManager.ini
(2.28 KiB) Свалено 112 пъти
ChatManager.ini
(2.28 KiB) Свалено 112 пъти
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 02 Апр 2018, 13:32

Така подредени да но не изкарва ранка пише само ранк а не кой е.

Добавено преди 19 минути 43 секунди:
Не изкарва кой ранк си сигорен ли си че само от ChatManager.ini се настройва чакам и някой друг да помогне.
Изображение

Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1319
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 245 пъти
Получена благодарност: 43 пъти

Редактиране на rank_sys_hud

Мнение от cgozzie » 02 Апр 2018, 20:39

Плъгините гледам че са на OciXCrom явно само той може да го направи се пак са негови.
Изображение

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

Редактиране на rank_sys_hud

Мнение от OciXCrom » 02 Апр 2018, 21:19

Само един от плъгините е мой. Не виждам за какво точно пускаш заявка, като сам можеш да си настроиш това. Конфигурационният файл е направен точно за тази цел, а не за украса. В редовете FORMAT_SAY и FORMAT_SAY_TEAM си избираш как да изглежда съобщението. Близко до акъла е, че на мястото на %admin_prefix% ще се покаже админ префикса, а на мястото на %rank% префикса от ранк системата. Предполагам можеш да ги подредиш сам... Излишно е да обяснявам какво означават другите, както и цветовете.

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

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

Кой е на линия

Потребители разглеждащи този форум: illusion, Semrush [Bot] и 33 госта