Best Defender
New version released. Some important fixes inserted. Please if you run this plugin to update it.
He who fails to plan is planning to fail
Thanks for the plugin!
Last edited by CaseyG 6 years ago, edited 2 times in total.
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
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?
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 pluginczirimbolo 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?
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
}
}
}
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
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)
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)
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
In our new ZE version we make that native can't set user coins if he is not connected, so always should check if user connected or not. This is just a log error.
Fix here:
Fix here:
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, 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_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") 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 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[g_iBestDefIndex]), 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[g_iBestDefIndex]), 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 || g_fDamage[g_iBestDefIndex] == 0.0) 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 != id || g_fDamage[g_iBestDefIndex] == 0.0) return if (!is_user_connected(g_iBestDefIndex)) 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 } } }
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 408
- Joined: 5 years ago
- Contact:
oh , raheem , good job bro , if i want anything i see you posted them , thanks you so much , but i have problem i want your help , in ze_no_block plugin when some one blocking , its not damaging , please help me and fast answer , thanks for best deffender plugin , bye
Hey bro, You need to post your problem here: viewtopic.php?f=15&t=1929
About No Block plugin, it will not work with latest ReHLDS. In latest ReHLDS they removed the ability of player to block moving entity. So no need to use no block plugin.
About No Block plugin, it will not work with latest ReHLDS. In latest ReHLDS they removed the ability of player to block moving entity. So no need to use no block plugin.
He who fails to plan is planning to fail
-
- Member
- Posts: 32
- Joined: 6 years ago
- Contact:
Well there is a problem here. You forgot that with this code when u shot at your team mates (Human shot Human)
Fix... if user iVictim's team == 2 (team CT) then return... damage wont count in that case.
Change:
To:
So that means damage counts when you shot humans. Here's the fix.g_fDamage[iAttacker] += fDamage
Fix... if user iVictim's team == 2 (team CT) then return... damage wont count in that case.
Change:
- 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 Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
- {
- if (!is_user_alive(iVictim) || !is_user_alive(iAttacker) || get_user_team(iVictim) == 2)
- return HC_CONTINUE
- g_fDamage[iAttacker] += fDamage
- return HC_CONTINUE
- }
Bro nevermind, what problem are you talking about ?
on my server this plugin working fine without any bug.
on my server this plugin working fine without any bug.
-
- Member
- Posts: 32
- Joined: 6 years ago
- Contact:
Nope... if you shot humans damage counts the same way as shooting zombies.
That's why you must add this > get_user_team(iVictim) == 2)
then return
So damage will not be count if u shot humans.
That's why you must add this > get_user_team(iVictim) == 2)
then return
So damage will not be count if u shot humans.
Oh, i don't know how i forget this. This bug not detected by me because i never used this plugin.neverminddw wrote: ↑4 years ago Nope... if you shot humans damage counts the same way as shooting zombies.
That's why you must add this > get_user_team(iVictim) == 2)
then return
So damage will not be count if u shot humans.
Thanks for fix, i'll update next version.
He who fails to plan is planning to fail
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 0 guests