Заявка:ТРИ плъгина в ЕДИН

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.

Модератор: Extreme

Аватар
antonstoqnovv
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 15 Окт 2017, 10:40
Се отблагодари: 9 пъти
Получена благодарност: 2 пъти

Заявка:ТРИ плъгина в ЕДИН

Мнение от antonstoqnovv » 23 Авг 2018, 11:56

Някой може ли да ми направи от трите плъгина един общ

ranksystem.sma

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

#include <amxmodx>

/* Common include libraries */
#include <amxmisc>
#include <fvault>
#tryinclude <cromchat>

#define PLUGIN  "Rank System"
#define VERSION "1.1"
#define AUTHOR  "Huehue @ AMXX-BG.INFO"
#define GAMETRACKER "rank_system"

#if !defined MAX_PLAYERS || AMXX_VERSION_NUM < 183
#define MAX_PLAYERS 32
#define client_disconnected client_disconnect
#endif

enum _:ePlayerData
{
	Experience,
	Level,
	NextLevel,
	IncreaseExperience,
	ConnectStatus,
	UserName[MAX_PLAYERS]
}

new g_iPlayerData[MAX_PLAYERS + 1][ePlayerData]

enum
{
	Negative = 0,
	Positive
}

new const g_szVault[] = "Rank_System_AMXXBG"

new Array:g_aRankName, Array:g_aRankExp
new iTotalRanks

enum
{
	SECTION_SETTINGS = 1,
	SECTION_RANKS
}

enum _:eSettings
{
	Prefix[32],
	VipFlag[6],
	HudColors[12],
	Float:HudX,
	Float:HudY,
	HudEffect,
	KillExp,
	HeadKillExp,
	GrenadeKillExp,
	KnifeKillExp,
	VipKillExp,
	VipHeadKillExp,
	VipGrenadeKillExp,
	VipKnifeKillExp,
	VipFlagBit
}

new g_eSettings[eSettings]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar(GAMETRACKER, AUTHOR, FCVAR_SERVER | FCVAR_SPONLY)
	set_cvar_string(GAMETRACKER, AUTHOR)

	register_event("DeathMsg", "eventDeathMsg", "a")

	register_clcmd("amx_reload_file", "Command_Reload_RanksFile", ADMIN_RCON, "- Reload settings and rank file..")

	#if defined _cromchat_included
	CC_SetPrefix(g_eSettings[Prefix])
	#endif
}

public plugin_precache()
{
	g_aRankName = ArrayCreate(128, 1)
	g_aRankExp = ArrayCreate(64, 1)
	
	Read_Ranks_File()
}

