[ZP] Заявка за DHUD Best Players

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
beready4me
Извън линия
Потребител
Потребител
Мнения: 25
Регистриран на: 07 Апр 2020, 00:49
Се отблагодари: 6 пъти
Получена благодарност: 1 път

[ZP] Заявка за DHUD Best Players

Мнение от beready4me » 21 Апр 2020, 16:50

Търся плъгин, който в края на рунда да показва следната информация от ляво:

Best Players:
Solomon4o: 7 Infected
beready4me - 9 Kills
OciXCrom- 9328 DMG

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 489
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

[ZP] Заявка за DHUD Best Players

Мнение от atmax » 21 Апр 2020, 17:03

Тей като гледам, този dhud ти трябва за зомби сървър. Hud генератор има и в сайта, но като не знаем параметрите, които трябва да се покажат в тоя hud не можем да го направим :Д
Rest in peace my friend I always will remember you! 🖤👊

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

[ZP] Заявка за DHUD Best Players

Мнение от OciXCrom » 21 Апр 2020, 17:13

Демек качи .inc файла на мода който ползваш.

Аватар
beready4me
Извън линия
Потребител
Потребител
Мнения: 25
Регистриран на: 07 Апр 2020, 00:49
Се отблагодари: 6 пъти
Получена благодарност: 1 път

[ZP] Заявка за DHUD Best Players

Мнение от beready4me » 21 Апр 2020, 17:31

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

/*================================================================================
	
	---------------------------------------
	-*- Zombie Plague 4.3 Includes File -*-
	---------------------------------------
	
	~~~~~~~~~~
	- How To -
	~~~~~~~~~~
	
	To make use of the Zombie Plague API features in your plugin, just
	add the following line at the beginning of your script:
	
	#include <zombieplague>
	
	~~~~~~~~~~~
	- Natives -
	~~~~~~~~~~~
	
	These work just like any other functions: you may have to pass
	parameters and they usually return values.
	
	Example:
	
	if ( is_user_alive( id ) && zp_get_user_zombie( id ) )
	{
		server_print( "Player %d is alive and a zombie", id )
	}
	
	~~~~~~~~~~~~
	- Forwards -
	~~~~~~~~~~~~
	
	Forwards get called whenever an event happens during the game.
	You need to make a public callback somewhere on your script,
	and it will automatically be triggered when the event occurs.
	
	Example:
	
	public zp_user_infected_post( id, infector, nemesis )
	{
		if ( !infector || nemesis )
			return;
		
		server_print( "Player %d just got infected by %d!", id, infector )
	}
	
	Also, take note of cases when there's a suffix:
	
	* _pre  : means the forward will be called BEFORE the event happens
	* _post : means it will be called AFTER the event takes place
	
=================================================================================*/

#if defined _zombieplague_included
  #endinput
#endif
#define _zombieplague_included

/* Teams for zp_register_extra_item() */
#define ZP_TEAM_ZOMBIE (1<<0)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_TEAM_NEMESIS (1<<2)
#define ZP_TEAM_SURVIVOR (1<<3)

/* Game modes for zp_round_started() */
enum
{
	MODE_INFECTION = 1,
	MODE_NEMESIS,
	MODE_SURVIVOR,
	MODE_SWARM,
	MODE_MULTI,
	MODE_PLAGUE
}

/* Winner teams for zp_round_ended() */
enum
{
	WIN_NO_ONE = 0,
	WIN_ZOMBIES,
	WIN_HUMANS
}

/* Custom forward return values */
#define ZP_PLUGIN_HANDLED 97

/**
 * Returns whether a player is a zombie.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_zombie(id)

/**
 * Returns whether a player is a nemesis.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_nemesis(id)

/**
 * Returns whether a player is a survivor.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_survivor(id)

/**
 * Returns whether a player is the first zombie.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_first_zombie(id)

/**
 * Returns whether a player is the last zombie.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_last_zombie(id)

/**
 * Returns whether a player is the last human.
 *
 * @param id		Player index.
 * @return		True if it is, false otherwise.
 */
