rank system + добавяне на префих

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
stop cry!
Извън линия
Потребител
Потребител
Мнения: 382
Регистриран на: 07 Яну 2017, 02:18
Се отблагодари: 2 пъти
Получена благодарност: 1 път

rank system + добавяне на префих

Мнение от stop cry! » 07 Яну 2017, 02:43

Здравейте имам ранк система която искам да сложа админ префих

име: цвета на отбора префих:зелен чат : бял

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

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <fvault>

#define MaxLevels 12
#define IsPlayer(%1) (1 <= %1 <=  g_iMaxPlayers)

#define CHAT_ACCESS ADMIN_ALL

new gMaxPlayers, gMsgSayText, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg

new const g_vault_name[] = "levelsz";
//new const rprefix[]= "Ranks";
new iCvarPrefix;

new const Levels[MaxLevels+1] =
{
25,
50,
75,
100,
130,
170,
200,
250,
300,
400,
500,
600,
800
}

new const Prefix[MaxLevels][] =
{
"Newbie",
"Dobur",
"Killer",
"Ultra killer",
"Mega killer",
"Terminator",
"Lieutenant",
"Major",
"Brigadier",
"Major General",
"General",
"MASTER"
}

public plugin_init()
{
register_plugin("RankSystem", "1.0a", "alt.nick")

register_event("DeathMsg","client_death","a")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")

register_clcmd("say /rank", "cmdRank")
register_clcmd("say_team /rank", "cmdRank")


ranks_hud = register_cvar("ranks_hud", "1")     // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
knife_xp = register_cvar("knife_xp", "5")     // Колко ХР да дава за убийство с нож.
he_xp = register_cvar("he_xp", "8")        // Колко ХР да дава за убийство с Granata (HE).
hs_xp = register_cvar("hs_xp", "15")        // Колко ХР да дава за убийство с Headshot.
kill_xp = register_cvar("kill_xp", "10")        // Колко ХР да дава за нормално убийство.   
kill_msg = register_cvar("kill_msg", "1")    // Дали да показва кой сте убили и колко ХР сте получили. Включено 1/0 Изключено

register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | @ct | @t | @all> <xp>")

iCvarPrefix = register_cvar("amx_rank_prefix", "Ranks");

gMaxPlayers = get_maxplayers()
gMsgSayText = get_user_msgid("SayText")

syncObj     = CreateHudSyncObj()

fvault_load(g_vault_name)
}

public ShowHud(id)
{
set_hudmessage(185, 239, 251, -1.0, 0.01, 0, 6.0, 1.0, 0.0, 0.0, -1)
ShowSyncHudMsg(id, syncObj,"Rank: %s | XP: %i | Level: %i", Prefix[Level[id]], eXP[id], Level[id])
}

public client_putinserver(id)
{
if(get_pcvar_num(ranks_hud) == 1)
set_task(1.0, "ShowHud", id, _, _, "b")

if(Level[id] < MaxLevels-1)
	while(eXP[id] >= Levels[Level[id]])
		Level[id] += 1
}

public client_death(killer, victim, weapon, hitgroup, TK)
{       
	if(killer == victim)
		return PLUGIN_HANDLED
	
	new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
	
	new rprefix[64];
	get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
	
	switch(weapon)
	{
		case CSW_HEGRENADE:
		{
			eXP[killer] += get_pcvar_num(he_xp)
			CheckLevel(killer)
			SaveData(killer)
			if(get_pcvar_num(kill_msg) == 1)
				ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1.", rprefix,  get_pcvar_num(he_xp))
			
			return PLUGIN_CONTINUE
		}
		case CSW_KNIFE:
		{
			eXP[killer] += get_pcvar_num(knife_xp)
			CheckLevel(killer)
			SaveData(killer)
			if(get_pcvar_num(kill_msg) == 1)
				ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1.",rprefix, get_pcvar_num(knife_xp))
			
			return PLUGIN_CONTINUE
		}
	}
	
	if(headshot)
	{
		eXP[killer] += get_pcvar_num(hs_xp)
		CheckLevel(killer)
		SaveData(killer)
		if(get_pcvar_num(kill_msg) == 1)
			ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HS^1.",rprefix, get_pcvar_num(hs_xp))
		
		return PLUGIN_CONTINUE
	}
	
	else
	{
		eXP[killer] += get_pcvar_num(kill_xp)
		CheckLevel(killer)
		SaveData(killer)
		if(get_pcvar_num(kill_msg) == 1)
			ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1.", rprefix, get_pcvar_num(kill_xp))
		
		return PLUGIN_CONTINUE
	}
	
	CheckLevel(killer)
	SaveData(killer)
	return PLUGIN_CONTINUE
}

public CheckLevel(id)
{
	if(Level[id] < MaxLevels-1)
		while(eXP[id] >= Levels[Level[id]])
		Level[id] += 1
}

public client_connect(id)
{
	LoadData(id)
}


public client_disconnect(id)
{
	SaveData(id)
	eXP[id] = 0
	Level[id] = 0
	remove_task(id)
}



public cmdRank(id)
{
	new rprefix[64];
	get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
	if(is_user_connected(id))
		ColorChat(id, NORMAL, "^4[%s]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", rprefix, Prefix[Level[id]], eXP[id], Level[id])
}

public CmdAddXP (iPlayer, level, cid)
{
	if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
	
	new arg [32]
	read_argv (1, arg, 31)
	
	new AddXP [32]
	read_argv (2, AddXP, charsmax (AddXP))
	
	new XPtoGive = str_to_num (AddXP)
	
	new AdminName [32]
	new TargetName [32]
	get_user_name (iPlayer, AdminName, charsmax (AdminName))
	
	new rprefix[64];
	get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
	
	if(arg[0]=='@')
	{
		if(equali(arg[1],"All") || equali(arg[1],"ALL"))
		{
			new players[32], totalplayers, All
			get_players(players, totalplayers)
			
			for (new i = 0; i < totalplayers; i++)
			{
				All = players[i]
				
				eXP[All] += XPtoGive
			}
			
			CheckLevel(All)
			ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na vsichki ^4igrachi^1!", rprefix, AdminName, XPtoGive)
		}
		else if(equali(arg[1],"T") || equali(arg[1],"t"))
		{
			new players[32], totalplayers, T
			get_players(players, totalplayers)
			
			
			for (new i = 0; i < totalplayers; i++)
			{
				if (get_user_team(players[i]) == 1)
				{
					T = players[i]
					
					eXP[T] += XPtoGive
				}
			}
			
			CheckLevel(T)
			ColorChat(0, RED, "^4[%s] ^1%s dade^4 %i^1 XP na vsichki ^3 Teroristi^1.", rprefix, AdminName, XPtoGive)
		}
		else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
		{
			new players[32], totalplayers, CT
			get_players(players, totalplayers)
			
			for(new i = 0; i < totalplayers; i++)
			{
				if(get_user_team(players[i]) == 2)
				{
					CT = players[i]
					
					eXP[CT] += XPtoGive
				}
			}
			
			CheckLevel(CT)
			ColorChat(0, BLUE, "^4[%s]^1 %s^1 dade^4 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", rprefix, AdminName, XPtoGive)
		}
	}
	else
	{
		new iTarget = cmd_target(iPlayer, arg, 3)
		get_user_name (iTarget, TargetName, charsmax (TargetName))
		
		if(iTarget)
		{
			eXP[iTarget] += XPtoGive
			
			CheckLevel(iTarget)
			ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na^4 %s^1.", rprefix, AdminName, XPtoGive, TargetName)
		}
	}
	return PLUGIN_HANDLED
}

bool:IsValidMessage( szMessage[ ], iLen )
{
read_args( szMessage, iLen )
remove_quotes( szMessage )

new iPos, cChar
while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
{
	if( cChar != ' ' && cChar != '%' )
	{
		return true
	}
}

return false
}

public hook_say(id)
{
	if(!is_user_connected(id))
	return PLUGIN_HANDLED_MAIN
	
	new szArgs[192]
	
	if( !IsValidMessage(szArgs, charsmax(szArgs)))
		return PLUGIN_HANDLED_MAIN
	
	if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN
	
	
	new szName[32]
	get_user_name(id, szName, sizeof szName-1)
	
	new alive = is_user_alive(id)
	
	if(contain(szArgs,"@") >= 0)
		return  PLUGIN_HANDLED_MAIN
	
	if(get_user_flags(id) & CHAT_ACCESS)
		format(szArgs, 191,"^x04[%s] ^x03%s^x01:^x04  %s", Prefix[Level[id]], szName, szArgs)
	else
		format(szArgs, 191, "^x04[%s] ^x03%s^x01:  %s",  Prefix[Level[id]], szName, szArgs)
	
	for(new i = 1; i <= gMaxPlayers; i++)
	{
		if(!is_user_connected(i))
			continue
		
		if(alive && is_user_alive(i))
		{
			message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
			write_byte(id)
			write_string(szArgs)
			message_end()
		}
		else if(!alive && !is_user_alive(i))
		{
			new format[192]
			formatex(format,191,"^1*^4DEAD^1* %s",szArgs)
			message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
			write_byte(id)
			write_string(format)
			message_end()
		}
	}
	
	return PLUGIN_HANDLED_MAIN
}

public hook_teamsay(id) {
	if(!is_user_connected(id)) {
		return PLUGIN_HANDLED_MAIN
	}
	
	new szArgs[192]
	
	if(!IsValidMessage(szArgs, charsmax(szArgs))) {
		return PLUGIN_HANDLED_MAIN
	}
	if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN
	new alive = is_user_alive(id)
	new CsTeams:team = cs_get_user_team(id)
	
	new iPlayers[32], iNum
	get_players(iPlayers, iNum)
	
	new szName[32]
	get_user_name(id, szName, sizeof szName-1)
	

	new const szPrefixes[2][CsTeams][] = {
		{
			"^4(^3Spectator^4)",
			"^4(^3Terrorist^4)",
			"^4(^3Counter-Terrorist^4)",
			"^4(^3Spectator^4)"
		},
		{
			"^4(^3Spectator^4)",
			"^4(^3Terrorist^4)",
			"^4(^3Counter-Terrorist^4)",
			"^4(^3Spectator^4)"
		}
	}
	
	if(contain(szArgs,"@") >= 0)
	return  PLUGIN_HANDLED_MAIN
	
	if(get_user_flags(id) & CHAT_ACCESS)
		format(szArgs, 191,"^1%s ^x04[%s] ^x03%s^x01:^x04  %s",szPrefixes[alive][team], Prefix[Level[id]], szName, szArgs)
	else
		format(szArgs, 191, "^1%s ^x04[%s] ^x03%s^x01:  %s",szPrefixes[alive][team],  Prefix[Level[id]], szName, szArgs)
	
	for(new i = 1; i <= gMaxPlayers; i++)
	{
		if(!is_user_connected(i))
			continue
		
		if(alive && is_user_alive(i))
		{
			message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
			write_byte(id)
			write_string(szArgs)
			message_end()
		}
		else if(!alive && !is_user_alive(i))
		{
			new format[192]
			formatex(format,191,"^1*^4DEAD^1* %s",szArgs)
			message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
			write_byte(id)
			write_string(format)
			message_end()
		}
	}
	
	return PLUGIN_HANDLED_MAIN
}
		
public SaveData(id)
{
	new name[32];
	get_user_name(id,name,31);
	new vaultkey[64],vaultdata[256];
	
	format(vaultkey,63,"%s", name);
	format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
	fvault_set_data(g_vault_name,vaultkey,vaultdata);
	
	return PLUGIN_CONTINUE;
}
public LoadData(id)
{
	new name[32];
	get_user_name(id,name,31);
	new vaultkey[64],vaultdata[256];
	
	format(vaultkey,63,"%s",name);
	format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
	fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
	
	replace_all(vaultdata, 255, "#", " ");
	new playerxp[32], playerlevel[32];
	parse(vaultdata, playerxp, 31, playerlevel, 31);
	
	eXP[id] = str_to_num(playerxp);
	Level[id] = str_to_num(playerlevel);
	
	return PLUGIN_CONTINUE;
}
[HEAD ADMIN]-m
[Admin] - n

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

Re: rank system + добавяне на префих

Мнение от OciXCrom » 07 Яну 2017, 02:45

Няма как да се комбинира бял цвят и цвят според отбора.

Аватар
stop cry!
Извън линия
Потребител
Потребител
Мнения: 382
Регистриран на: 07 Яну 2017, 02:18
Се отблагодари: 2 пъти
Получена благодарност: 1 път

Re: rank system + добавяне на префих

Мнение от stop cry! » 07 Яну 2017, 02:49

Добре зелен и бял цвят.Благодаря

Аватар
stop cry!
Извън линия
Потребител
Потребител
Мнения: 382
Регистриран на: 07 Яну 2017, 02:18
Се отблагодари: 2 пъти
Получена благодарност: 1 път

Re: rank system + добавяне на префих

Мнение от stop cry! » 07 Яну 2017, 15:28

Добре оправих това но искам да попитам как да ресна цялата система на всички на 0 score или ако може да ви дам код да регистрирате цвар с команда.

Аватар
stop cry!
Извън линия
Потребител
Потребител
Мнения: 382
Регистриран на: 07 Яну 2017, 02:18
Се отблагодари: 2 пъти
Получена благодарност: 1 път

Re: rank system + добавяне на префих

Мнение от stop cry! » 07 Яну 2017, 17:16

лок

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

Re: rank system + добавяне на префих

Мнение от OciXCrom » 07 Яну 2017, 17:17

Спираш сървъра и триеш файла configs/file_vault/levelsz.txt. Друг вариант е да се добави команда за рестартиране.

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

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

Кой е на линия

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