public Read_Ranks_File()
{
	static szConfigsDir[64], iFile, szRankFile[64]
	get_configsdir(szConfigsDir, charsmax(szConfigsDir))
	formatex(szRankFile, charsmax(szRankFile), "/Rank_System.ini")
	add(szConfigsDir, charsmax(szConfigsDir), szRankFile)
	iFile = fopen(szConfigsDir, "rt")
	
	if(!file_exists(szConfigsDir))
	{
		server_print("File not found, creating new one..")
		new iFile = fopen(szConfigsDir, "wt")
		
		if (iFile)
		{
			new szNewFile[512]
			formatex(szNewFile, charsmax(szNewFile), "[SETTINGS]\
				^nPREFIX = &x04[&x03Rank System&x04]\
				^nVIP_FLAG = b\
				^nHUD_COLORS = 255 0 0\
				^nHUD_X_POSITION = 0.80\
				^nHUD_Y_POSITION = -1.0\
				^nHUD_EFFECT = 0\
				^nKILL_EXP = 2\
				^nHEADSHOT_KILL_EXP = 3\
				^nGRENADE_KILL_EXP = 4\
				^nKNIFE_KILL_EXP = 6\
				^nVIP_KILL_EXP = 3\
				^nVIP_HEADSHOT_KILL_EXP = 5\
				^nVIP_GRENADE_KILL_EXP = 6\
				^nVIP_KNIFE_KILL_EXP = 8\
				^n^n[RANKS]\
				^n;Rank Name = XP\
				^nNewbie = 0\
				^nPro = 25\
				^nMaster = 50")
			fputs(iFile, szNewFile)
		}
		fclose(iFile)
		Read_Ranks_File()
		return
	}
	
	new iLine
	
	if (iFile)
	{
		static szLineData[160], iSection, szValue[160], szKey[64]
		
		while (!feof(iFile))
		{
			fgets(iFile, szLineData, charsmax(szLineData))
			trim(szLineData)
			
			if (szLineData[0] == EOS || szLineData[0] == ';' || (szLineData[0] == '/' && szLineData[1] == '/'))
				continue

			switch(szLineData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					if (szLineData[strlen(szLineData) - 1] == ']')
					{
						if (containi(szLineData, "settings") != -1)
							iSection = SECTION_SETTINGS
						else if (containi(szLineData, "ranks") != -1)
							iSection = SECTION_RANKS
					}
					else
						continue
				}
				default:
				{
					switch(iSection)
					{
						case SECTION_SETTINGS:
						{
							strtok(szLineData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
							trim(szKey)
							trim(szValue)

							if (szValue[0] == EOS)
								continue

							if (equal(szKey, "PREFIX"))
								copy(g_eSettings[Prefix], charsmax(g_eSettings[Prefix]), szValue)
							else if (equal(szKey, "VIP_FLAG"))
							{
								copy(g_eSettings[VipFlag], charsmax(g_eSettings[VipFlag]), szValue)
								g_eSettings[VipFlagBit] = read_flags(g_eSettings[VipFlag])
							}
							else if (equal(szKey, "HUD_COLORS"))
								copy(g_eSettings[HudColors], charsmax(g_eSettings[HudColors]), szValue)
							else if (equal(szKey, "HUD_X_POSITION"))
								g_eSettings[HudX] = _:str_to_float(szValue)
							else if (equal(szKey, "HUD_Y_POSITION"))
								g_eSettings[HudY] = _:str_to_float(szValue)
							else if (equal(szKey, "HUD_EFFECT"))
								g_eSettings[HudEffect] = str_to_num(szValue)
							else if (equal(szKey, "KILL_EXP"))
								g_eSettings[KillExp] = str_to_num(szValue)
							else if (equal(szKey, "HEADSHOT_KILL_EXP"))
								g_eSettings[HeadKillExp] = str_to_num(szValue)
							else if (equal(szKey, "GRENADE_KILL_EXP"))
								g_eSettings[GrenadeKillExp] = str_to_num(szValue)
							else if (equal(szKey, "KNIFE_KILL_EXP"))
								g_eSettings[KnifeKillExp] = str_to_num(szValue)
							else if (equal(szKey, "VIP_KILL_EXP"))
								g_eSettings[VipKillExp] = str_to_num(szValue)
							else if (equal(szKey, "VIP_HEADSHOT_KILL_EXP"))
								g_eSettings[VipHeadKillExp] = str_to_num(szValue)
							else if (equal(szKey, "VIP_GRENADE_KILL_EXP"))
								g_eSettings[VipGrenadeKillExp] = str_to_num(szValue)
							else if (equal(szKey, "VIP_KNIFE_KILL_EXP"))
								g_eSettings[VipKnifeKillExp] = str_to_num(szValue)
						}
						case SECTION_RANKS:
						{
							strtok(szLineData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
							trim(szKey)
							trim(szValue)

							if (szValue[0] == EOS)
								continue

							ArrayPushString(g_aRankName, szKey)
							ArrayPushCell(g_aRankExp, str_to_num(szValue))

							iLine++
						}
					}
				}
			}
		}
		fclose(iFile)
	}
	iTotalRanks = iLine - 1
	server_print(">> Loaded %i Ranks from file", iTotalRanks)
}

public client_putinserver(id)
{
	arrayset(g_iPlayerData[id], 0, sizeof(g_iPlayerData[]))

	get_user_name(id, g_iPlayerData[id][UserName], charsmax(g_iPlayerData[][UserName]))
	set_task(0.1, "Load_Data", id, g_iPlayerData[id][UserName], sizeof(g_iPlayerData[][UserName]))
}

public client_disconnected(id)
{
	if (g_iPlayerData[id][ConnectStatus])
	{
		Save_Data(id, g_iPlayerData[id][UserName])
		g_iPlayerData[id][ConnectStatus] = false
	}
}

public client_infochanged(id)
{
	if (!is_user_connected(id))
		return PLUGIN_HANDLED
	
	static szNames[2][32]
	get_user_name(id, szNames[0], charsmax(szNames[]))
	get_user_info(id, "name", szNames[1], charsmax(szNames[]))

	if (!equali(szNames[1], szNames[0]))
	{
		Save_Data(id, szNames[0])
		set_task(0.1, "Load_Data", id, szNames[1], sizeof(szNames[]))
		g_iPlayerData[id][UserName] = szNames[1]
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public Command_Reload_RanksFile(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	ArrayClear(g_aRankName)
	ArrayClear(g_aRankExp)
	
	Read_Ranks_File()
	
	return PLUGIN_HANDLED
}

public CheckRank(id, iType)
{
	if(g_iPlayerData[id][Level] <= 0)
	{
		g_iPlayerData[id][Level] = 0
		g_iPlayerData[id][NextLevel] = 1
	}
		
	if (g_iPlayerData[id][Experience] < 0)
		g_iPlayerData[id][Experience] = 0
		
	switch(iType)
	{
		case Negative:
		{
			while (g_iPlayerData[id][Level] <= iTotalRanks)
			{
				new iExp = ArrayGetCell(g_aRankExp, g_iPlayerData[id][Level])
				
				if(g_iPlayerData[id][Experience] >= iExp)
					break
				
				g_iPlayerData[id][Level]--
				g_iPlayerData[id][NextLevel]--
				
				new szRankName[64]
				ArrayGetString(g_aRankName, g_iPlayerData[id][NextLevel], szRankName, charsmax(szRankName))

				#if defined _cromchat_included
				CC_SendMatched(0, CC_COLOR_GREY, "&x03Player &x04%s&x03 has lost &x04Level %i &x03- &x04%s", g_iPlayerData[id][UserName], g_iPlayerData[id][NextLevel], szRankName)
				#else
				client_print(0, print_chat, "* Player %s has lost Level %i - %s", g_iPlayerData[id][UserName], g_iPlayerData[id][NextLevel], szRankName)
				#endif
			}
		}
		case Positive:
		{
			while (g_iPlayerData[id][Level] < iTotalRanks)
			{
				new iNextLevelExp = ArrayGetCell(g_aRankExp, g_iPlayerData[id][NextLevel])
				
				if (g_iPlayerData[id][Experience] < iNextLevelExp)
					break
				
				g_iPlayerData[id][Level]++
				g_iPlayerData[id][NextLevel]++
				
				new szRankName[64]
				ArrayGetString(g_aRankName, g_iPlayerData[id][Level], szRankName, charsmax(szRankName))
				
				#if defined _cromchat_included
				CC_SendMatched(0, CC_COLOR_GREY, "&x03Player &x04%s &x03has achieved &x04Level %i &x03- &x04%s", g_iPlayerData[id][UserName], g_iPlayerData[id][Level], szRankName)
				#else
				client_print(0, print_chat, "* Player %s has achieved Level %i - %s", g_iPlayerData[id][UserName], g_iPlayerData[id][Level], szRankName)
				#endif
			}
		}
	}
}

/* =============================================
	Events
============================================= */
public eventDeathMsg()
{
	new iKiller = read_data(1), iVictim = read_data(2)
	
	if (is_user_connected(iKiller) && iKiller != iVictim)
	{
		new szWeapon[32]
		read_data(4, szWeapon, charsmax(szWeapon))
		if (equal(szWeapon, "grenade"))
		{
			if (get_user_flags(iKiller) & g_eSettings[VipFlagBit])
				g_iPlayerData[iKiller][IncreaseExperience] = g_eSettings[VipGrenadeKillExp]
			else
				g_iPlayerData[iKiller][IncreaseExperience] = g_eSettings[GrenadeKillExp]
		}
		else if (equal(szWeapon, "knife"))
		{
			if (get_user_flags(iKiller) & g_eSettings[VipFlagBit])
				g_iPlayerData[iKiller][IncreaseExperience] = g_eSettings[VipKnifeKillExp]
			else
				g_iPlayerData[iKiller][IncreaseExperience] = g_eSettings[KnifeKillExp]
		}
		else
		{
			new iHeadShot = read_data(3)

			if (get_user_flags(iKiller) & g_eSettings[VipFlagBit])
				g_iPlayerData[iKiller][IncreaseExperience] = iHeadShot ? g_eSettings[VipHeadKillExp] : g_eSettings[VipKillExp]
			else
				g_iPlayerData[iKiller][IncreaseExperience] = iHeadShot ? g_eSettings[HeadKillExp] : g_eSettings[KillExp]
		}

		g_iPlayerData[iKiller][Experience] += g_iPlayerData[iKiller][IncreaseExperience]

		CheckRank(iKiller, Positive)
	}
}

/* =============================================
	Load & Save
============================================= */
public Load_Data(szName[], id)
{
	if(!is_user_connected(id))
		return
	
	new szData[64]
			
	if(fvault_get_data(g_szVault, szName, szData, charsmax(szData)))
	{
		replace_all(szData, charsmax(szData), "#", " ")
		
		new szExp[10], szLevel[10]
		parse(szData, szExp, charsmax(szExp), szLevel, charsmax(szLevel))

		g_iPlayerData[id][Experience] = str_to_num(szExp)
		g_iPlayerData[id][Level] = str_to_num(szLevel)
		g_iPlayerData[id][NextLevel] = g_iPlayerData[id][Level]
		g_iPlayerData[id][NextLevel]++
	} 
	else 
	{
		g_iPlayerData[id][Experience] = 0
		g_iPlayerData[id][Level] = 0
		g_iPlayerData[id][NextLevel] = 1
	}

	g_iPlayerData[id][ConnectStatus] = true
}

public Save_Data(id, szName[])
{
	new szData[64]
	formatex(szData, charsmax(szData), "%i#%i", g_iPlayerData[id][Experience], g_iPlayerData[id][Level])
	fvault_set_data(g_szVault, szName, szData)
}


/* =============================================
	Natives
============================================= */
public plugin_natives()
{
	register_library("rank_system_huehue")
	
	register_native("get_user_level", "native_get_user_level")
	register_native("set_user_level", "native_set_user_level")
	register_native("get_user_exp", "native_get_user_exp")
	register_native("set_user_exp", "native_set_user_exp")
	register_native("get_user_rank_name", "native_get_user_rank_name")
	register_native("get_user_next_exp", "native_get_user_next_exp")
	register_native("get_user_next_level", "native_get_user_next_level")
	register_native("get_user_next_rank_name", "native_get_user_next_rank_name")
	register_native("get_rank_name_by_level", "native_get_rank_name_by_level")
	register_native("get_rank_exp", "native_get_rank_exp")
	register_native("get_total_ranks", "native_get_total_ranks")
	register_native("update_rank_info", "native_update_rank_info")
	register_native("set_user_rank", "native_set_user_rank")
	register_native("get_plugin_prefix", "native_get_plugin_prefix")
	register_native("get_vip_flag", "native_get_vip_flag")

	register_native("get_hud_colors", "native_get_hud_colors")
	register_native("get_hud_position_x", "native_get_hud_position_x")
	register_native("get_hud_position_y", "native_get_hud_position_y")
	register_native("get_hud_effect", "native_get_hud_effect")
}

public native_get_user_level(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return -1
	
	return g_iPlayerData[id][Level]
}
public native_set_user_level(iPlugin, iParams)
{
	new id = get_param(1), iLevel = get_param(2)
	
	if (!is_user_connected(id))
		return false
		
	if (g_iPlayerData[id][Level] < iLevel)
	{
		g_iPlayerData[id][Level] = iLevel
		CheckRank(id, Positive)
	}
	else
	{
		g_iPlayerData[id][Level] = iLevel
		CheckRank(id, Negative)
	}
	return true
	
}
public native_get_user_exp(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return -1
	
	return g_iPlayerData[id][Experience]
}
public native_set_user_exp(iPlugin, iParams)
{
	new id = get_param(1), iExp = get_param(2)
	
	if (!is_user_connected(id))
		return false
		
	if (g_iPlayerData[id][Experience] < iExp)
	{
		g_iPlayerData[id][Experience] = iExp
		CheckRank(id, Positive)
	}
	else
	{
		g_iPlayerData[id][Experience] = iExp
		CheckRank(id, Negative)
	}
	return true
	
}
public native_get_user_rank_name(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return false
	
	new szRankName[64]
	ArrayGetString(g_aRankName, g_iPlayerData[id][Level], szRankName, charsmax(szRankName))
	
	set_string(2, szRankName, get_param(3))
	return true
}

public native_get_user_next_exp(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (g_iPlayerData[id][Level] > iTotalRanks-1)
	{
		return 0
	}
	else
	{
		new iNextLevelExp = ArrayGetCell(g_aRankExp, g_iPlayerData[id][NextLevel])
	
		return iNextLevelExp
	}
	#if AMXX_VERSION_NUM < 183
	return 0
	#endif
}
public native_get_user_next_level(iPlugin, iParams)
{
	new id = get_param(1)

	if (g_iPlayerData[id][Level] > iTotalRanks-1)
	{
		return 0
	}
	else
	{
		return g_iPlayerData[id][NextLevel]
	}
	#if AMXX_VERSION_NUM < 183
	return 0
	#endif
}
public native_get_user_next_rank_name(iPlugin, iParams)
{
	new id = get_param(1)

	if (g_iPlayerData[id][Level] > iTotalRanks-1)
	{
		return 0
	}
	else
	{
		new szRankName[64]
		ArrayGetString(g_aRankName, g_iPlayerData[id][NextLevel], szRankName, charsmax(szRankName))

		set_string(2, szRankName, get_param(3))
	}
	return true
}
public native_get_rank_name_by_level(iPlugin, iParams)
{
	new iLevel = get_param(1)
	
	if (iLevel > iTotalRanks + 1)
	{
		return 0
	}
	
	new szRankName[64]
	ArrayGetString(g_aRankName, iLevel, szRankName, charsmax(szRankName))
	
	set_string(2, szRankName, get_param(3))
	return true
}

public native_get_total_ranks(iPlugin, iParams)
{
	return iTotalRanks
}

public native_update_rank_info(iPlugin, iParams)
{
	new id = get_param(1), iType = get_param(2)

	if (!is_user_connected(id))
		return false

	CheckRank(id, iType)
	return true
}

public native_get_rank_exp(iPlugin, iParams)
{
	new iExp = ArrayGetCell(g_aRankExp, get_param(1))

	return iExp
}

public native_set_user_rank(iPlugin, iParams)
{
	new id = get_param(1), iRankNum = get_param(2)

	if (!is_user_connected(id))
		return false

	new iExpAmount = ArrayGetCell(g_aRankExp, iRankNum)

	g_iPlayerData[id][Level] = iRankNum
	g_iPlayerData[id][Experience] = iExpAmount
	g_iPlayerData[id][NextLevel] = g_iPlayerData[id][Level]
	g_iPlayerData[id][NextLevel]++

	return true
}

public native_get_plugin_prefix(iPlugin, iParams)
{
	return set_string(1, g_eSettings[Prefix], get_param(2))
}

public native_get_vip_flag(iPlugin, iParams)
{
	return set_string(1, g_eSettings[VipFlag], get_param(2))
}

public native_get_hud_colors(iPlugin, iParams)
{
	return set_string(1, g_eSettings[HudColors], get_param(2))
}

public Float:native_get_hud_position_x(iPlugin, iParams)
{
	return g_eSettings[HudX]
}

public Float:native_get_hud_position_y(iPlugin, iParams)
{
	return g_eSettings[HudY]
}
public native_get_hud_effect(iPlugin, iParams)
{
	return g_eSettings[HudEffect]
}
Ranksystem_adminmenu

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

#include <amxmodx>
#include <rank_system_huehue>

/* Common include libraries */
#include <amxmisc>
#tryinclude <cromchat>

#define PLUGIN  "Addon: Admin Control Experience & Ranks"
#define VERSION "1.1"
#define AUTHOR  "Huehue @ AMXX-BG.INFO"
#define GAMETRACKER "rank_system_admin_commands"

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar(GAMETRACKER, AUTHOR, FCVAR_SERVER | FCVAR_SPONLY)
	set_cvar_string(GAMETRACKER, AUTHOR)

	register_clcmd("say /rankmenu", "Command_RankMenu", ADMIN_RCON, "- Toggles up the rank menu")
	register_concmd("amx_rankmenu", "Command_RankMenu", ADMIN_RCON, "- Toggles up the rank menu")
	register_clcmd("XP_Amount", "Command_XP_Amount", ADMIN_RCON)
	register_clcmd("Set_Level", "Command_Set_Level", ADMIN_RCON)

	#if defined _cromchat_included
	new szPrefix[32]
	get_plugin_prefix(szPrefix, charsmax(szPrefix))
	CC_SetPrefix(szPrefix)
	#endif
}

/* ================================================
	Rank Menus & Commands
================================================ */
new g_iPlayer[33], g_iMenuType[33]

public Command_RankMenu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
		
	ToggleRankMenu(id)
	
	return PLUGIN_HANDLED
}
public ToggleRankMenu(id)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "\rHuehue's \d~ \wRank Menu")
	new iMenu = menu_create(szTitle, "rankmenu_handler")
	
	menu_additem(iMenu, "\yGive \dPlayer \rXP")
	menu_additem(iMenu, "\yTake \dPlayer \rXP^n")
	menu_additem(iMenu, "\ySet \dPlayer \rRank")
	menu_additem(iMenu, "\ySet \dPlayer \rLevel")
	
	menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\w")
	menu_setprop(iMenu, MPROP_EXITNAME, "\yExit \rRank Menu\d..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public rankmenu_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		menu_destroy(iMenu)
		return PLUGIN_HANDLED
	}
	Item++
	PlayerSetMenu(id, Item)
	
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

public PlayerSetMenu(id, iType)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "Choose Player to %s %s", iType == 1 ? "Give" : iType == 2 ? "Take" : "Set", iType == 4 ? "Level" : iType == 3 ? "Rank" : "XP")

	new iMenu = menu_create(szTitle, "player_set_menu_handler")

	g_iMenuType[id] = iType

	new iPlayers[32], iNum, iPlayer
	new szName[34], szTempID[10]
	get_players(iPlayers, iNum)
			
	for(new i; i < iNum; i++)
	{
		iPlayer = iPlayers[i]
		if(!is_user_connected(iPlayer))
			continue
				
		get_user_name(iPlayer, szName, sizeof szName - 1)
		num_to_str(iPlayer, szTempID, charsmax(szTempID))
		menu_additem(iMenu, szName, szTempID)
	}
	menu_setprop(iMenu, MPROP_EXITNAME, "Go back..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}

public player_set_menu_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		menu_destroy(iMenu)
		ToggleRankMenu(id)
		g_iMenuType[id] = 0
		return PLUGIN_HANDLED
	}

	new szData[6], iName[64], iAccess, iCallBack
	menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), iName, charsmax(iName), iCallBack)
	
	g_iPlayer[id] = str_to_num(szData)


	if (!is_user_connected(g_iPlayer[id]))
	{
		g_iPlayer[id] = 0
		#if defined _cromchat_included
		CC_SendMatched(id, CC_COLOR_GREY, "&x03The player you chose is not in the server.")
		#else
		client_print(id, print_chat, "* The player you chose is not in the server.")
		#endif
		return PLUGIN_HANDLED
	}

	new szRankName[64]
	get_user_rank_name(g_iPlayer[id], szRankName, charsmax(szRankName))

	#if defined _cromchat_included
	CC_SendMatched(id, CC_COLOR_GREY, "&x03Player &x04%s &x03is &x04Level %i %s &x03with &x04%i Experience&x03.", iName, get_user_level(g_iPlayer[id]), szRankName, get_user_exp(g_iPlayer[id]))
	#else
	client_print(id, print_chat, "* Player %s is Level %i %s with %i Experience.", iName, get_user_level(g_iPlayer[id]), szRankName, get_user_exp(g_iPlayer[id]))
	#endif

	switch(g_iMenuType[id])
	{
		case 1..2: client_cmd(id, "messagemode XP_Amount")
		case 3: SetRankMenu(id)
		case 4: client_cmd(id, "messagemode Set_Level")
	}
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}

public Command_XP_Amount(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
		
	if (!g_iPlayer[id])
		return PLUGIN_HANDLED
		
	if (!is_user_connected(g_iPlayer[id]))
	{
		#if defined _cromchat_included
		CC_SendMatched(id, CC_COLOR_GREY, "&x03The player you chose is not in the server.")
		#else
		client_print(id, print_chat, "* The player you chose is not in the server.")
		#endif
		return PLUGIN_HANDLED
	}
	
	new szArgs[12]
	read_argv(1, szArgs, charsmax(szArgs))
	
	new iXP = str_to_num(szArgs)
	
	new szNames[2][32]
	get_user_name(id, szNames[0], charsmax(szNames[]))
	get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))
	
	switch (g_iMenuType[id])
	{
		case 1:
		{
			set_user_exp(g_iPlayer[id], get_user_exp(g_iPlayer[id]) + iXP)
			#if defined _cromchat_included
			CC_SendMatched(0, CC_COLOR_GREY, "&x03%s&x01 gave &x04%i XP &x01to &x03%s&x01.", szNames[0], iXP, szNames[1])
			#else
			client_print(0, print_chat, "* %s gave %i XP to %s.", szNames[0], iXP, szNames[1])
			#endif
		}
		case 2:
		{
			set_user_exp(g_iPlayer[id], get_user_exp(g_iPlayer[id]) - iXP)
			#if defined _cromchat_included
			CC_SendMatched(0, CC_COLOR_GREY, "&x03%s&x01 took &x04%i XP &x01from &x03%s&x01.", szNames[0], iXP, szNames[1])
			#else
			client_print(0, print_chat, "* %s took %i XP from %s.", szNames[0], iXP, szNames[1])
			#endif
		}
	}
	g_iPlayer[id] = 0
	g_iMenuType[id] = 0
	
	ToggleRankMenu(id)
	
	return PLUGIN_HANDLED
}