native zp_get_user_last_human(id)

/**
 * Returns a player's current zombie class ID.
 *
 * @param id		Player index.
 * @return		Internal zombie class ID, or -1 if not yet chosen.
 */
native zp_get_user_zombie_class(id)

/**
 * Returns a player's next zombie class ID (for the next infection).
 *
 * @param id		Player index.
 * @return		Internal zombie class ID, or -1 if not yet chosen.
 */
native zp_get_user_next_class(id)

/**
 * Sets a player's next zombie class ID (for the next infection).
 *
 * @param id		Player index.
 * @param classid	A valid zombie class ID.
 * @return		True on success, false otherwise.
 */
native zp_set_user_zombie_class(id, classid)

/**
 * Returns a player's ammo pack count.
 *
 * @param id		Player index.
 * @return		Number of ammo packs owned.
 */
native zp_get_user_ammo_packs(id)

/**
 * Sets a player's ammo pack count.
 *
 * @param id		Player index.
 * @param amount	New quantity of ammo packs owned.
 */
native zp_set_user_ammo_packs(id, amount)

/**
 * Returns the default maximum health of a zombie.
 *
 * Note: Takes into account first zombie's HP multiplier.
 *
 * @param id		Player index.
 * @return		Maximum amount of health points, or -1 if not a normal zombie.
 */
native zp_get_zombie_maxhealth(id)

/**
 * Returns a player's custom flashlight batteries charge.
 *
 * @param id		Player index.
 * @return		Charge percent (0 to 100).
 */
native zp_get_user_batteries(id)

/**
 * Sets a player's custom flashlight batteries charge.
 *
 * @param id		Player index.
 * @param value		New charge percent (0 to 100).
 */
native zp_set_user_batteries(id, charge)

/**
 * Returns whether a player has night vision.
 *
 * @param id		Player index.
 * @return		True if it has, false otherwise.
 */
native zp_get_user_nightvision(id)

/**
 * Sets whether a player has night vision.
 *
 * @param id		Player index.
 * @param set		True to give, false for removing it.
 */
native zp_set_user_nightvision(id, set)

/**
 * Forces a player to become a zombie.
 *
 * Note: Unavailable for last human/survivor.
 *
 * @param id		Player index to be infected.
 * @param infector	Player index who infected him (optional).
 * @param silent	If set, there will be no HUD messages or infection sounds.
 * @param rewards	Whether to show DeathMsg and reward frags, hp, and ammo packs to infector.
 * @return		True on success, false otherwise.
 */
native zp_infect_user(id, infector = 0, silent = 0, rewards = 0)

/**
 * Forces a player to become a human.
 *
 * Note: Unavailable for last zombie/nemesis.
 *
 * @param id		Player index to be cured.
 * @param silent	If set, there will be no HUD messages or antidote sounds.
 * @return		True on success, false otherwise.
 */
native zp_disinfect_user(id, silent = 0)

/**
 * Forces a player to become a nemesis.
 *
 * Note: Unavailable for last human/survivor.
 *
 * @param id		Player index to turn into nemesis.
 * @return		True on success, false otherwise.
 */
native zp_make_user_nemesis(id)

/**
 * Forces a player to become a survivor.
 *
 * Note: Unavailable for last zombie/nemesis.
 *
 * @param id		Player index to turn into survivor.
 * @return		True on success, false otherwise.
 */
native zp_make_user_survivor(id)

/**
 * Respawns a player into a specific team.
 *
 * @param id		Player index to be respawned.
 * @param team		Team to respawn the player into (ZP_TEAM_ZOMBIE or ZP_TEAM_HUMAN).
 * @return		True on success, false otherwise.
 */
native zp_respawn_user(id, team)

