Page 1 of 3

Best Defender

Posted: 24 Feb 2017, 09:33
by Raheem
Humans Best Defender

Description:
  • This plugin will get the best defender in Humans teams based on the damage made. It will compare all players damage and the highest damage is the best defender. Best defender will be awarded double jumb and will be printed at the new round that he was best defender in the previous round.
Cvars:
  • ze_give_multijump 1 Enable or Disable MultiJump Award? 1 = Enable | 0 = Disable
  • ze_best_def_chat_notice 1 Enable or Disable Chat Notice? 1 = Enable | 0 = Disable
  • ze_best_def_give_xp 40 XP amount to be given For Best Defender? If you make it 0 he won't get anything.
  • ze_best_def_give_ec 20 Escape Coins amount to be given For Best Defender? If you make it 0 he won't get anything.
  • ze_show_best_def_stats 1 State Message: 0 = Disabled | 1 = Chat Message | 2 = Hud Message | 3 = DHud Message
Commands:
  • say /mydamage Show player his damage and how much damage needed to became Best Defender.
Installation & Instructions:
Changelog:
  • Spoiler!
    Version: 1.0
    • First Release.
    Version: 1.1
    • New Algorithm used to detect Highest one made damage.
    • New Cvar Added so you can give Best Defender some XP.
    • New Cvar Added so you can give Best Defender Some Escape Coins.
    • Chat Notice Message Updated with XP, EC Amounts.
    • Some Problems in Spawn Event has been fixed.
    Version: 1.2
    • Fixed chat message problem it was show wrong values.
    • Fixed If no one make damage. Message won't appear and No one will be awarded.
    • Fixed problem related to resting damage counter at new round.
    • Added New Chat/Hud/DHud message for stats by command.
    Version: 1.3 [Current Version]
    • Fixed some problems in code, I don't know how i make these mistakes.
    • Add damage to show to the best defender when he say /mydamage
Screenshots:
  • ImageImageImageImageImageImageImageImage

Downloads:

Re: Best Defender

Posted: 12 Mar 2017, 12:15
by johnnysins2000
Instead of Multijump why don't we reward him Some Escape Coins ?

Re: Best Defender

Posted: 12 Mar 2017, 21:15
by Mohamed Alaa
johnnysins2000 wrote:
2 Years Ago
Instead of Multijump why don't we reward him Some Escape Coins ?
It does both, it'd be better if he made Cvar! :P

Re: Best Defender

Posted: 15 Mar 2017, 12:49
by Raheem
I'll make this in the next Update nice idea.

Re: Best Defender

Posted: 26 Mar 2017, 18:45
by johnnysins2000
Raheem wrote:
2 Years Ago
I'll make this in the next Update nice idea.

And Some XP too if the User is using Level xp system

Re: Best Defender

Posted: 28 Mar 2017, 20:22
by Raheem
When i get time i'll make these nice ideas in the next versions.

Re: Best Defender

Posted: 07 Apr 2017, 09:44
by Raheem
New version Released.
Current Version Now: 1.1

Re: Best Defender

Posted: 07 May 2017, 07:16
by sam_bhosale4
Good plugins but needs some fixes raheem bro!
It Gives xp and coins even if no one defends! and shows 0 defend awards!
Please fix the values like minimum 800 or 1000 damage done needed to become best defender otherwise it keeps giving free xp and coins!
so it will balance it!
thanks!

Re: Best Defender

Posted: 07 May 2017, 11:06
by Raheem
As best infector, Change:
  • Code: Select all

    	if (get_pcvar_num(cvar_give_xp) != 0 || get_pcvar_num(cvar_give_escape_coins) != 0)
    	{
    		if (g_iBestDefIndex == 0 || g_iBestDefIndex != id)
    			return
    		
    		ze_set_escape_coins(g_iBestDefIndex, get_pcvar_num(cvar_give_escape_coins) + ze_get_escape_coins(g_iBestDefIndex))
    		ze_set_user_xp(g_iBestDefIndex, get_pcvar_num(cvar_give_xp) + ze_get_user_xp(g_iBestDefIndex))
    	}