public SetRankMenu(id)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "Choose Rank to Set")
	new iMenu = menu_create(szTitle, "set_rank_handler")
	
	//new szItem[100]
	new iNum[6]
	new szRankName[64]
	
	for(new i = 0; i <= get_total_ranks(); i++)
	{
		get_rank_name_by_level(i, szRankName, charsmax(szRankName))

		// Debug test message
		//formatex(szItem, charsmax(szItem), "%s - Level %i", szRankName, PlayerData[i][LEVEL])
		formatex(iNum, charsmax(iNum), "%i", i)
		
		menu_additem(iMenu, szRankName, iNum)
	}
	menu_setprop(iMenu, MPROP_EXITNAME, "Go back..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public set_rank_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		ToggleRankMenu(id)
		return PLUGIN_HANDLED
	}
	
	new szData[6], iAccess, iCallBack
	menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), _, _, iCallBack)
	
	new iLevel = str_to_num(szData)
	
	if (g_iPlayer[id] >= 0 || g_iPlayer[id] <= get_total_ranks())
	{
		set_user_rank(g_iPlayer[id], iLevel)
		
		new szNames[2][32]
		get_user_name(id, szNames[0], charsmax(szNames[]))
		get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))
		
		new szRankName[64]
		get_user_rank_name(g_iPlayer[id], szRankName, charsmax(szRankName))
		
		#if defined _cromchat_included
		CC_SendMatched(0, CC_COLOR_GREY, "&x03%s&x01 set &x04Level %i %s &x01to &x03%s&x01.", szNames[0], iLevel, szRankName, szNames[1])
		#else
		client_print(0, print_chat, "* %s set Level %i %s to %s.", szNames[0], iLevel, szRankName, szNames[1])
		#endif
	}
	
	g_iPlayer[id] = 0
	g_iMenuType[id] = 0
	
	ToggleRankMenu(id)
	
	menu_destroy(iMenu)
	return PLUGIN_HANDLED
}
public Command_Set_Level(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
		
	if (!g_iPlayer[id])
		return PLUGIN_HANDLED
		
	if (!is_user_connected(g_iPlayer[id]))
	{
		#if defined _cromchat_included
		CC_SendMatched(id, CC_COLOR_GREY, "&x03The player you chose is not in the server.")
		#else
		client_print(id, print_chat, "* The player you chose is not in the server.")
		#endif
		return PLUGIN_HANDLED
	}
	
	new szArgs[12]
	read_argv(1, szArgs, charsmax(szArgs))
	
	new iLevel = str_to_num(szArgs)
	
	if (iLevel > get_total_ranks() || iLevel < 0)
	{
		#if defined _cromchat_included
		CC_SendMatched(id, CC_COLOR_GREY, "&x03You can set level in between&x04 0 &x03and &x04%i &x03only!", get_total_ranks())
		#else
		client_print(id, print_chat, "* You can set level in between 0 and %i only!")
		#endif

		PlayerSetMenu(id, 4)
		return PLUGIN_HANDLED;
	}
	
	new szNames[2][32]
	get_user_name(id, szNames[0], charsmax(szNames[]))
	get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))

	set_user_rank(g_iPlayer[id], iLevel)
	
	new szRankName[64]
	get_user_rank_name(g_iPlayer[id], szRankName, charsmax(szRankName))
	
	#if defined _cromchat_included
	CC_SendMatched(0, CC_COLOR_GREY, "&x03%s &x01set &x04Level %i %s &x01to &x03%s", szNames[0], iLevel, szRankName, szNames[1])
	#else
	client_print(0, print_chat, "* %s set Level %i %s to %s", szNames[0], iLevel, szRankName, szNames[1])
	#endif

	g_iPlayer[id] = 0
	g_iMenuType[id] = 0
	
	ToggleRankMenu(id)
	
	return PLUGIN_HANDLED
}
ranksystem_hudinfo.sma

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