/**
 * Forces a player to buy an extra item.
 *
 * @param id		Player index.
 * @param itemid	A valid extra item ID.
 * @param ignorecost	If set, item's cost won't be deduced from player.
 * @return		True on success, false otherwise.
 */
native zp_force_buy_extra_item(id, itemid, ignorecost = 0)

/**
 * Overrides ZP player model with a different custom model.
 *
 * Note: This will last until player's next infection/humanization/respawn.
 *
 * Note: Don't call more often than absolutely needed.
 *
 * @param id		Player index.
 * @param newmodel	Model name.
 * @param modelindex	Modelindex (optional).
 */
native zp_override_user_model(id, const newmodel[], modelindex = 0)

/**
 * Returns whether the ZP round has started, i.e. first zombie
 * has been chosen or a game mode has begun.
 *
 * @return		0 - Round not started
 *			1 - Round started
 *			2 - Round starting
 */
native zp_has_round_started()

/**
 * Returns whether the current round is a nemesis round.
 *
 * @return		True if it is, false otherwise.
 */
native zp_is_nemesis_round()

/**
 * Returns whether the current round is a survivor round.
 *
 * @return		True if it is, false otherwise.
 */
native zp_is_survivor_round()

/**
 * Returns whether the current round is a swarm round.
 *
 * @return		True if it is, false otherwise.
 */
native zp_is_swarm_round()

/**
 * Returns whether the current round is a plague round.
 *
 * @return		True if it is, false otherwise.
 */
native zp_is_plague_round()

/**
 * Returns number of alive zombies.
 *
 * @return		Zombie count.
 */
native zp_get_zombie_count()

/**
 * Returns number of alive humans.
 *
 * @return		Human count.
 */
native zp_get_human_count()

/**
 * Returns number of alive nemesis.
 *
 * @return		Nemesis count.
 */
native zp_get_nemesis_count()

/**
 * Returns number of alive survivors.
 *
 * @return		Survivor count.
 */
native zp_get_survivor_count()

/**
 * Registers a custom item which will be added to the extra items menu of ZP.
 *
 * Note: The returned extra item ID can be later used to catch item
 * purchase events for the zp_extra_item_selected() forward.
 *
 * Note: ZP_TEAM_NEMESIS and ZP_TEAM_SURVIVOR can be used to make
 * an item available to Nemesis and Survivors respectively.
 *
 * @param name		Caption to display on the menu.
 * @param cost		Ammo packs to be deducted on purchase.
 * @param teams		Bitsum of teams it should be available for.
 * @return		An internal extra item ID, or -1 on failure.
 */
native zp_register_extra_item(const name[], cost, teams)

/**
 * Registers a custom class which will be added to the zombie classes menu of ZP.
 *
 * Note: The returned zombie class ID can be later used to identify
 * the class when calling the zp_get_user_zombie_class() natives.
 *
 * @param name		Caption to display on the menu.
 * @param info		Brief description of the class.
 * @param model		Player model to be used.
 * @param clawmodel	Claws model to be used.
 * @param hp		Initial health points.
 * @param speed		Maximum speed.
 * @param gravity	Gravity multiplier.
 * @param knockback	Knockback multiplier.
 * @return		An internal zombie class ID, or -1 on failure.
 */
native zp_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback)

/**
 * Returns an extra item's ID.
 *
 * @param name		Item name to look for.
 * @return		Internal extra item ID, or -1 if not found.
 */
native zp_get_extra_item_id(const name[])

/**
 * Returns a zombie class' ID.
 *
 * @param name		Class name to look for.
 * @return		Internal zombie class ID, or -1 if not found.
 */
native zp_get_zombie_class_id(const name[])

/**
 * Returns a zombie class' description (passed by reference).
 *
 * @param classid		Internal zombie class ID.
 * @param info			The buffer to store the string in.
 * @param len			Character size of the output buffer.
 * @return			True on success, false otherwise.
 */