TO:
  • Code: Select all

    	if (get_pcvar_num(cvar_give_xp) != 0 || get_pcvar_num(cvar_give_escape_coins) != 0)
    	{
    		if (g_iBestDefIndex == 0 || g_iBestDefIndex != id || g_fDamage[id] <= 200.0)
    			return
    		
    		ze_set_escape_coins(g_iBestDefIndex, get_pcvar_num(cvar_give_escape_coins) + ze_get_escape_coins(g_iBestDefIndex))
    		ze_set_user_xp(g_iBestDefIndex, get_pcvar_num(cvar_give_xp) + ze_get_user_xp(g_iBestDefIndex))
    	}
Change the 200 to any value as you need: g_fDamage[id] <= 200.0

It will give the best defender the reward if the damage he made is higher than 200.0

Re: Best Defender

Posted: 06 Jun 2017, 18:02
by johnnysins2000
this is for Sam! Sam try this ... it worked for me !

Code: Select all

#include <zombie_escape>
#include <ze_multijump>
#include <ze_levels>

// Variables
new Float:g_fDamage[33], g_iBestDefIndex

// Cvars
new cvar_give_multijump, cvar_show_chat_notice, cvar_give_xp, cvar_give_escape_coins

public plugin_init()
{
	register_plugin("[ZE] Best Defender", "1.1", "Raheem")
	
	// Hook Chains
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
	RegisterHookChain(RG_CBasePlayer_Spawn, "Fw_PlayerSpawn_Post", 1)
	
	// Cvars
	cvar_give_multijump = register_cvar("ze_give_multijump", "1")
	cvar_show_chat_notice = register_cvar("ze_best_def_chat_notice", "1")
	cvar_give_xp = register_cvar("ze_best_def_give_xp", "40")
	cvar_give_escape_coins = register_cvar("ze_best_def_give_ec", "20")
}

public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
{
	if (!is_user_alive(iVictim) || !is_user_alive(iAttacker))
		return HC_SUPERCEDE
	
	g_fDamage[iAttacker] += fDamage
	return HC_CONTINUE
}

public ze_roundend()
{
	Get_Best_Defender()
}

public Fw_PlayerSpawn_Post(id)
{
	if (get_pcvar_num(cvar_show_chat_notice) != 0)
	{
		new szName[32]
		get_user_name(g_iBestDefIndex, szName, charsmax(szName))
		
		if (g_iBestDefIndex == 0)
			return
		
		if (get_pcvar_num(cvar_give_multijump) == 0)
		{
			ze_colored_print(id, "!tBest Defender: !g%s. !tDamage: !g%i. !tAwards: !g%d XP, %d EC!y.", szName, floatround(g_fDamage[id]), get_pcvar_num(cvar_give_xp), get_pcvar_num(cvar_give_escape_coins))
		}
		else
		{
			ze_colored_print(id, "!tBest Defender: !g%s. !tDamage: !g%i. !tAwards: !g%d XP, %d EC, Multi-Jump!y.", szName, floatround(g_fDamage[id]), get_pcvar_num(cvar_give_xp), get_pcvar_num(cvar_give_escape_coins))
		}
	}
	
	if (get_pcvar_num(cvar_give_multijump) != 0)
	{
		if (g_iBestDefIndex == 0 || g_iBestDefIndex != id)
			return
		
		ze_give_user_multijump(g_iBestDefIndex)
	}
	
	if (get_pcvar_num(cvar_give_xp) != 0 || get_pcvar_num(cvar_give_escape_coins) != 0)
	{
		if (g_iBestDefIndex == 0 || g_iBestDefIndex != 500.0)
			return
		
		ze_set_escape_coins(g_iBestDefIndex, get_pcvar_num(cvar_give_escape_coins) + ze_get_escape_coins(g_iBestDefIndex))
		ze_set_user_xp(g_iBestDefIndex, get_pcvar_num(cvar_give_xp) + ze_get_user_xp(g_iBestDefIndex))
	}
	
	// Delay Needed
	set_task(3.0, "Rest_Damage", id, _, _, "a", 1)
}

public Rest_Damage(id)
{
	g_fDamage[id] = 0.0
}

public Get_Best_Defender()
{
	new Float:fTemp = 0.0
	
	for (new i = 0; i <= 32; i++)
	{
		if (g_fDamage[i] > fTemp)
		{
			fTemp += g_fDamage[i]
			g_iBestDefIndex = i
		}
	}
}