XP + Level + Rank System v2.2

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

User avatar
WHOAMI?
eXtream Mod
eXtream Mod
Posts: 999
Joined: 17 Dec 2013, 19:51
Detinator Steam: Da
Reputatie: eXtream Mod
Fost Membru Club eXtreamCS (o luna)
Location: US
Has thanked: 30 times
Been thanked: 20 times

15 Feb 2019, 17:18

Mutat in categoria corespunzatoare.
RoyalServer
User avatar
xGm # empty
Membru, skill 0
Membru, skill 0
Posts: 18
Joined: 06 Apr 2020, 19:05
Detinator Steam: Nu
CS Status: eXtreme Gaming
Detinator server CS: cs.xgm.ro
Fond eXtream: 0
Has thanked: 2 times

01 May 2020, 00:23

Salut! Se poate rezolva plobema acestui plugin, pana la urma?
Image
User avatar
licensse
Membru, skill 0
Membru, skill 0
Posts: 23
Joined: 06 Aug 2018, 21:37
Detinator Steam: Da
CS Status: Ofer sau primesc ajutor!
Detinator server CS: 137.74.97.72:27015
Fond eXtream: 0
Location: R.Moldova
Contact:

01 May 2020, 09:20

Salut, am modificat primul plugin care l-ai dat in cat sa nu mai scrie in chat si nu vei mai avea problema cu scrisul de 2 ori in chat, dar tot odata playerii nu vor mai avea in fata la nume [Level] si faze de astea.

Code: Select all

#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

new const VERSION[] =  "1.1"

new SzMaxPlayers, SzSayText;
new playerPrefix,rankLevelBonus,rankSaveType;

new const db_save[] = "cs_rank_system"

new level[33], xp[33], rank[33], g_status_sync

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

new const xp_num[maxlevels+1] = 
{ 
	15, 70, 150, 250, 350, 450, 550, 650, 750, 850, 950, 1050, 1150, 1250, 1350, 1450, 1550, 1650,
	1750, 1850, 1950, 2050, 2150, 2250, 2350, 2450, 2550,2650, 2750, 2850, 2950, 3050, 3150, 3250, 3350, 3450, 3550, 3650, 
	3750, 3850, 3950, 4050, 4150, 4250, 4350, 4450, 4550, 4650, 4750, 5000 
}

new const ranks_names[maxranks][]=
{
	"Noobest",
	"Noob",
	"Newbiee",
	"Easy",
	"Normal",
	"Hard",
	"Expert",
	"SuperExpert",
	"Specialist",
	"Leader",
	"Mayor",
	"Pro",
	"SuperPro",
	"Heroic",
	"God"
}