native zp_get_zombie_class_info(classid, info[], len)

/**
 * Called when the ZP round starts, i.e. first zombie
 * is chosen or a game mode begins.
 *
 * @param gamemode	Mode which has started.
 * @param id		Affected player's index (if applicable).
 */
forward zp_round_started(gamemode, id)

/**
 * Called when the round ends.
 *
 * @param winteam	Team which has won the round.
 */
forward zp_round_ended(winteam)

/**
 * Called when a player gets infected.
 *
 * @param id		Player index who was infected.
 * @param infector	Player index who infected him (if applicable).
 * @param nemesis	Whether the player was turned into a nemesis.
 */
forward zp_user_infected_pre(id, infector, nemesis)
forward zp_user_infected_post(id, infector, nemesis)

/**
 * Called when a player turns back to human.
 *
 * @param id		Player index who was cured.
 * @param survivor	Whether the player was turned into a survivor.
 */
forward zp_user_humanized_pre(id, survivor)
forward zp_user_humanized_post(id, survivor)

/**
 * Called on a player infect/cure attempt. You can use this to block
 * an infection/humanization by returning ZP_PLUGIN_HANDLED in your plugin.
 *
 * Note: Right now this is only available after the ZP round starts, since some
 * situations (like blocking a first zombie's infection) are not yet handled.
 */
forward zp_user_infect_attempt(id, infector, nemesis)
forward zp_user_humanize_attempt(id, survivor)

/**
 * Called when a player buys an extra item from the ZP menu.
 *
 * Note: You can now return ZP_PLUGIN_HANDLED in your plugin to block
 * the purchase and the player will be automatically refunded.
 *
 * @param id		Player index of purchaser.
 * @param itemid	Internal extra item ID.
 */
forward zp_extra_item_selected(id, itemid)

/**
 * Called when a player gets unfrozen (frostnades).
 *
 * @param id		Player index.
 */
forward zp_user_unfrozen(id)

/**
 * Called when a player becomes the last zombie.
 *
 * Note: This is called for the first zombie too.
 *
 * @param id		Player index.
 */
forward zp_user_last_zombie(id)

/**
 * Called when a player becomes the last human.
 *
 * @param id		Player index.
 */
forward zp_user_last_human(id)


/**
 * @deprecated - Do not use!
 * For backwards compatibility only.
 */
#define ZP_TEAM_ANY 0
#define ZP_TEAM_NO_ONE 0

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

[ZP] Заявка за DHUD Best Players

Мнение от OciXCrom » 21 Апр 2020, 21:11

Не е тествано:

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

#include <amxmodx>
#include <hamsandwich>
#include <zombieplague>

#if AMXX_VERSION_NUM < 183 || !defined set_dhudmessage
	#tryinclude <dhudmessage>

	#if !defined _dhudmessage_included
		#error "dhudmessage.inc" is missing in your "scripting/include" folder. Download it from: "https://amxx-bg.info/forum/inc/"
	#endif
#endif

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif

#if !defined MAX_NAME_LENGTH
const MAX_NAME_LENGTH = 32
#endif

#define STATS_COLOR 0, 255, 0
#define STATS_POSITION 0.04, 0.36
#define STATS_DURATION 5.0
#define STATS_EFFECT 0

enum _:PlayerStats
{
	Infections,
	Kills,
	Damage
}

new const SORTING_FUNCTIONS[][] = { "sort_players_by_infections", "sort_players_by_kills", "sort_players_by_damage" }

new g_iPlayerStats[MAX_PLAYERS + 1][PlayerStats]

public plugin_init()
{
	register_plugin("Best Player DHUD", "1.0", "OciXCrom")
	register_logevent("OnRoundEnd", 2, "1=Round_End")
	register_event("DeathMsg", "OnPlayerKilled", "a")
	RegisterHam(Ham_TakeDamage, "player", "OnTakeDamage", 1)
}

public client_putinserver(id)
{
	g_iPlayerStats[id][Infections] = 0
	g_iPlayerStats[id][Kills] = 0
	g_iPlayerStats[id][Damage] = 0
}

public zp_user_infected_post(id, iInfector)
{
	g_iPlayerStats[iInfector][Infections]++
}

public OnPlayerKilled()
{
	new iAttacker = read_data(1), iVictim = read_data(2)

	if(is_user_connected(iAttacker) && iAttacker != iVictim)
	{
		g_iPlayerStats[iAttacker][Kills]++
	}
}

public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage)
{
	g_iPlayerStats[iAttacker][Damage] += floatround(fDamage)
}

public OnRoundEnd()
{
	new iPlayers[MAX_PLAYERS], szName[sizeof(SORTING_FUNCTIONS)][MAX_NAME_LENGTH], iBest[sizeof(SORTING_FUNCTIONS)], iPnum
	get_players(iPlayers, iPnum)

	if(!iPnum)
	{
		return
	}

	for(new i; i < sizeof(SORTING_FUNCTIONS); i++)
	{
		SortCustom1D(iPlayers, iPnum, SORTING_FUNCTIONS[i])
		iBest[i] = iPlayers[0]
		get_user_name(iBest[i], szName[i], charsmax(szName[]))
	}

	set_dhudmessage(STATS_COLOR, STATS_POSITION, .effects = STATS_EFFECT, .holdtime = STATS_DURATION)
	show_dhudmessage(0, "Best Players:^n%s: %i Infected^n%s: %i Killed^n%s: %i Damage",\
	szName[Infections], g_iPlayerStats[iBest[Infections]][Infections], szName[Kills], g_iPlayerStats[iBest[Kills]][Kills], szName[Damage], g_iPlayerStats[iBest[Damage]][Damage])

	arrayset(g_iPlayerStats[Infections], 0, sizeof(g_iPlayerStats[]))
	arrayset(g_iPlayerStats[Kills], 0, sizeof(g_iPlayerStats[]))
	arrayset(g_iPlayerStats[Damage], 0, sizeof(g_iPlayerStats[]))
}

public sort_players_by_infections(id1, id2)
{
	return g_iPlayerStats[id2][Infections] - g_iPlayerStats[id1][Infections]
}

public sort_players_by_kills(id1, id2)
{
	return g_iPlayerStats[id2][Kills] - g_iPlayerStats[id1][Kills]
}

public sort_players_by_damage(id1, id2)
{
	return g_iPlayerStats[id2][Damage] - g_iPlayerStats[id1][Damage]
}

Аватар
beready4me
Извън линия
Потребител
Потребител
Мнения: 25
Регистриран на: 07 Апр 2020, 00:49
Се отблагодари: 6 пъти
Получена благодарност: 1 път

[ZP] Заявка за DHUD Best Players

Мнение от beready4me » 21 Апр 2020, 22:38

OciXCrom написа:
21 Апр 2020, 21:11
Не е тествано:

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

#include <amxmodx>
#include <hamsandwich>
#include <zombieplague>

#if AMXX_VERSION_NUM < 183 || !defined set_dhudmessage
	#tryinclude <dhudmessage>

	#if !defined _dhudmessage_included
		#error "dhudmessage.inc" is missing in your "scripting/include" folder. Download it from: "https://amxx-bg.info/forum/inc/"
	#endif
#endif

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif

#if !defined MAX_NAME_LENGTH
const MAX_NAME_LENGTH = 32
#endif

#define STATS_COLOR 0, 255, 0
#define STATS_POSITION 0.04, 0.36
#define STATS_DURATION 5.0

enum _:PlayerStats
{
	Infections,
	Kills,
	Damage
}

new const SORTING_FUNCTIONS[][] = { "sort_players_by_infections", "sort_players_by_kills", "sort_players_by_damage" }

