Raised This Month: $32 Target: $400
 8% 

[L4D2] Show Tank's HP


Post New Thread Reply   
 
Thread Tools Display Modes
sapphire989
Member
Join Date: Oct 2010
Old 01-02-2011 , 16:46   Re: [L4D2] Show Tank's HP
Reply With Quote #41

Quote:
Originally Posted by Elektramode View Post
Why dont you use one of the already existing tank health plugins, such as the one by ztar?

Ztar: http://forums.alliedmods.net/showthread.php?p=1116790

this plugins can show Multiple Tank HP ,,,,,

um...but show HP Inaccurate not perfect
sapphire989 is offline
eric0279
AlliedModders Donor
Join Date: May 2007
Old 01-10-2013 , 11:47   Re: [L4D2] Show Tank's HP
Reply With Quote #42

Hi,

I modified the code so that only admins / vip can see the HUD but it does not work, could you tell me my error ?

PHP Code:
#include <sourcemod>
#pragma semicolon 1

#define CVAR_FLAGS FCVAR_PLUGIN|FCVAR_NOTIFY
#define HUD_INTERVAL 1.0
#define PLUGIN_VERSION "1.0.7"
#define TANKCLASS_L4D2 8
#define TEAM_INFECTED 3
#define TEAM_SURVIVOR 2

/*
History:
########################
v1.0.7:
 - changed default health for other gamemodes
 - in other modes than versus and scavenge the enabled value will be override to 3 (to display status to survivors)

v1.0.6:
 - added cvar version
 - added cvar for enabling and team selection
 - added frustration output plus cvar for enabling and team selection
 - added fire and bile status
 - disabled output for tank
 
v1.0.5:
 - fixed tank health over 32000hp displayed negative
 - fixed info disappearing by tank health over 32000hp
 
v1.0.4:
 - changed system

v1.0.3:
 - no panel anymore (slot buttons were disabled)
 - fixed health at death

v1.0.2:
 - fixed tank frustration bug

v1.0.1:
 - added round end check
 - admins will get a hinttext, clients a panel

v1.0.0:
 - initial
 
 ToDo:
 ########################
 - in coop/realism display status after tank is activated
*/

//plugin info
//#######################
public Plugin:myinfo =
{
    
name "Tank status",
    
author "Die Teetasse",
    
description "Shows tank status (health, fire, bile, rage)",
    
version PLUGIN_VERSION,
    
url "http://forums.alliedmods.net/showthread.php?t=117431"
};

//global definitions
//#######################
new TankClient = -1;
new 
TankHealthDefault 6000;
new 
TankHealthOld 0;
new 
bool:CoopOverride false;
new 
bool:TankIt false;
new 
Handle:CvarEnable;
new 
Handle:CvarFrustration;

//plugin start
//#######################
public OnPluginStart()
{
    
CreateConVar("l4d2_tankstatus_version"PLUGIN_VERSION"Tankstatus version"CVAR_FLAGS|FCVAR_DONTRECORD);
    
CvarEnable CreateConVar("l4d2_tankstatus_enable""2""Tankstatus - enable status display (0 = disabled, 1 = only inf, 2 = inf + spec, 3 = all)"CVAR_FLAGS);
    
CvarFrustration CreateConVar("l4d2_tankstatus_enable_frustration""1""Tankstatus - enable frustration add (0 = disabled, 1 = only inf, 2 = inf + spec, 3 = all)"CVAR_FLAGS);

    
HookEvent("tank_spawn"Tank_Spawn_Event);
    
HookEvent("player_death"Player_Death_Event);
    
HookEvent("round_end"Round_End_Event);
    
HookEvent("player_now_it"Player_It_Event);
    
HookEvent("player_no_longer_it"Player_Not_It_Event);
}

//events
//#######################
public Action:Tank_Spawn_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (
GetConVarInt(CvarEnable) == 0) return Plugin_Continue;

    
//change multiplier for different gamemodes
    
new Float:multiplier;
    new 
String:gamemode[24];
    
GetConVarString(FindConVar("mp_gamemode"), gamemodesizeof(gamemode));    
    
    
//vs
    
if (StrContains(gamemode"versus") > -|| StrContains(gamemode"scavenge") > -1)
    {
        
multiplier 1.5;
        
CoopOverride false;
    }
    
//survival
    
else if (StrContains(gamemode"survival") > -1)
    {
        
multiplier 1.5;
        
CoopOverride true;
    }
    
//coop/realism
    