public plugin_init()
{
	register_plugin("XP + LEVEL + RANK SYSTEM", VERSION, AUTHOR)

	// system of xp+lvl+rank
	playerPrefix = register_cvar("Player Prefix", "1") //1-Prefix by RANK, 2-Prefix by LEVEL
	rankLevelBonus = register_cvar("Level Up Bonus", "10000") // Amount of money when passing level.
	rankSaveType = register_cvar("XP Save Type", "2") // 1 - IP || 2 - Nick || 3 - SteamID
	
	register_cvar("XPLvlRankSystem", VERSION, FCVAR_SERVER | FCVAR_SPONLY ) //Search for variable on Gametracker.com

	register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
	register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
	
	register_clcmd("say", "hook_say");
	register_clcmd("say_team", "hook_say_team");
	
	register_dictionary("cs_rank_system.txt");

	SzSayText = get_user_msgid ("SayText");
	SzMaxPlayers = get_maxplayers();
	
	register_message(SzSayText, "MsgDuplicate");
	
	g_status_sync = CreateHudSyncObj()
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
	if(!is_user_alive(id) ||  !is_user_connected(id) )
	return;
	if(level[id] >= maxlevels)
	{
		static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp[id])
	}
	else
	{
		set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp_num[level[id]])
	}
}

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killer, victim, weapon, hitplace)
{
	new victim_name[32]
	get_user_name(victim, victim_name, charsmax(victim_name))
	
	new killer_team = get_user_team(killer)
	new victim_team = get_user_team(victim)
	
	//NORMAL KILL
	if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
	{
		xp[killer]++
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_NORMAL_KILL", victim_name)
	}
	
	//HEADSHOT
	if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
	{
		xp[killer]+=3
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_HEADSHOT_KILL", victim_name)
	}
	
	//KNIFE KILL
	if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_KILL", victim_name)
	}
	
	//KNIFE + HEADSHOT
	if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=7
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_HEAD_KILL", victim_name)
	}
	
	//GRENADE KILL
	if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_GRENADE_KILL", victim_name)
	}
	
	//SUICIDE
	if(killer == victim)
	{
		xp[killer]-=2
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_SUICIDE")
	}
	
	//TEAM KILL
	if(killer != victim && (killer_team == victim_team))
	{
		xp[killer]-=10
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_TEAM_KILL")
	}
	
	check_level(killer, 1)
	save_data(killer)
}
	

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(id, sound)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new name[32]; get_user_name(id, name, 31)
	
	if(level[id] < maxlevels) 
	{		
		while(xp[id] >= xp_num[level[id]])
		{
			level[id]++
			
			if(sound)
			{
				if(level[id] == maxlevels)
				{
					client_print_color(id, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_MAXLVL_ID", level[id])
					client_print_color(0, "!g[%s] %L",xPrefix, LANG_PLAYER, "MSG_MAXLVL_ALL", name, level[id])
					
					client_cmd(0, "spk ambience/wolfhowl02.wav")
					
					return PLUGIN_HANDLED
				}
				
				client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ID", get_pcvar_num(rankLevelBonus))
				client_print_color(0, "!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ALL", name, get_pcvar_num(rankLevelBonus))
				cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
				
				client_cmd(0, "spk ambience/lv_fruit1.wav")
				
				set_ranks(id)
			}
		}
	} 
	
	// Bug Preventions... (Back to top)
	if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
	{
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	if(level[id] >= maxlevels) 
	{	
		level[id] = maxlevels
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	return PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
	if(level[id] <= 2) rank[id] = RANKS_Noobest
	if(level[id] >= 2) rank[id] = RANKS_Noob
	if(level[id] >= 5) rank[id] = RANKS_Newbiee
	if(level[id] >= 8) rank[id] = RANKS_Easy
	if(level[id] >= 11) rank[id] = RANKS_Normal
	if(level[id] >= 14) rank[id] = RANKS_Hard
	if(level[id] >= 17) rank[id] = RANKS_Expert
	if(level[id] >= 20) rank[id] = RANKS_SuperExpert
	if(level[id] >= 23) rank[id] = RANKS_Specialist
	if(level[id] >= 26) rank[id] = RANKS_Leader
	if(level[id] >= 29) rank[id] = RANKS_Mayor
	if(level[id] >= 32) rank[id] = RANKS_Pro
	if(level[id] >= 33) rank[id] = RANKS_SuperPro
	if(level[id] >= 36) rank[id] = RANKS_Heroic
	if(level[id] >= 43) rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new auth[40], data[50]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	formatex(data, charsmax(data), "%d %d", level[id], xp[id])
	
	fvault_pset_data(db_save, auth, data)
	
	return PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
	new auth[40], data[50], x1[10], x2[10]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	fvault_get_data(db_save, auth, data, charsmax(data))
	parse(data, x1, charsmax(x1), x2, charsmax(x2))
	
	level[id] = str_to_num(x1)
	xp[id] = str_to_num(x2)
	
	set_task(2.0, "set_ranks", id)
	check_level(id, 0)
	
	set_task(1.1, "hud_status", id, _, _, "b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
	if(!is_user_bot(id) && is_user_connected(id)) 
	{
		new name[32], pid = read_data(2)
		
		get_user_name(pid, name, 31)
		
		new xxx = get_user_team(id)
		new xxx2 = get_user_team(pid)
		
		static r, g, b;
		r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		
		if (xxx == xxx2)    // friend
		{
			set_hudmessage(r, g, b, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
			ShowSyncHudMsg(id, g_status_sync, "Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
		}
	}
}

public hideStatus(id)
{
	ClearSyncHud(id, g_status_sync)
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang16393\\ f0\\ fs16 \n\\ par }
*/
User avatar
xGm # empty
Membru, skill 0
Membru, skill 0
Posts: 18
Joined: 06 Apr 2020, 19:05
Detinator Steam: Nu
CS Status: eXtreme Gaming
Detinator server CS: cs.xgm.ro
Fond eXtream: 0
Has thanked: 2 times

03 May 2020, 22:04

licensse wrote:
01 May 2020, 09:20
Salut, am modificat primul plugin care l-ai dat in cat sa nu mai scrie in chat si nu vei mai avea problema cu scrisul de 2 ori in chat, dar tot odata playerii nu vor mai avea in fata la nume [Level] si faze de astea.

Code: Select all

#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

new const VERSION[] =  "1.1"

new SzMaxPlayers, SzSayText;
new playerPrefix,rankLevelBonus,rankSaveType;

new const db_save[] = "cs_rank_system"

new level[33], xp[33], rank[33], g_status_sync

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

new const xp_num[maxlevels+1] = 
{ 
	15, 70, 150, 250, 350, 450, 550, 650, 750, 850, 950, 1050, 1150, 1250, 1350, 1450, 1550, 1650,
	1750, 1850, 1950, 2050, 2150, 2250, 2350, 2450, 2550,2650, 2750, 2850, 2950, 3050, 3150, 3250, 3350, 3450, 3550, 3650, 
	3750, 3850, 3950, 4050, 4150, 4250, 4350, 4450, 4550, 4650, 4750, 5000 
}

new const ranks_names[maxranks][]=
{
	"Noobest",
	"Noob",
	"Newbiee",
	"Easy",
	"Normal",
	"Hard",
	"Expert",
	"SuperExpert",
	"Specialist",
	"Leader",
	"Mayor",
	"Pro",
	"SuperPro",
	"Heroic",
	"God"
}

public plugin_init()
{
	register_plugin("XP + LEVEL + RANK SYSTEM", VERSION, AUTHOR)

	// system of xp+lvl+rank
	playerPrefix = register_cvar("Player Prefix", "1") //1-Prefix by RANK, 2-Prefix by LEVEL
	rankLevelBonus = register_cvar("Level Up Bonus", "10000") // Amount of money when passing level.
	rankSaveType = register_cvar("XP Save Type", "2") // 1 - IP || 2 - Nick || 3 - SteamID
	
	register_cvar("XPLvlRankSystem", VERSION, FCVAR_SERVER | FCVAR_SPONLY ) //Search for variable on Gametracker.com

	register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
	register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
	
	register_clcmd("say", "hook_say");
	register_clcmd("say_team", "hook_say_team");
	
	register_dictionary("cs_rank_system.txt");

	SzSayText = get_user_msgid ("SayText");
	SzMaxPlayers = get_maxplayers();
	
	register_message(SzSayText, "MsgDuplicate");
	
	g_status_sync = CreateHudSyncObj()
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
	if(!is_user_alive(id) ||  !is_user_connected(id) )
	return;
	if(level[id] >= maxlevels)
	{
		static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp[id])
	}
	else
	{
		set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp_num[level[id]])
	}
}

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killer, victim, weapon, hitplace)
{
	new victim_name[32]
	get_user_name(victim, victim_name, charsmax(victim_name))
	
	new killer_team = get_user_team(killer)
	new victim_team = get_user_team(victim)
	
	//NORMAL KILL
	if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
	{
		xp[killer]++
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_NORMAL_KILL", victim_name)
	}
	
	//HEADSHOT
	if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
	{
		xp[killer]+=3
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_HEADSHOT_KILL", victim_name)
	}
	
	//KNIFE KILL
	if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_KILL", victim_name)
	}
	
	//KNIFE + HEADSHOT
	if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=7
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_HEAD_KILL", victim_name)
	}
	
	//GRENADE KILL
	if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_GRENADE_KILL", victim_name)
	}
	
	//SUICIDE
	if(killer == victim)
	{
		xp[killer]-=2
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_SUICIDE")
	}
	
	//TEAM KILL
	if(killer != victim && (killer_team == victim_team))
	{
		xp[killer]-=10
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_TEAM_KILL")
	}
	
	check_level(killer, 1)
	save_data(killer)
}
	

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(id, sound)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new name[32]; get_user_name(id, name, 31)
	
	if(level[id] < maxlevels) 
	{		
		while(xp[id] >= xp_num[level[id]])
		{
			level[id]++
			
			if(sound)
			{
				if(level[id] == maxlevels)
				{
					client_print_color(id, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_MAXLVL_ID", level[id])
					client_print_color(0, "!g[%s] %L",xPrefix, LANG_PLAYER, "MSG_MAXLVL_ALL", name, level[id])
					
					client_cmd(0, "spk ambience/wolfhowl02.wav")
					
					return PLUGIN_HANDLED
				}
				
				client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ID", get_pcvar_num(rankLevelBonus))
				client_print_color(0, "!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ALL", name, get_pcvar_num(rankLevelBonus))
				cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
				
				client_cmd(0, "spk ambience/lv_fruit1.wav")
				
				set_ranks(id)
			}
		}
	} 
	
	// Bug Preventions... (Back to top)
	if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
	{
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	if(level[id] >= maxlevels) 
	{	
		level[id] = maxlevels
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	return PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
	if(level[id] <= 2) rank[id] = RANKS_Noobest
	if(level[id] >= 2) rank[id] = RANKS_Noob
	if(level[id] >= 5) rank[id] = RANKS_Newbiee
	if(level[id] >= 8) rank[id] = RANKS_Easy
	if(level[id] >= 11) rank[id] = RANKS_Normal
	if(level[id] >= 14) rank[id] = RANKS_Hard
	if(level[id] >= 17) rank[id] = RANKS_Expert
	if(level[id] >= 20) rank[id] = RANKS_SuperExpert
	if(level[id] >= 23) rank[id] = RANKS_Specialist
	if(level[id] >= 26) rank[id] = RANKS_Leader
	if(level[id] >= 29) rank[id] = RANKS_Mayor
	if(level[id] >= 32) rank[id] = RANKS_Pro
	if(level[id] >= 33) rank[id] = RANKS_SuperPro
	if(level[id] >= 36) rank[id] = RANKS_Heroic
	if(level[id] >= 43) rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new auth[40], data[50]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	formatex(data, charsmax(data), "%d %d", level[id], xp[id])
	
	fvault_pset_data(db_save, auth, data)
	
	return PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
	new auth[40], data[50], x1[10], x2[10]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	fvault_get_data(db_save, auth, data, charsmax(data))
	parse(data, x1, charsmax(x1), x2, charsmax(x2))
	
	level[id] = str_to_num(x1)
	xp[id] = str_to_num(x2)
	
	set_task(2.0, "set_ranks", id)
	check_level(id, 0)
	
	set_task(1.1, "hud_status", id, _, _, "b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
	if(!is_user_bot(id) && is_user_connected(id)) 
	{
		new name[32], pid = read_data(2)
		
		get_user_name(pid, name, 31)
		
		new xxx = get_user_team(id)
		new xxx2 = get_user_team(pid)
		
		static r, g, b;
		r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		
		if (xxx == xxx2)    // friend
		{
			set_hudmessage(r, g, b, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
			ShowSyncHudMsg(id, g_status_sync, "Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
		}
	}
}

public hideStatus(id)
{
	ClearSyncHud(id, g_status_sync)
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang16393\\ f0\\ fs16 \n\\ par }
*/
Nu poate fi compilat.
Image
User avatar
licensse
Membru, skill 0
Membru, skill 0
Posts: 23
Joined: 06 Aug 2018, 21:37
Detinator Steam: Da
CS Status: Ofer sau primesc ajutor!
Detinator server CS: 137.74.97.72:27015
Fond eXtream: 0
Location: R.Moldova
Contact:

04 May 2020, 09:36

xGm # empty wrote:
03 May 2020, 22:04
licensse wrote:
01 May 2020, 09:20
Salut, am modificat primul plugin care l-ai dat in cat sa nu mai scrie in chat si nu vei mai avea problema cu scrisul de 2 ori in chat, dar tot odata playerii nu vor mai avea in fata la nume [Level] si faze de astea.

Code: Select all

#include <amxmodx>
#include <fvault>
#include <cstrike>
#include <wm_play>

#define maxranks 15
#define maxlevels 50

#define xPrefix "XP System"

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14

new const VERSION[] =  "1.1"

new SzMaxPlayers, SzSayText;
new playerPrefix,rankLevelBonus,rankSaveType;

new const db_save[] = "cs_rank_system"

new level[33], xp[33], rank[33], g_status_sync

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

new const xp_num[maxlevels+1] = 
{ 
	15, 70, 150, 250, 350, 450, 550, 650, 750, 850, 950, 1050, 1150, 1250, 1350, 1450, 1550, 1650,
	1750, 1850, 1950, 2050, 2150, 2250, 2350, 2450, 2550,2650, 2750, 2850, 2950, 3050, 3150, 3250, 3350, 3450, 3550, 3650, 
	3750, 3850, 3950, 4050, 4150, 4250, 4350, 4450, 4550, 4650, 4750, 5000 
}

new const ranks_names[maxranks][]=
{
	"Noobest",
	"Noob",
	"Newbiee",
	"Easy",
	"Normal",
	"Hard",
	"Expert",
	"SuperExpert",
	"Specialist",
	"Leader",
	"Mayor",
	"Pro",
	"SuperPro",
	"Heroic",
	"God"
}

public plugin_init()
{
	register_plugin("XP + LEVEL + RANK SYSTEM", VERSION, AUTHOR)

	// system of xp+lvl+rank
	playerPrefix = register_cvar("Player Prefix", "1") //1-Prefix by RANK, 2-Prefix by LEVEL
	rankLevelBonus = register_cvar("Level Up Bonus", "10000") // Amount of money when passing level.
	rankSaveType = register_cvar("XP Save Type", "2") // 1 - IP || 2 - Nick || 3 - SteamID
	
	register_cvar("XPLvlRankSystem", VERSION, FCVAR_SERVER | FCVAR_SPONLY ) //Search for variable on Gametracker.com

	register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
	register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
	
	register_clcmd("say", "hook_say");
	register_clcmd("say_team", "hook_say_team");
	
	register_dictionary("cs_rank_system.txt");

	SzSayText = get_user_msgid ("SayText");
	SzMaxPlayers = get_maxplayers();
	
	register_message(SzSayText, "MsgDuplicate");
	
	g_status_sync = CreateHudSyncObj()
}

/*----------------------------------------------------------------------------------------------------------------
-HUD OF THE GAME
----------------------------------------------------------------------------------------------------------------*/
public hud_status(id)
{
	if(!is_user_alive(id) ||  !is_user_connected(id) )
	return;
	if(level[id] >= maxlevels)
	{
		static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp[id])
	}
	else
	{
		set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
		show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_names[rank[id]], xp[id], xp_num[level[id]])
	}
}

/*----------------------------------------------------------------------------------------------------------------
-EVENT TO ADD XP
----------------------------------------------------------------------------------------------------------------*/

public client_death(killer, victim, weapon, hitplace)
{
	new victim_name[32]
	get_user_name(victim, victim_name, charsmax(victim_name))
	
	new killer_team = get_user_team(killer)
	new victim_team = get_user_team(victim)
	
	//NORMAL KILL
	if((killer != victim) && !(killer_team == victim_team) && !(hitplace == HIT_HEAD) && !(weapon == CSW_HEGRENADE) && !(weapon == CSW_KNIFE))
	{
		xp[killer]++
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_NORMAL_KILL", victim_name)
	}
	
	//HEADSHOT
	if(hitplace == HIT_HEAD && !(weapon == CSW_KNIFE) && !(killer_team == victim_team))
	{
		xp[killer]+=3
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_HEADSHOT_KILL", victim_name)
	}
	
	//KNIFE KILL
	if(weapon == CSW_KNIFE && !(hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_KILL", victim_name)
	}
	
	//KNIFE + HEADSHOT
	if(weapon == CSW_KNIFE && (hitplace == HIT_HEAD) && !(killer_team == victim_team))
	{
		xp[killer]+=7
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_KNIFE_HEAD_KILL", victim_name)
	}
	
	//GRENADE KILL
	if(weapon == CSW_HEGRENADE && (killer != victim) && !(killer_team == victim_team))
	{
		xp[killer]+=5
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_GRENADE_KILL", victim_name)
	}
	
	//SUICIDE
	if(killer == victim)
	{
		xp[killer]-=2
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_SUICIDE")
	}
	
	//TEAM KILL
	if(killer != victim && (killer_team == victim_team))
	{
		xp[killer]-=10
		client_print_color(killer, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_TEAM_KILL")
	}
	
	check_level(killer, 1)
	save_data(killer)
}
	

/*----------------------------------------------------------------------------------------------------------------
-CHECK LEVEL OF ADD ++
----------------------------------------------------------------------------------------------------------------*/
public check_level(id, sound)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new name[32]; get_user_name(id, name, 31)
	
	if(level[id] < maxlevels) 
	{		
		while(xp[id] >= xp_num[level[id]])
		{
			level[id]++
			
			if(sound)
			{
				if(level[id] == maxlevels)
				{
					client_print_color(id, "!g[%s] %L", xPrefix, LANG_PLAYER, "MSG_MAXLVL_ID", level[id])
					client_print_color(0, "!g[%s] %L",xPrefix, LANG_PLAYER, "MSG_MAXLVL_ALL", name, level[id])
					
					client_cmd(0, "spk ambience/wolfhowl02.wav")
					
					return PLUGIN_HANDLED
				}
				
				client_print_color(id,"!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ID", get_pcvar_num(rankLevelBonus))
				client_print_color(0, "!g[%s] %L",xPrefix,LANG_PLAYER, "MSG_RAISE_LEVEL_ALL", name, get_pcvar_num(rankLevelBonus))
				cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(rankLevelBonus))
				
				client_cmd(0, "spk ambience/lv_fruit1.wav")
				
				set_ranks(id)
			}
		}
	} 
	
	// Bug Preventions... (Back to top)
	if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
	{
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	if(level[id] >= maxlevels) 
	{	
		level[id] = maxlevels
		xp[id] = xp_num[level[id]-1]
		save_data(id)
	}
	
	return PLUGIN_HANDLED
}

/*----------------------------------------------------------------------------------------------------------------
-SET THE RANK POSITION
----------------------------------------------------------------------------------------------------------------*/
public set_ranks(id)
{
	if(level[id] <= 2) rank[id] = RANKS_Noobest
	if(level[id] >= 2) rank[id] = RANKS_Noob
	if(level[id] >= 5) rank[id] = RANKS_Newbiee
	if(level[id] >= 8) rank[id] = RANKS_Easy
	if(level[id] >= 11) rank[id] = RANKS_Normal
	if(level[id] >= 14) rank[id] = RANKS_Hard
	if(level[id] >= 17) rank[id] = RANKS_Expert
	if(level[id] >= 20) rank[id] = RANKS_SuperExpert
	if(level[id] >= 23) rank[id] = RANKS_Specialist
	if(level[id] >= 26) rank[id] = RANKS_Leader
	if(level[id] >= 29) rank[id] = RANKS_Mayor
	if(level[id] >= 32) rank[id] = RANKS_Pro
	if(level[id] >= 33) rank[id] = RANKS_SuperPro
	if(level[id] >= 36) rank[id] = RANKS_Heroic
	if(level[id] >= 43) rank[id] = RANKS_God
}

/*----------------------------------------------------------------------------------------------------------------
-SAVE LEVEL, XP AND RANK
----------------------------------------------------------------------------------------------------------------*/
public save_data(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	new auth[40], data[50]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	formatex(data, charsmax(data), "%d %d", level[id], xp[id])
	
	fvault_pset_data(db_save, auth, data)
	
	return PLUGIN_HANDLED;
}

/*----------------------------------------------------------------------------------------------------------------
-LOAD DATA
----------------------------------------------------------------------------------------------------------------*/

public client_authorized(id)
{
	new auth[40], data[50], x1[10], x2[10]
	
	switch(get_pcvar_num(rankSaveType))
	{
		case 1: get_user_ip(id, auth, charsmax(auth), 1)
		case 2: get_user_name(id, auth, charsmax(auth))
		case 3: get_user_authid(id, auth, charsmax(auth))
	}
	
	fvault_get_data(db_save, auth, data, charsmax(data))
	parse(data, x1, charsmax(x1), x2, charsmax(x2))
	
	level[id] = str_to_num(x1)
	xp[id] = str_to_num(x2)
	
	set_task(2.0, "set_ranks", id)
	check_level(id, 0)
	
	set_task(1.1, "hud_status", id, _, _, "b")
}

/*----------------------------------------------------------------------------------------------------------------
-SHOW XP BY LOOKING AT THE PERSON
----------------------------------------------------------------------------------------------------------------*/

public showStatus(id)
{
	if(!is_user_bot(id) && is_user_connected(id)) 
	{
		new name[32], pid = read_data(2)
		
		get_user_name(pid, name, 31)
		
		new xxx = get_user_team(id)
		new xxx2 = get_user_team(pid)
		
		static r, g, b;
		r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
		
		if (xxx == xxx2)    // friend
		{
			set_hudmessage(r, g, b, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
			ShowSyncHudMsg(id, g_status_sync, "Name: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_names[rank[pid]], level[pid], xp[pid], xp_num[level[pid]])
		}
	}
}

public hideStatus(id)
{
	ClearSyncHud(id, g_status_sync)
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang16393\\ f0\\ fs16 \n\\ par }
*/
Nu poate fi compilat.
A fost incercat de mine si merge sa-l compilezi, ai nevoie de .inc necesare.
User avatar
xGm # empty
Membru, skill 0
Membru, skill 0
Posts: 18
Joined: 06 Apr 2020, 19:05
Detinator Steam: Nu
CS Status: eXtreme Gaming
Detinator server CS: cs.xgm.ro
Fond eXtream: 0
Has thanked: 2 times

13 May 2020, 16:06

Am reusit sa-l compilez. Ideea e ca nu face nimic plugin-ul. Nu apare nici hud in care sa arate rank-ul si nici in chat nu-l arata.
Image
Post Reply

Return to “Modificari pluginuri”

  • Information