#include <amxmodx>

/* Common include libraries */
#include <engine>
#include <rank_system_huehue>

#define PLUGIN  "Addon: Rank Information"
#define VERSION "1.1"
#define AUTHOR  "Huehue @ AMXX-BG.INFO"
#define GAMETRACKER "rank_system_info"

new g_SyncHudMessage

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar(GAMETRACKER, AUTHOR, FCVAR_SERVER | FCVAR_SPONLY)
	set_cvar_string(GAMETRACKER, AUTHOR)

	g_SyncHudMessage = CreateHudSyncObj()

	new iEnt = create_entity("info_target")
	entity_set_string(iEnt, EV_SZ_classname, "task_entity")
										
	register_think("task_entity", "HudEntity")
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 1.0)

	register_event("StatusValue", "EventStatusValue", "b", "1>0", "2>0")
}

public HudEntity(iEnt)
{
	static iPlayers[32], iNum, id, iLen
	get_players(iPlayers, iNum, "ach")
			
	for (new i = 0; i < iNum; i++)
	{
		id = iPlayers[i]

		new szRankName[2][64], szHudMessage[128]
		get_user_rank_name(id, szRankName[0], charsmax(szRankName[]))
		get_user_next_rank_name(id, szRankName[1], charsmax(szRankName[]))
				
		iLen = formatex(szHudMessage, charsmax(szHudMessage), "Rank: %s^n", szRankName[0])
				

		if (get_user_level(id) > get_total_ranks()-1)
		{
			iLen += formatex(szHudMessage[iLen], charsmax(szHudMessage) - iLen, "Experience: %i", get_user_exp(id))
		}
		else
		{
			iLen += formatex(szHudMessage[iLen], charsmax(szHudMessage) - iLen, "Experience: %i/%i^nNext Rank: %s",
				get_user_exp(id), get_user_next_exp(id), szRankName[1])
		}

		static szColors[12], szRed[6], szGreen[6], szBlue[6], iRed, iGreen, iBlue
		get_hud_colors(szColors, charsmax(szColors))

		parse(szColors, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))

		iRed = str_to_num(szRed)
		iGreen = str_to_num(szGreen)
		iBlue = str_to_num(szBlue)

		set_hudmessage(iRed, iGreen, iBlue, get_hud_position_x(), get_hud_position_y(), get_hud_effect(), 0.8, 0.8)
		ShowSyncHudMsg(id, g_SyncHudMessage, "%s", szHudMessage)
				
	}
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.6)
}