else 
    {
        
CoopOverride true;
        
        
//difficulty?
        
new String:difficulty[24];
        
GetConVarString(FindConVar("z_difficulty"), difficultysizeof(difficulty));
        
        if (
StrContains(gamemode"Easy") > -1multiplier 0.75;
        else if (
StrContains(gamemode"Normal") > -1multiplier 1.0;
        else if (
StrContains(gamemode"Hard") > -1multiplier 1.5;
        else 
multiplier 2.0;
    }
    
    
TankHealthDefault RoundFloat(multiplier GetConVarFloat(FindConVar("z_tank_health")));
    
TankHealthOld TankHealthDefault;
    
TankIt false;

    
UpdateHUD();
    
ShowHUD();
    
CreateTimer(HUD_INTERVALHUD_TimerINVALID_HANDLETIMER_REPEAT);
    
    return 
Plugin_Continue;
}

public 
Action:Player_Death_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (
GetClientOfUserId(GetEventInt(event"userid")) == TankClientTankClient = -1;
    
    return 
Plugin_Continue;
}

public 
Action:Round_End_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    
TankClient = -1;
    
    return 
Plugin_Continue;
}

public 
Action:Player_It_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (
GetClientOfUserId(GetEventInt(event"userid")) == TankClientTankIt true;
    
    return 
Plugin_Continue;
}

public 
Action:Player_Not_It_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (
GetClientOfUserId(GetEventInt(event"userid")) == TankClientTankIt false;
    
    return 
Plugin_Continue;
}

//timer
//#######################
public Action:HUD_Timer(Handle:timer)
{    
    new 
bool:stop UpdateHUD();
    
    if (
stop)
    {
        
ShowHUD(true);
        return 
Plugin_Stop;
    }
    
    
ShowHUD();
    return 
Plugin_Continue;
}

//private functions
//#######################
bool:UpdateHUD()
{
    
//check if events detected roundend/death
    
if (TankClient == -&& TankHealthOld TankHealthDefault) return true;

    
TankClient = -1;

    for (new 
1MaxClients +1i++)
    {
        
//ingame?
        
if (!IsClientInGame(i)) continue;
        
//infected?
        
if (GetClientTeam(i) != TEAM_INFECTED) continue;
        
//alive?
        
if (!IsPlayerAlive(i)) continue;
        
//not admin
        
if (IsClientMember(i)) continue;
        
//tank?
        
if (GetEntProp(iProp_Send"m_zombieClass") != TANKCLASS_L4D2) continue;
    
        
TankClient i;    
        break;
    }
    
    if (
TankClient == -1) return true;
    
    new 
health GetClientHealth(TankClient);
    if (
health TankHealthOld) return true;
    
TankHealthOld health;
    
    return 
false;
}

ShowHUD(bool:isdead false)
{
    if (
TankClient == -1) return;
    if (!
IsClientInGame(TankClient)) return;
    if (!
IsPlayerAlive(TankClient)) return;
    
//not admin
    
if (!IsClientMember(TankClient)) return;
    
    new 
String:text[256];
    new 
String:frusttext[256];
    new 
String:temptext[64];
    
    if (
IsFakeClient(TankClient)) text "Tank: AI\n";
    else 
Format(textsizeof(text), "Tank: %N\n"TankClient);
    
    if (
isdeadtemptext "Health: dead";
    else
    {
        new 
bool:fire false;
        
//check fire status
        
if(GetEntityFlags(TankClient) & FL_ONFIREfire true;
        
        if (
TankIt && fireFormat(temptextsizeof(temptext), "Health: %d hp (OnFire, InBile)"GetClientHealth(TankClient));
        else if(
TankItFormat(temptextsizeof(temptext), "Health: %d hp (InBile)"GetClientHealth(TankClient));
        else if(
fireFormat(temptextsizeof(temptext), "Health: %d hp (OnFire)"GetClientHealth(TankClient));
        else 
Format(temptextsizeof(temptext), "Health: %d hp"GetClientHealth(TankClient));
    }
    
    
StrCat(textsizeof(text), temptext);
    
temptext "";
    
    new 
displaymode GetConVarInt(CvarEnable);
    new 
frustmode GetConVarInt(CvarFrustration);    
    
    
//coop override to display status to survivor
    
if (CoopOverride)
    {
        
displaymode 3;
        
frustmode 0;
        
        
//PrintToChatAll("Threads: %d", GetEntProp(TankClient, Prop_Send, "m_hasVisibleThreats"));
    
}
    
    
//frust
    
if (frustmode 0)
    {
        if (!
isdead)
        {
            if (
IsFakeClient(TankClient)) temptext "\nControl: --";
            else 
Format(temptextsizeof(temptext), "\nControl: %d percent"100 GetEntProp(TankClientProp_Send"m_frustration"));
        }
        
        
Format(frusttextsizeof(frusttext), "%s%s"texttemptext);
        
temptext "";
    }
    
    for (new 
1MaxClients +1i++)
    {
        
//ingame?
        
if (!IsClientInGame(i)) continue;    
        
//human?
        
if (IsFakeClient(i)) continue;    
        
//not admin
        
if (IsClientMember(i)) continue;
        
//tank?
        
if (== TankClient) continue;
            
        new 
team GetClientTeam(i);
        
//infected
        
if (team == TEAM_INFECTED)
        {
            if(
frustmode 0PrintHintText(ifrusttext);
            else 
PrintHintText(itext);
        }
        
//survivor
        
else if (team == TEAM_SURVIVOR && displaymode 2)
        {
            if (
frustmode 2PrintHintText(ifrusttext);
            else 
PrintHintText(itext);
        }
        
//spectators
        
else if (displaymode 1)
        {
            if (
frustmode 1PrintHintText(ifrusttext);
            else 
PrintHintText(itext);            
        }
    }
}  

public 
HUDHandler(Handle:menuMenuAction:actionparam1param2)
{
}

bool:IsClientMember(client)
{
    new 
AdminId:id GetUserAdmin(client);
    if (
id == INVALID_ADMIN_ID)
        return 
false;
    if (
GetAdminFlag(idAdmin_Root))
        return 
true;
    else
    return 
false;

Thanks
eric0279 is offline
diorfo
Member
Join Date: Dec 2013
Old 08-02-2017 , 14:57   Re: [L4D2] Show Tank's HP
Reply With Quote #43

Here my contribution.

I have a versus server and personally i don't like the hud or center text version (text or messages on center of screen bother me), so i updated the panel version to my versus server based on source and code of DieTeetasse.

Feel free to use if you find this useful also to your versus server.
Attached Files
File Type: smx l4d2_tankstatus.smx (5.7 KB, 250 views)
File Type: sp Get Plugin or Get Source (l4d2_tankstatus.sp - 626 views - 4.3 KB)
diorfo is offline
canadianjeff
BANNED
Join Date: Sep 2016
Old 09-28-2020 , 00:26   Re: [L4D2] Show Tank's HP
Reply With Quote #44

this plugin does not work for the latest version
canadianjeff is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode