Page 1 of 2

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 Night Fury
johnnysins2000 wrote: 7 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: 7 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
		}
	}
}

Re: Best Defender

Posted: 08 Jun 2017, 17:47
by Raheem
Version 1.2 out.

Re: Best Defender

Posted: 07 Jul 2017, 06:00
by Raheem
New version released. Some important fixes inserted. Please if you run this plugin to update it.

Re: Best Defender

Posted: 15 Jul 2017, 08:22
by CaseyG
Raheeem wrote: 6 years ago New version released. Some important fixes inserted. Please if you run this plugin to update it.
Thanks for the plugin!

Re: Best Defender

Posted: 15 Jul 2017, 17:56
by Raheem
You are welcome.

Re: Best Defender

Posted: 15 Aug 2018, 10:46
by sPe3doN
Raheem can you remove escape coins & multi jump ? I want only xp

Re: Best Defender

Posted: 15 Aug 2018, 12:37
by czirimbolo
here are the cvars:

ze_best_def_give_xp "40" - you can change this value
ze_best_def_give_ec 0
ze_give_multijump 0

am I right?

Re: Best Defender

Posted: 15 Aug 2018, 21:27
by sPe3doN
czirimbolo wrote: 5 years ago here are the cvars:

ze_best_def_give_xp "40" - you can change this value
ze_best_def_give_ec 0
ze_give_multijump 0

am I right?
nah not like theat.. i want this plugin work with out multi jump plugin

Re: Best Defender

Posted: 15 Aug 2018, 23:34
by Raheem

Code: Select all

#include <zombie_escape>
#include <ze_levels>

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

// Cvars
new cvar_show_chat_notice, cvar_give_xp, cvar_give_escape_coins, cvar_show_stats

public plugin_init()
{
	register_plugin("[ZE] Best Defender", "1.3", "Raheem")
	
	// Hook Chains
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
	RegisterHookChain(RG_CBasePlayer_Spawn, "Fw_PlayerSpawn_Post", 1)
	
	// Cvars
	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")
	cvar_show_stats = register_cvar("ze_show_best_def_stats", "1")
	
	// Commands
	register_clcmd("say /mydamage", "Cmd_BestDefenderStats")
}

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

public ze_roundend()
{
	Get_Best_Defender()
}

public Cmd_BestDefenderStats(id)
{
	Get_Best_Defender()
	
	switch (get_pcvar_num(cvar_show_stats))
	{
		case 1:
		{
			if (id == g_iBestDefIndex)
			{
				ze_colored_print(id, "!tYou are now Best Defender !y[!g%d!y] !y:)", floatround(g_fDamage[g_iBestDefIndex]))
			}
			else
			{
				ze_colored_print(id, "!tYour Damage !g%d!y, !tYou need !g%d !tDamage To be Best Defender!y.", floatround(g_fDamage[id]), floatround(g_fDamage[g_iBestDefIndex] - g_fDamage[id]))
			}
		}
		case 2:
		{
			if (id == g_iBestDefIndex)
			{
				set_hudmessage(random(256), random(256), random(256), -1.0, 0.3, 2, 3.0, 5.0)
				show_hudmessage(id, "You are now Best Defender [%d] :)", floatround(g_fDamage[g_iBestDefIndex]))
			}
			else
			{
				set_hudmessage(random(256), random(256), random(256), -1.0, 0.3, 2, 3.0, 5.0)
				show_hudmessage(id, "Your Damage %d, You need %d Damage To be Best Defender.", floatround(g_fDamage[id]), floatround(g_fDamage[g_iBestDefIndex] - g_fDamage[id]))
			}
		}
		case 3:
		{
			if (id == g_iBestDefIndex)
			{
				set_dhudmessage(random(256), random(256), random(256), -1.0, 0.3, 2, 3.0, 5.0)
				show_dhudmessage(id, "You are now Best Defender [%d] :)", floatround(g_fDamage[g_iBestDefIndex]))
			}
			else
			{
				set_dhudmessage(random(256), random(256), random(256), -1.0, 0.3, 2, 3.0, 5.0)
				show_dhudmessage(id, "Your Damage %d, You need %d Damage To be Best Defender.", floatround(g_fDamage[id]), floatround(g_fDamage[g_iBestDefIndex] - g_fDamage[id]))
			}
		}
	}
}

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 || g_fDamage[g_iBestDefIndex] == 0.0)
			return
		
		ze_colored_print(id, "!tBest Defender: !g%s. !tDamage: !g%i. !tAwards: !g%d XP, %d EC!y.", szName, floatround(g_fDamage[g_iBestDefIndex]), get_pcvar_num(cvar_give_xp), get_pcvar_num(cvar_give_escape_coins))
	}
	
	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[g_iBestDefIndex] == 0.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))
	}
}

public ze_game_started()
{
	set_task(5.0, "RestDamage")
}

public RestDamage()
{
	for (new i = 1; i <= get_member_game(m_nMaxPlayers); i++)
	{
		g_fDamage[i] = 0.0
	}
}

public Get_Best_Defender()
{
	new Float:fTemp = 0.0
	
	for (new i = 1; i <= get_member_game(m_nMaxPlayers); i++)
	{
		if (!is_user_connected(i))
			continue
		
		if (g_fDamage[i] > fTemp)
		{
			fTemp = g_fDamage[i]
			g_iBestDefIndex = i
		}
	}
}

Re: Best Defender

Posted: 19 Aug 2018, 18:01
by czirimbolo
L 08/19/2018 - 18:40:10: [ZE] Invalid Player id (6)
L 08/19/2018 - 18:40:10: [AMXX] Displaying debug trace (plugin "ze_best_defender.amxx", version "1.3")
L 08/19/2018 - 18:40:10: [AMXX] Run time error 10: native error (native "ze_get_escape_coins")
L 08/19/2018 - 18:40:10: [AMXX] [0] ze_best_defender.sma::Fw_PlayerSpawn_Post (line 123)

Re: Best Defender

Posted: 22 Aug 2018, 17:16
by czirimbolo
can you fix this? I have everyday this error couple of times