public EventStatusValue(const id)
{
	static szMessage[34], iPlayer, iAux
	get_user_aiming(id, iPlayer, iAux)
	
	if (is_user_alive(iPlayer))
	{
		static szRankName[64]
		get_user_rank_name(iPlayer, szRankName, charsmax(szRankName))

		static szFlag[6]
		get_vip_flag(szFlag, charsmax(szFlag))

		if (get_user_flags(iPlayer) & read_flags(szFlag))
			formatex(szMessage, charsmax(szMessage), "1 VIP: %%p2 | Rank: %s | Experience: %s", szRankName, get_user_exp(iPlayer))
		else
			formatex(szMessage, charsmax(szMessage), "1 PLAYER: %%p2 | Rank: %s | Experience: %s", szRankName, get_user_exp(iPlayer))

		message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusText") , _, id)
		write_byte(0)
		write_string(szMessage)
		message_end()
	}
}
:dance: connect 88.99.12.243:27019 :dance:

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Заявка:ТРИ плъгина в ЕДИН

Мнение от thoughtz » 23 Авг 2018, 12:08

А смисълът е?

Аватар
antonstoqnovv
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 15 Окт 2017, 10:40
Се отблагодари: 9 пъти
Получена благодарност: 2 пъти

Заявка:ТРИ плъгина в ЕДИН

Мнение от antonstoqnovv » 23 Авг 2018, 12:55

Да не са 3 плъгина а само един ..
:dance: connect 88.99.12.243:27019 :dance:

Аватар
7331
Извън линия
Потребител
Потребител
Мнения: 52
Регистриран на: 06 Авг 2018, 13:23
Местоположение: nextmap
Се отблагодари: 18 пъти
Получена благодарност: 5 пъти

Заявка:ТРИ плъгина в ЕДИН

Мнение от 7331 » 23 Авг 2018, 13:07

Интересното тук е, че искаш от 3 различни плъгина да стане 1? .. Всеки от тези плъгини които си дал, изпълнява различна функция.
Mariela написа: 23 Авг 2018, 12:08 А смисълът е?
:pepo_christ2:

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

Заявка:ТРИ плъгина в ЕДИН

Мнение от OciXCrom » 23 Авг 2018, 13:56

Защо си мислиш, че ще е по-добре ако всичко се наблъска в един плъгин? Заявката няма да бъде изпълнена, тъй като плъгините си работят както трябва независимо дали са заедно или отделно - няма никакъв плюс от съединяване на всички три в един. Темата се заключва.

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

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

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 14 госта