new g_iPlayerStats[MAX_PLAYERS + 1][PlayerStats]

public plugin_init()
{
	register_plugin("Best Player DHUD", "1.0", "OciXCrom")
	register_logevent("OnRoundEnd", 2, "1=Round_End")
	register_event("DeathMsg", "OnPlayerKilled", "a")
	RegisterHam(Ham_TakeDamage, "player", "OnTakeDamage", 1)
}

public client_putinserver(id)
{
	g_iPlayerStats[id][Infections] = 0
	g_iPlayerStats[id][Kills] = 0
	g_iPlayerStats[id][Damage] = 0
}

public zp_user_infected_post(id, iInfector)
{
	g_iPlayerStats[iInfector][Infections]++
}

public OnPlayerKilled()
{
	new iAttacker = read_data(1), iVictim = read_data(2)

	if(is_user_connected(iAttacker) && iAttacker != iVictim)
	{
		g_iPlayerStats[iAttacker][Kills]++
	}
}

public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage)
{
	g_iPlayerStats[iAttacker][Damage] += floatround(fDamage)
}

public OnRoundEnd()
{
	new iPlayers[MAX_PLAYERS], szName[sizeof(SORTING_FUNCTIONS)][MAX_NAME_LENGTH], iBest[sizeof(SORTING_FUNCTIONS)], iPnum
	get_players(iPlayers, iPnum)

	if(!iPnum)
	{
		return
	}

	for(new i; i < sizeof(SORTING_FUNCTIONS); i++)
	{
		SortCustom1D(iPlayers, iPnum, SORTING_FUNCTIONS[i])
		iBest[i] = iPlayers[0]
		get_user_name(iBest[i], szName[i], charsmax(szName[]))
	}

	set_dhudmessage(STATS_COLOR, STATS_POSITION, .holdtime = STATS_DURATION)
	show_dhudmessage(0, "Best Players:^n^n%s: %i Infected^n%s: %i Killed^n%s: %i Damage",\
	szName[Infections], g_iPlayerStats[iBest[Infections]][Infections], szName[Kills], g_iPlayerStats[iBest[Kills]][Kills], szName[Damage], g_iPlayerStats[iBest[Damage]][Damage])

	arrayset(g_iPlayerStats[Infections], 0, sizeof(g_iPlayerStats[]))
	arrayset(g_iPlayerStats[Kills], 0, sizeof(g_iPlayerStats[]))
	arrayset(g_iPlayerStats[Damage], 0, sizeof(g_iPlayerStats[]))
}

public sort_players_by_infections(id1, id2)
{
	return g_iPlayerStats[id2][Infections] - g_iPlayerStats[id1][Infections]
}

public sort_players_by_kills(id1, id2)
{
	return g_iPlayerStats[id2][Kills] - g_iPlayerStats[id1][Kills]
}

public sort_players_by_damage(id1, id2)
{
	return g_iPlayerStats[id2][Damage] - g_iPlayerStats[id1][Damage]
}
Работи отлично, само има един недостатък. Текста се появява като пишеща машина, и няма време да покаже целият текст, преди започването на новият рунд. Това би ли могло да се поправи? Искам директно да изписва всичко, без ефекти. За да се вижда хубаво.

Давам пример до къде стига, преди да изчезне с този ефект - пишеща машина.
Изображение

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

[ZP] Заявка за DHUD Best Players

Мнение от OciXCrom » 22 Апр 2020, 14:07

Изображение

При мен няма такъв проблем. Ефект на пишеща машина не съм слагал. Ако си го променил, премахни го, защото няма достатъчно време до края на рунда да се изпише цялото съобщение ако е с този ефект.

//Edit: сега се загледах, че в dhudmessage библиотеката по подразбиране е зададен ефект на пишеща машина, което е разлино от вградената функция в АМХХ 1.9. Редактирах кода.

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

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

Кой е на линия

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