Raised This Month: $51 Target: $400
 12% 

Show Lm(Laser Mine) Health In HuD


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
ambuz
Junior Member
Join Date: Jan 2012
Old 04-22-2013 , 17:39   Show Lm(Laser Mine) Health In HuD
Reply With Quote #1

I am Using This Plugin https://forums.alliedmods.net/showthread.php?t=159603
It is nice plugin but i want that it show Laser Mine Health In hud like this

Plzz help me


i think this flag will come but i dont know where to put that flag

Quote:
Public ShowAmmo(id)
set_hudmessage
show_hudmessage
__________________

Last edited by ambuz; 04-22-2013 at 17:39.
ambuz is offline
bat
Veteran Member
Join Date: Jul 2012
Old 04-23-2013 , 00:27   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #2

PHP Code:
#include < amxmodx >
#include < fakemeta >

public client_putinserveriClient )
{
  
set_task1.0"Task_CheckAiming"iClient 3389__"b" );
}

public 
client_disconnectiClient )
{
  
remove_taskiClient 3389 );
}

public 
Task_CheckAimingiTaskIndex )
{
  static 
iClient;
  
iClient iTaskIndex 3389;

  if( 
is_user_aliveiClient ) )
  {
    static 
iEntityiDummycClassname32 ];
    
get_user_aimingiClientiEntityiDummy9999 );

    if( 
pev_validiEntity ) )
    {
      
peviEntitypev_classnamecClassname31 );

      if( 
equalcClassname"[B]CLASS NAME LASERMINE[/B]" ) )
      {
       
set_hudmessage(01912550.420.1406.01.10.00.0, -1)
       
show_hudmessageiClient"Health: %d"peviEntitypev_health ));
      }
    }
  }

bat is offline
Send a message via Skype™ to bat
Podarok
BANNED
Join Date: Jan 2011
Location: Narnia
Old 04-23-2013 , 02:38   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #3

Could be much more better and optimised, this code isnt good enough to use
Podarok is offline
ambuz
Junior Member
Join Date: Jan 2012
Old 04-23-2013 , 16:16   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #4

Bat Thx But plzz can you add in that tripmine plugin which i had given link becuz i am little noob in pawn language
__________________
ambuz is offline
ambuz
Junior Member
Join Date: Jan 2012
Old 04-23-2013 , 16:33   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #5

Quote:
#pragma semicolon 1
#include < amxmodx >
#include < fakemeta >
#include < engine >

native zp_get_user_zombie( iPlayer );
native zp_get_user_ammo_packs( iPlayer );
native zp_set_user_ammo_packs( iPlayer, iPacks );
native zp_is_lnj_round( );

#define MAX_ENTITIES 600
#define MAX_PLAYERS 32
#define MINE_ON 1
#define MINE_OFF 0
#define TASK_CREATE 84765
#define TASK_REMOVE 86766
#define MINE_COST 6
#define MINE_CLASSNAME "zp_trip_mine"
#define MINE_MODEL_EXPLODE "sprites/zerogxplode.spr"
#define MINE_MODEL_VIEW "models/zombie_plague/lasermine.mdl"
#define MINE_SOUND_ACTIVATE "weapons/mine_activate.wav"
#define MINE_SOUND_CHARGE "weapons/mine_charge.wav"
#define MINE_SOUND_DEPLOY "weapons/mine_deploy.wav"
#define MINE_HEALTH 800
#define entity_get_owner(%0) entity_get_int( %0, EV_INT_iuser2 )
#define entity_get_status(%0) entity_get_int( %0, EV_INT_iuser1 )
#define entity_get_classname(%0,%1) entity_get_string( %0, EV_SZ_classname, %1, charsmax( %1 ) )

new g_iTripMines[ 33 ];
new g_iPlantedMines[ 33 ];
new g_iPlanting[ 33 ];
new g_iRemoving[ 33 ];
new g_hExplode;
new g_msgsaytext;

print( id, const message[], { Float, Sql, Result, _ }:... )
{
new Buffer[ 128 ],Buffer2[ 128 ];
new players[ 32 ], index, num, i;

formatex( Buffer2, sizeof Buffer2 - 1, "%s",message );
vformat( Buffer, sizeof Buffer - 1, Buffer2, 3 );
get_players( players, num, "c" );

if( id )
{
if( !is_user_connected( id ))
return;

message_begin( MSG_ONE, g_msgsaytext, _, id );
write_byte( id );
write_string( Buffer );
message_end();

} else {

for( i = 0; i < num;i++ )
{
index = players[ i ];
if( !is_user_connected( index ))
continue;

message_begin( MSG_ONE, g_msgsaytext, _, index );
write_byte( index );
write_string( Buffer );
message_end();
}
}
}

public plugin_init( )
{
register_plugin( "[ZP] Trip Mines", "1.0", "Serjaka" );

register_clcmd( "say /lm", "Command_Buy" );
register_clcmd( "say lm", "Command_Buy" );

register_clcmd( "CreateLaser", "Command_Plant" );
register_clcmd( "TakeLaser", "Command_Take" );

register_logevent( "Event_RoundStart", 2, "1=Round_Start" );

register_think( MINE_CLASSNAME, "Forward_Think" );

g_msgsaytext = get_user_msgid( "SayText" );
}

public plugin_precache( )
{
engfunc( EngFunc_PrecacheModel, MINE_MODEL_VIEW );

engfunc( EngFunc_PrecacheSound, MINE_SOUND_ACTIVATE );
engfunc( EngFunc_PrecacheSound, MINE_SOUND_CHARGE );
engfunc( EngFunc_PrecacheSound, MINE_SOUND_DEPLOY );

g_hExplode = engfunc( EngFunc_PrecacheModel, MINE_MODEL_EXPLODE );
}
public client_putinserver( iPlayer )
{
set_task( 1.0, "Task_CheckAiming", iPlayer + 3389, _, _, "b" );
}

public client_disconnect( iPlayer )
{
g_iTripMines[ iPlayer ] = 0;
g_iPlanting[ iPlayer ] = false;
g_iRemoving[ iPlayer ] = false;

if( g_iPlantedMines[ iPlayer ] )
{
Func_RemoveMinesByOwner( iPlayer );

g_iPlantedMines[ iPlayer ] = 0;
}

remove_task( iPlayer + TASK_REMOVE );
remove_task( iPlayer + TASK_CREATE );
remove_task( iPlayer + 3389 );
}

public Task_CheckAiming( iTaskIndex )
{
static iPlayer;
iPlayer = iTaskIndex - 3389;

if( is_user_alive( iPlayer ) )
{
static iEntity, iDummy, cClassname[ 32 ];
get_user_aiming( iPlayer, iEntity, iDummy, 9999 );

if( pev_valid( iEntity ) )
{
pev( iEntity, pev_classname, cClassname, 31 );

if( equal( cClassname, "CLASS NAME LASERMINE" ) )
{
set_hudmessage(0, 191, 255, 0.42, 0.14, 0, 6.0, 1.1, 0.0, 0.0, -1)
show_hudmessage( iPlayer, "Health: %d", pev( iEntity, pev_health ) );
}
}
}
}

public Command_Buy( iPlayer )
{
if( !is_user_alive( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be alive." );

return PLUGIN_CONTINUE;
}

if( zp_get_user_zombie( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be human." );

return PLUGIN_CONTINUE;
}

if( zp_get_user_ammo_packs( iPlayer ) < MINE_COST )
{
print( iPlayer, "^x04[ZP]^x01 You need^x04 %i ammo packs!", MINE_COST );

return PLUGIN_CONTINUE;
}

if( zp_is_lnj_round( ) )
{
print( iPlayer, "^x04[ZP]^x01 You can't buy a tripmine into an armageddon round." );

return PLUGIN_CONTINUE;
}

zp_set_user_ammo_packs( iPlayer, zp_get_user_ammo_packs( iPlayer ) - MINE_COST );

g_iTripMines[ iPlayer ]++;

print( iPlayer, "^x04[ZP]^x01 You bought a^x04 Trip Mine^x01. Press^x04 'P'^x01 to plant it or^x04 'V'^x01 to take it!" );

client_cmd( iPlayer, "bind p CreateLaser" );
client_cmd( iPlayer, "bind v TakeLaser" );

return PLUGIN_CONTINUE;
}

public Command_Plant( iPlayer )
{
if( !is_user_alive( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be alive." );

return PLUGIN_CONTINUE;
}

if( zp_get_user_zombie( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be human." );

return PLUGIN_CONTINUE;
}

if( !g_iTripMines[ iPlayer ] )
{
print( iPlayer, "^x04[ZP]^x01 You don't have a trip mine to plant." );

return PLUGIN_CONTINUE;
}

if( g_iPlantedMines[ iPlayer ] > 1 )
{
print( iPlayer, "^x04[ZP]^x01 You can plant only^x04 2 mines^x01!" );

return PLUGIN_CONTINUE;
}

if( zp_is_lnj_round( ) )
{
print( iPlayer, "^x04[ZP]^x01 You can't buy a tripmine into an armageddon round." );

return PLUGIN_CONTINUE;
}

if( g_iPlanting[ iPlayer ] || g_iRemoving[ iPlayer ] )
return PLUGIN_CONTINUE;

if( CanPlant( iPlayer ) ) {
g_iPlanting[ iPlayer ] = true;

message_begin( MSG_ONE_UNRELIABLE, 108, _, iPlayer );
write_byte( 1 );
write_byte( 0 );
message_end( );

set_task( 1.2, "Func_Plant", iPlayer + TASK_CREATE );
}

return PLUGIN_CONTINUE;
}

public Command_Take( iPlayer )
{
if( !is_user_alive( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be alive." );

return PLUGIN_CONTINUE;
}

if( zp_get_user_zombie( iPlayer ) )
{
print( iPlayer, "^x04[ZP]^x01 You should be human." );

return PLUGIN_CONTINUE;
}

if( !g_iPlantedMines[ iPlayer ] )
{
print( iPlayer, "^x04[ZP]^x01 You don't have a planted mine." );

return PLUGIN_CONTINUE;
}

if( g_iPlanting[ iPlayer ] || g_iRemoving[ iPlayer ] )
return PLUGIN_CONTINUE;

if( CanTake( iPlayer ) ) {
g_iRemoving[ iPlayer ] = true;

message_begin( MSG_ONE_UNRELIABLE, 108, _, iPlayer );
write_byte( 1 );
write_byte( 0 );
message_end( );

set_task( 1.2, "Func_Take", iPlayer + TASK_REMOVE );
}

return PLUGIN_CONTINUE;
}

public Event_RoundStart( ) {
static iEntity, szClassName[ 32 ], iPlayer;
for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
if( !is_valid_ent( iEntity ) )
continue;

szClassName[ 0 ] = '^0';
entity_get_classname( iEntity, szClassName );

if( equal( szClassName, MINE_CLASSNAME ) )
remove_entity( iEntity );
}

for( iPlayer = 1; iPlayer < 33; iPlayer++ ) {
g_iTripMines[ iPlayer ] = 0;
g_iPlantedMines[ iPlayer ] = 0;
}
}

public Func_Take( iPlayer ) {
iPlayer -= TASK_REMOVE;

g_iRemoving[ iPlayer ] = false;

static iEntity, szClassName[ 32 ], Float: flOwnerOrigin[ 3 ], Float: flEntityOrigin[ 3 ];
for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
if( !is_valid_ent( iEntity ) )
continue;

szClassName[ 0 ] = '^0';
entity_get_classname( iEntity, szClassName );

if( equal( szClassName, MINE_CLASSNAME ) ) {
if( entity_get_owner( iEntity ) == iPlayer ) {
entity_get_vector( iPlayer, EV_VEC_origin, flOwnerOrigin );
entity_get_vector( iEntity, EV_VEC_origin, flEntityOrigin );

if( get_distance_f( flOwnerOrigin, flEntityOrigin ) < 55.0 ) {
g_iPlantedMines[ iPlayer ]--;
g_iTripMines[ iPlayer ]++;

remove_entity( iEntity );

break;
}
}
}
}
}



public bool: CanTake( iPlayer ) {
static iEntity, szClassName[ 32 ], Float: flOwnerOrigin[ 3 ], Float: flEntityOrigin[ 3 ];
for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
if( !is_valid_ent( iEntity ) )
continue;

szClassName[ 0 ] = '^0';
entity_get_classname( iEntity, szClassName );

if( equal( szClassName, MINE_CLASSNAME ) ) {
if( entity_get_owner( iEntity ) == iPlayer ) {
entity_get_vector( iPlayer, EV_VEC_origin, flOwnerOrigin );
entity_get_vector( iEntity, EV_VEC_origin, flEntityOrigin );

if( get_distance_f( flOwnerOrigin, flEntityOrigin ) < 55.0 )
return true;
}
}
}

return false;
}

public bool: CanPlant( iPlayer ) {
static Float: flOrigin[ 3 ];
entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );

static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
velocity_by_aim( iPlayer, 64, flTraceDirection );
flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];

static Float: flFraction, iTr;
iTr = 0;
engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
get_tr2( iTr, TR_vecEndPos, flTraceResult );
get_tr2( iTr, TR_vecPlaneNormal, flNormal );
get_tr2( iTr, TR_flFraction, flFraction );

if( flFraction >= 1.0 ) {
print( iPlayer, "^x04[ZP]^x01 You must plant the tripmine on a wall." );

return false;
}

return true;
}

public Func_Plant( iPlayer ) {
iPlayer -= TASK_CREATE;

g_iPlanting[ iPlayer ] = false;

static Float: flOrigin[ 3 ];
entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );

static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
velocity_by_aim( iPlayer, 128, flTraceDirection );
flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];

static Float: flFraction, iTr;
iTr = 0;
engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
get_tr2( iTr, TR_vecEndPos, flTraceResult );
get_tr2( iTr, TR_vecPlaneNormal, flNormal );
get_tr2( iTr, TR_flFraction, flFraction );

static iEntity;
iEntity = create_entity( "info_target" );

if( !iEntity )
return;

entity_set_string( iEntity, EV_SZ_classname, MINE_CLASSNAME );
entity_set_model( iEntity, MINE_MODEL_VIEW );
entity_set_size( iEntity, Float: { -4.0, -4.0, -4.0 }, Float: { 4.0, 4.0, 4.0 } );

entity_set_int( iEntity, EV_INT_iuser2, iPlayer );

g_iPlantedMines[ iPlayer ]++;

entity_set_float( iEntity, EV_FL_frame, 0.0 );
entity_set_float( iEntity, EV_FL_framerate, 0.0 );
entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_FLY );
entity_set_int( iEntity, EV_INT_solid, SOLID_NOT );
entity_set_int( iEntity, EV_INT_body, 3 );
entity_set_int( iEntity, EV_INT_sequence, 7 );
entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_NO );
entity_set_int( iEntity, EV_INT_iuser1, MINE_OFF );

static Float: flNewOrigin[ 3 ], Float: flEntAngles[ 3 ];
flNewOrigin[ 0 ] = flTraceResult[ 0 ] + ( flNormal[ 0 ] * 8.0 );
flNewOrigin[ 1 ] = flTraceResult[ 1 ] + ( flNormal[ 1 ] * 8.0 );
flNewOrigin[ 2 ] = flTraceResult[ 2 ] + ( flNormal[ 2 ] * 8.0 );

entity_set_origin( iEntity, flNewOrigin );

vector_to_angle( flNormal, flEntAngles );
entity_set_vector( iEntity, EV_VEC_angles, flEntAngles );
flEntAngles[ 0 ] *= -1.0;
flEntAngles[ 1 ] *= -1.0;
flEntAngles[ 2 ] *= -1.0;
entity_set_vector( iEntity, EV_VEC_v_angle, flEntAngles );

g_iTripMines[ iPlayer ]--;

emit_sound( iEntity, CHAN_WEAPON, MINE_SOUND_DEPLOY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( iEntity, CHAN_VOICE, MINE_SOUND_CHARGE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );

entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 0.6 );
}

public Func_RemoveMinesByOwner( iPlayer ) {
static iEntity, szClassName[ 32 ];
for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
if( !is_valid_ent( iEntity ) )
continue;

szClassName[ 0 ] = '^0';
entity_get_classname( iEntity, szClassName );

if( equal( szClassName, MINE_CLASSNAME ) )
if( entity_get_int( iEntity, EV_INT_iuser2 ) == iPlayer )
remove_entity( iEntity );
}
}

Func_Explode( iEntity ) {
g_iPlantedMines[ entity_get_owner( iEntity ) ]--;

static Float: flOrigin[ 3 ], Float: flZombieOrigin[ 3 ], Float: flHealth, Float: flVelocity[ 3 ];
entity_get_vector( iEntity, EV_VEC_origin, flOrigin );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_EXPLOSION );
engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
write_short( g_hExplode );
write_byte( 55 );
write_byte( 15 );
write_byte( 0 );
message_end( );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_EXPLOSION );
engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
write_short( g_hExplode );
write_byte( 65 );
write_byte( 15 );
write_byte( 0 );
message_end( );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( TE_EXPLOSION );
engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
write_short( g_hExplode );
write_byte( 85 );
write_byte( 15 );
write_byte( 0 );
message_end( );

static iZombie;
for( iZombie = 1; iZombie < MAX_PLAYERS + 1; iZombie++ ) {
if( is_user_connected( iZombie ) ) {
if( is_user_alive( iZombie ) ) {
entity_get_vector( iZombie, EV_VEC_origin, flZombieOrigin );

if( get_distance_f( flOrigin, flZombieOrigin ) < 360.0 ) {
flHealth = entity_get_float( iZombie, EV_FL_health );
entity_get_vector( iZombie, EV_VEC_velocity, flVelocity );

flVelocity[ 2 ] += 456.0;
flVelocity[ 1 ] += 320.0;
flVelocity[ 0 ] += 299.0;

entity_set_vector( iZombie, EV_VEC_velocity, flVelocity );

if( zp_get_user_zombie( iZombie ) )
fm_set_user_health( iZombie, floatmax( flHealth - random_float( 1600.0, 2800.0 ), 0.0 ) );
}
}
}
}

remove_entity( iEntity );

}

public Forward_Think( iEntity ) {
static Float: flGameTime, iStatus;
flGameTime = get_gametime( );
iStatus = entity_get_status( iEntity );

switch( iStatus ) {
case MINE_OFF: {
entity_set_int( iEntity, EV_INT_iuser1, MINE_ON );
entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_YES );
entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );
entity_set_float( iEntity, EV_FL_health, MINE_HEALTH + 1000.0 );

emit_sound( iEntity, CHAN_VOICE, MINE_SOUND_ACTIVATE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}

case MINE_ON: {
static Float: flHealth;
flHealth = entity_get_float( iEntity, EV_FL_health );

if( flHealth <= 1000.0 ) {
Func_Explode( iEntity );

return FMRES_IGNORED;
}
}
}

if( is_valid_ent( iEntity ) )
entity_set_float( iEntity, EV_FL_nextthink, flGameTime + 0.1 );

return FMRES_IGNORED;
}

public fm_set_user_health( iPlayer, Float: flHealth )
flHealth ? set_pev( iPlayer, pev_health, flHealth ) : dllfunc( DLLFunc_ClientKill, iPlayer );
but it is saying this error

Quote:
Error: Expected token: ";", but found "-identifier-" on line 138
I had bold & underlined the error in plugin
__________________

Last edited by ambuz; 04-23-2013 at 16:38.
ambuz is offline
Old 04-23-2013, 16:34
ambuz
This message has been deleted by ambuz. Reason: aise hi
ESPADONGAMING
Senior Member
Join Date: Mar 2011
Location: In the Game [ro]
Old 10-02-2013 , 17:36   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #6

Try it.

PHP Code:
#pragma semicolon 1
#include < amxmodx >
#include < fakemeta >
#include < engine >

native zp_get_user_zombieiPlayer );
native zp_get_user_ammo_packsiPlayer );
native zp_set_user_ammo_packsiPlayeriPacks );
native zp_is_lnj_round( );

#define MAX_ENTITIES 600
#define MAX_PLAYERS 32
#define MINE_ON 1
#define MINE_OFF 0
#define TASK_CREATE 84765
#define TASK_REMOVE 86766
#define MINE_COST 6
#define MINE_CLASSNAME "zp_trip_mine"
#define MINE_MODEL_EXPLODE "sprites/zerogxplode.spr"
#define MINE_MODEL_VIEW "models/zombie_plague/lasermine.mdl"
#define MINE_SOUND_ACTIVATE "weapons/mine_activate.wav"
#define MINE_SOUND_CHARGE "weapons/mine_charge.wav"
#define MINE_SOUND_DEPLOY "weapons/mine_deploy.wav"
#define MINE_HEALTH 800
#define entity_get_owner(%0) entity_get_int( %0, EV_INT_iuser2 )
#define entity_get_status(%0) entity_get_int( %0, EV_INT_iuser1 )
#define entity_get_classname(%0,%1) entity_get_string( %0, EV_SZ_classname, %1, charsmax( %1 ) )

new g_iTripMines33 ];
new 
g_iPlantedMines33 ];
new 
g_iPlanting33 ];
new 
g_iRemoving33 ];
new 
g_hExplode;
new 
g_msgsaytext;

print( 
id, const message[], { FloatSqlResult}:... )
{
new 
Buffer128 ],Buffer2128 ];
new 
players32 ], indexnumi;

formatexBuffer2sizeof Buffer2 1"%s",message );
vformatBuffersizeof Buffer 1Buffer2);
get_playersplayersnum"c" );

if( 
id )
{
if( !
is_user_connectedid ))
return;

message_beginMSG_ONEg_msgsaytext_id );
write_byteid );
write_stringBuffer );
message_end();

} else {

for( 
0num;i++ )
{
index players];
if( !
is_user_connectedindex )) 
continue;

message_beginMSG_ONEg_msgsaytext_index );
write_byteindex );
write_stringBuffer );
message_end();
}
}
}

public 
plugin_init( )
{
register_plugin"[ZP] Trip Mines""1.0""Serjaka" );

register_clcmd"say /lm""Command_Buy" );
register_clcmd"say lm""Command_Buy" );

register_clcmd"CreateLaser""Command_Plant" );
register_clcmd"TakeLaser""Command_Take" );

register_logevent"Event_RoundStart"2"1=Round_Start" );

register_thinkMINE_CLASSNAME"Forward_Think" );

g_msgsaytext get_user_msgid"SayText" );
}

public 
plugin_precache( )
{
engfuncEngFunc_PrecacheModelMINE_MODEL_VIEW );

engfuncEngFunc_PrecacheSoundMINE_SOUND_ACTIVATE );
engfuncEngFunc_PrecacheSoundMINE_SOUND_CHARGE );
engfuncEngFunc_PrecacheSoundMINE_SOUND_DEPLOY );

g_hExplode engfuncEngFunc_PrecacheModelMINE_MODEL_EXPLODE );
}
public 
client_putinserveriPlayer )
{
set_task1.0"Task_CheckAiming"iPlayer 3389__"b" );


public 
client_disconnectiPlayer )
{
g_iTripMinesiPlayer ] = 0;
g_iPlantingiPlayer ] = false;
g_iRemovingiPlayer ] = false;

if( 
g_iPlantedMinesiPlayer ] )
{
Func_RemoveMinesByOwneriPlayer );

g_iPlantedMinesiPlayer ] = 0;
}

remove_taskiPlayer TASK_REMOVE );
remove_taskiPlayer TASK_CREATE );
remove_taskiPlayer 3389 );
}

public 
Task_CheckAimingiTaskIndex )
{
static 
iPlayer;
iPlayer iTaskIndex 3389;

if( 
is_user_aliveiPlayer ) )
{
static 
iEntityiDummycClassname32 ];
get_user_aimingiPlayeriEntityiDummy9999 );

if( 
pev_validiEntity ) )
{
peviEntitypev_classnamecClassname31 );

if( 
equalcClassname"zp_trip_mine" ) )
{
set_hudmessage50100150, -1.00.6006.01.10.00.0, -);
show_hudmessageiPlayer"Health: %d"peviEntitypev_health ) );
}
}
}


public 
Command_BuyiPlayer )
{
if( !
is_user_aliveiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be alive." );

return 
PLUGIN_CONTINUE;
}

if( 
zp_get_user_zombieiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be human." );

return 
PLUGIN_CONTINUE;
}

if( 
zp_get_user_ammo_packsiPlayer ) < MINE_COST )
{
print( 
iPlayer"^x04[ZP]^x01 You need^x04 %i ammo packs!"MINE_COST );

return 
PLUGIN_CONTINUE;
}

if( 
zp_is_lnj_round( ) )
{
print( 
iPlayer"^x04[ZP]^x01 You can't buy a tripmine into an armageddon round." );

return 
PLUGIN_CONTINUE;
}

zp_set_user_ammo_packsiPlayerzp_get_user_ammo_packsiPlayer ) - MINE_COST );

g_iTripMinesiPlayer ]++;

print( 
iPlayer"^x04[ZP]^x01 You bought a^x04 Trip Mine^x01. Press^x04 'P'^x01 to plant it or^x04 'V'^x01 to take it!" );

client_cmdiPlayer"bind p CreateLaser" );
client_cmdiPlayer"bind v TakeLaser" );

return 
PLUGIN_CONTINUE;
}

public 
Command_PlantiPlayer )
{
if( !
is_user_aliveiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be alive." );

return 
PLUGIN_CONTINUE;
}

if( 
zp_get_user_zombieiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be human." );

return 
PLUGIN_CONTINUE;
}

if( !
g_iTripMinesiPlayer ] )
{
print( 
iPlayer"^x04[ZP]^x01 You don't have a trip mine to plant." );

return 
PLUGIN_CONTINUE;
}

if( 
g_iPlantedMinesiPlayer ] > )
{
print( 
iPlayer"^x04[ZP]^x01 You can plant only^x04 2 mines^x01!" );

return 
PLUGIN_CONTINUE;
}

if( 
zp_is_lnj_round( ) )
{
print( 
iPlayer"^x04[ZP]^x01 You can't buy a tripmine into an armageddon round." );

return 
PLUGIN_CONTINUE;
}

if( 
g_iPlantingiPlayer ] || g_iRemovingiPlayer ] )
return 
PLUGIN_CONTINUE;

if( 
CanPlantiPlayer ) ) {
g_iPlantingiPlayer ] = true;

message_beginMSG_ONE_UNRELIABLE108_iPlayer );
write_byte);
write_byte);
message_end( );

set_task1.2"Func_Plant"iPlayer TASK_CREATE );
}

return 
PLUGIN_CONTINUE;
}

public 
Command_TakeiPlayer )
{
if( !
is_user_aliveiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be alive." );

return 
PLUGIN_CONTINUE;
}

if( 
zp_get_user_zombieiPlayer ) )
{
print( 
iPlayer"^x04[ZP]^x01 You should be human." );

return 
PLUGIN_CONTINUE;
}

if( !
g_iPlantedMinesiPlayer ] )
{
print( 
iPlayer"^x04[ZP]^x01 You don't have a planted mine." );

return 
PLUGIN_CONTINUE;
}

if( 
g_iPlantingiPlayer ] || g_iRemovingiPlayer ] )
return 
PLUGIN_CONTINUE;

if( 
CanTakeiPlayer ) ) {
g_iRemovingiPlayer ] = true;

message_beginMSG_ONE_UNRELIABLE108_iPlayer );
write_byte);
write_byte);
message_end( );

set_task1.2"Func_Take"iPlayer TASK_REMOVE );
}

return 
PLUGIN_CONTINUE;
}

public 
Event_RoundStart( ) {
static 
iEntityszClassName32 ], iPlayer;
for( 
iEntity 0iEntity MAX_ENTITIES 1iEntity++ ) {
if( !
is_valid_entiEntity ) )
continue;

szClassName] = '^0';
entity_get_classnameiEntityszClassName );

if( 
equalszClassNameMINE_CLASSNAME ) )
remove_entityiEntity );
}

for( 
iPlayer 1iPlayer 33iPlayer++ ) {
g_iTripMinesiPlayer ] = 0;
g_iPlantedMinesiPlayer ] = 0;
}
}

public 
Func_TakeiPlayer ) {
iPlayer -= TASK_REMOVE;

g_iRemovingiPlayer ] = false;

static 
iEntityszClassName32 ], FloatflOwnerOrigin], FloatflEntityOrigin];
for( 
iEntity 0iEntity MAX_ENTITIES 1iEntity++ ) {
if( !
is_valid_entiEntity ) )
continue;

szClassName] = '^0';
entity_get_classnameiEntityszClassName );

if( 
equalszClassNameMINE_CLASSNAME ) ) {
if( 
entity_get_owneriEntity ) == iPlayer ) {
entity_get_vectoriPlayerEV_VEC_originflOwnerOrigin );
entity_get_vectoriEntityEV_VEC_originflEntityOrigin );

if( 
get_distance_fflOwnerOriginflEntityOrigin ) < 55.0 ) {
g_iPlantedMinesiPlayer ]--;
g_iTripMinesiPlayer ]++;

remove_entityiEntity );

break;
}
}
}
}
}



public 
boolCanTakeiPlayer ) {
static 
iEntityszClassName32 ], FloatflOwnerOrigin], FloatflEntityOrigin];
for( 
iEntity 0iEntity MAX_ENTITIES 1iEntity++ ) {
if( !
is_valid_entiEntity ) )
continue;

szClassName] = '^0';
entity_get_classnameiEntityszClassName );

if( 
equalszClassNameMINE_CLASSNAME ) ) {
if( 
entity_get_owneriEntity ) == iPlayer ) {
entity_get_vectoriPlayerEV_VEC_originflOwnerOrigin );
entity_get_vectoriEntityEV_VEC_originflEntityOrigin );

if( 
get_distance_fflOwnerOriginflEntityOrigin ) < 55.0 )
return 
true;
}
}
}

return 
false;
}

public 
boolCanPlantiPlayer ) {
static 
FloatflOrigin];
entity_get_vectoriPlayerEV_VEC_originflOrigin );

static 
FloatflTraceDirection], FloatflTraceEnd], FloatflTraceResult], FloatflNormal];
velocity_by_aimiPlayer64flTraceDirection );
flTraceEnd] = flTraceDirection] + flOrigin];
flTraceEnd] = flTraceDirection] + flOrigin];
flTraceEnd] = flTraceDirection] + flOrigin];

static 
FloatflFractioniTr;
iTr 0;
engfuncEngFunc_TraceLineflOriginflTraceEnd0iPlayeriTr );
get_tr2iTrTR_vecEndPosflTraceResult );
get_tr2iTrTR_vecPlaneNormalflNormal );
get_tr2iTrTR_flFractionflFraction );

if( 
flFraction >= 1.0 ) {
print( 
iPlayer"^x04[ZP]^x01 You must plant the tripmine on a wall." );

return 
false;
}

return 
true;
}

public 
Func_PlantiPlayer ) {
iPlayer -= TASK_CREATE;

g_iPlantingiPlayer ] = false;

static 
FloatflOrigin];
entity_get_vectoriPlayerEV_VEC_originflOrigin );

static 
FloatflTraceDirection], FloatflTraceEnd], FloatflTraceResult], FloatflNormal];
velocity_by_aimiPlayer128flTraceDirection );
flTraceEnd] = flTraceDirection] + flOrigin];
flTraceEnd] = flTraceDirection] + flOrigin];
flTraceEnd] = flTraceDirection] + flOrigin];

static 
FloatflFractioniTr;
iTr 0;
engfuncEngFunc_TraceLineflOriginflTraceEnd0iPlayeriTr );
get_tr2iTrTR_vecEndPosflTraceResult );
get_tr2iTrTR_vecPlaneNormalflNormal );
get_tr2iTrTR_flFractionflFraction );

static 
iEntity;
iEntity create_entity"info_target" );

if( !
iEntity )
return;

entity_set_stringiEntityEV_SZ_classnameMINE_CLASSNAME );
entity_set_modeliEntityMINE_MODEL_VIEW );
entity_set_sizeiEntityFloat: { -4.0, -4.0, -4.0 }, Float: { 4.04.04.0 } );

entity_set_intiEntityEV_INT_iuser2iPlayer );

g_iPlantedMinesiPlayer ]++;

entity_set_floatiEntityEV_FL_frame0.0 );
entity_set_floatiEntityEV_FL_framerate0.0 );
entity_set_intiEntityEV_INT_movetypeMOVETYPE_FLY );
entity_set_intiEntityEV_INT_solidSOLID_NOT );
entity_set_intiEntityEV_INT_body);
entity_set_intiEntityEV_INT_sequence);
entity_set_floatiEntityEV_FL_takedamageDAMAGE_NO );
entity_set_intiEntityEV_INT_iuser1MINE_OFF );

static 
FloatflNewOrigin], FloatflEntAngles];
flNewOrigin] = flTraceResult] + ( flNormal] * 8.0 );
flNewOrigin] = flTraceResult] + ( flNormal] * 8.0 );
flNewOrigin] = flTraceResult] + ( flNormal] * 8.0 );

entity_set_originiEntityflNewOrigin );

vector_to_angleflNormalflEntAngles );
entity_set_vectoriEntityEV_VEC_anglesflEntAngles );
flEntAngles] *= -1.0;
flEntAngles] *= -1.0;
flEntAngles] *= -1.0;
entity_set_vectoriEntityEV_VEC_v_angleflEntAngles );

g_iTripMinesiPlayer ]--;

emit_soundiEntityCHAN_WEAPONMINE_SOUND_DEPLOYVOL_NORMATTN_NORM0PITCH_NORM );
emit_soundiEntityCHAN_VOICEMINE_SOUND_CHARGEVOL_NORMATTN_NORM0PITCH_NORM );

entity_set_floatiEntityEV_FL_nextthinkget_gametime( ) + 0.6 );
}

public 
Func_RemoveMinesByOwneriPlayer ) {
static 
iEntityszClassName32 ];
for( 
iEntity 0iEntity MAX_ENTITIES 1iEntity++ ) {
if( !
is_valid_entiEntity ) )
continue;

szClassName] = '^0';
entity_get_classnameiEntityszClassName );

if( 
equalszClassNameMINE_CLASSNAME ) )
if( 
entity_get_intiEntityEV_INT_iuser2 ) == iPlayer )
remove_entityiEntity );
}
}

Func_ExplodeiEntity ) {
g_iPlantedMinesentity_get_owneriEntity ) ]--;

static 
FloatflOrigin], FloatflZombieOrigin], FloatflHealthFloatflVelocity];
entity_get_vectoriEntityEV_VEC_originflOrigin );

message_beginMSG_BROADCASTSVC_TEMPENTITY );
write_byteTE_EXPLOSION );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
write_shortg_hExplode );
write_byte55 );
write_byte15 );
write_byte);
message_end( );

message_beginMSG_BROADCASTSVC_TEMPENTITY );
write_byteTE_EXPLOSION );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
write_shortg_hExplode );
write_byte65 );
write_byte15 );
write_byte);
message_end( );

message_beginMSG_BROADCASTSVC_TEMPENTITY );
write_byteTE_EXPLOSION );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
engfuncEngFunc_WriteCoordflOrigin] );
write_shortg_hExplode );
write_byte85 );
write_byte15 );
write_byte);
message_end( );

static 
iZombie;
for( 
iZombie 1iZombie MAX_PLAYERS 1iZombie++ ) {
if( 
is_user_connectediZombie ) ) {
if( 
is_user_aliveiZombie ) ) {
entity_get_vectoriZombieEV_VEC_originflZombieOrigin );

if( 
get_distance_fflOriginflZombieOrigin ) < 360.0 ) {
flHealth entity_get_floatiZombieEV_FL_health );
entity_get_vectoriZombieEV_VEC_velocityflVelocity );

flVelocity] += 456.0;
flVelocity] += 320.0;
flVelocity] += 299.0;

entity_set_vectoriZombieEV_VEC_velocityflVelocity );

if( 
zp_get_user_zombieiZombie ) )
fm_set_user_healthiZombiefloatmaxflHealth random_float1600.02800.0 ), 0.0 ) );
}
}
}
}

remove_entityiEntity );

}

public 
Forward_ThinkiEntity ) {
static 
FloatflGameTimeiStatus;
flGameTime get_gametime( );
iStatus entity_get_statusiEntity );

switch( 
iStatus ) {
case 
MINE_OFF: {
entity_set_intiEntityEV_INT_iuser1MINE_ON );
entity_set_floatiEntityEV_FL_takedamageDAMAGE_YES );
entity_set_intiEntityEV_INT_solidSOLID_BBOX );
entity_set_floatiEntityEV_FL_healthMINE_HEALTH 1000.0 );

emit_soundiEntityCHAN_VOICEMINE_SOUND_ACTIVATEVOL_NORMATTN_NORM0PITCH_NORM );
}

case 
MINE_ON: {
static 
FloatflHealth;
flHealth entity_get_floatiEntityEV_FL_health );

if( 
flHealth <= 1000.0 ) {
Func_ExplodeiEntity );

return 
FMRES_IGNORED;
}
}
}

if( 
is_valid_entiEntity ) )
entity_set_floatiEntityEV_FL_nextthinkflGameTime 0.1 );

return 
FMRES_IGNORED;
}

public 
fm_set_user_healthiPlayerFloatflHealth )
flHealth set_peviPlayerpev_healthflHealth ) : dllfuncDLLFunc_ClientKilliPlayer ); 
__________________
Skype: cristi.c94
SteamID: cristic_1994

Last edited by ESPADONGAMING; 10-02-2013 at 17:37.
ESPADONGAMING is offline
Send a message via MSN to ESPADONGAMING Send a message via Yahoo to ESPADONGAMING Send a message via Skype™ to ESPADONGAMING
Nano x
Member
Join Date: Feb 2014
Location: Lebanon, beirut
Old 06-18-2014 , 10:20   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #7

try this.

public Forward_Think( iEntity ) {
static Float: flGameTime, iStatus;
flGameTime = get_gametime( );
iStatus = entity_get_status( iEntity );

switch( iStatus )
{
case MINE_OFF:
{
entity_set_int( iEntity, EV_INT_iuser1, MINE_ON );
entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_YES );
entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );
entity_set_float( iEntity, EV_FL_health, MINE_HEALTH + 1000.0 );

emit_sound( iEntity, CHAN_VOICE, MINE_SOUND_ACTIVATE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}

case MINE_ON:
{
static Float: flHealth;
flHealth = entity_get_float( iEntity, EV_FL_health );

if( is_user_alive( entity_get_owner( iEntity ) ) )
{
if( entity_get_owner( iEntity ) )
{
if( pev( iEntity, pev_iuser3) == 1 )
set_hudmessage(0, 200, 100, 0.05, 0.3, 0, 0.0, 0.12, 2.0, 1.0, -1),
show_hudmessage( entity_get_owner( iEntity ), "Lasermine #1 HP: %0.0f", flHealth - 1000.0 );

else
set_hudmessage(0, 200, 100, 0.05, 0.33, 0, 0.0, 0.12, 2.0, 1.0, -1),
show_hudmessage( entity_get_owner( iEntity ), "Lasermine #2 HP: %0.0f", flHealth - 1000.0 );
}

if( flHealth <= 1000.0 )
{
Func_Explode( iEntity );

return FMRES_IGNORED;
}
}
}
}

if( is_valid_ent( iEntity ) )
entity_set_float( iEntity, EV_FL_nextthink, flGameTime + 0.1 );

return FMRES_IGNORED;
}
Nano x is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 06-18-2014 , 21:02   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #8

Sorry, I have tried the plugin but It have 2 problems:

1. When we open the extra item menu, the laser mine option did not appear. However, we still can buy it by typing /lm.

2. After we buy the laser mine and plant both of the laser mines on the wall, it only show:
Quote:
Lasermine #2 HP: 800
Below is the sma. file.
Attached Files
File Type: sma Get Plugin or Get Source (zp_lasermine_282 (Beta).sma - 838 views - 14.9 KB)
zmd94 is offline
HeKeR
Junior Member
Join Date: Jun 2014
Old 06-26-2014 , 05:18   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #9

this lasermine work 100% show health 100%

Code:
#include < amxmodx >
#include < fakemeta >
#include < engine >
#include < hamsandwich >
#include < xs >
#include < fakemeta_util >
#include <colorchat>

native zp_get_user_zombie( iPlayer );
native zp_get_user_ammo_packs( iPlayer );
native zp_set_user_ammo_packs( iPlayer, iPacks );
native zp_get_user_nemesis( i );
native zp_is_lnj_round( );
native Float: HattrickRange( i, j );
#define HattrickRange(%1,%2) entity_range(%1,%2)

new q;

#define MAX_ENTITIES		600
#define MAX_PLAYERS		32
#define MINE_ON			1
#define MINE_OFF			0
#define TASK_CREATE		84765
#define TASK_REMOVE		86766
#define MINE_COST			6
#define MINE_CLASSNAME		"zp_trip_mine"
#define MINE_MODEL_EXPLODE	"sprites/zerogxplode.spr"
#define MINE_MODEL_VIEW		"models/ZmS-ZomBIE/v_laser_mine.mdl"
#define MINE_SOUND_ACTIVATE	"weapons/mine_activate.wav"
#define MINE_SOUND_CHARGE		"weapons/mine_charge.wav"
#define MINE_SOUND_DEPLOY		"weapons/mine_deploy.wav"
#define MINE_HEALTH		800.0
#define entity_get_owner(%0)		entity_get_int( %0, EV_INT_iuser2 )
#define entity_get_status(%0)		entity_get_int( %0, EV_INT_iuser1 )
#define entity_get_classname(%0,%1)	entity_get_string( %0, EV_SZ_classname, %1, charsmax( %1 ) )
const FFADE_IN = 0x0000
new g_iTripMines[ 33 ];
new g_iPlantedMines[ 33 ];
new g_iPlanting[ 33 ];
new g_iRemoving[ 33 ];
new g_hExplode;

public plugin_init( )
{
	register_plugin( "[ZP] Trip Mines", "1.0", "R.I.P" );
	
	register_clcmd( "say /lm", "Command_Buy" );
	register_clcmd( "say lm", "Command_Buy" );
	q=get_user_msgid("SayText");
	register_clcmd( "+setlaser", "Command_Plant" );
	register_clcmd( "+dellaser", "Command_Take" );
	
	register_logevent( "Event_RoundStart", 2, "1=Round_Start" );
	
	register_think( MINE_CLASSNAME, "Forward_Think" );
}

qwerty(number = 0) 
{ 
 static str[15], strpointed[15], len, c, i; c = 0 
 num_to_str(number, str, 14) 
 len = strlen(str) 
 strpointed = "" 
  
 for (i = 0 ; i < len; i++) 
 { 
  if (i != 0 && ((len-i)%3==0)) 
  { 
   add(strpointed, 14, ",", 1) 
   c++ 
   add(strpointed[i+c], 1, str[i], 1) 
  } 
  else add(strpointed[i+c], 1, str[i], 1) 
 } 

 return strpointed 
}

public plugin_precache( )
{
	engfunc( EngFunc_PrecacheModel, MINE_MODEL_VIEW );
	
	engfunc( EngFunc_PrecacheSound, MINE_SOUND_ACTIVATE );
	engfunc( EngFunc_PrecacheSound, MINE_SOUND_CHARGE );
	engfunc( EngFunc_PrecacheSound, MINE_SOUND_DEPLOY );
	
	g_hExplode = engfunc( EngFunc_PrecacheModel, MINE_MODEL_EXPLODE );
}

public client_disconnect( iPlayer )
{
	g_iTripMines[ iPlayer ] = 0;
	g_iPlanting[ iPlayer ] = false;
	g_iRemoving[ iPlayer ] = false;
	
	if( g_iPlantedMines[ iPlayer ] )
	{
		Func_RemoveMinesByOwner( iPlayer );
		
		g_iPlantedMines[ iPlayer ] = 0;
	}
	
	remove_task( iPlayer + TASK_REMOVE );
	remove_task( iPlayer + TASK_CREATE );
}

public Command_Buy( iPlayer )
{
	if( !is_user_alive( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Alive ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_get_user_zombie( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Human ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_get_user_ammo_packs( iPlayer ) < MINE_COST )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You need ^x04%i^x01 Ammo packs ^x04!!!", MINE_COST );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_is_lnj_round( ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You can't buy a ^x04Tripmine^x01 into an ^x04Armageddon ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	zp_set_user_ammo_packs( iPlayer, zp_get_user_ammo_packs( iPlayer ) - MINE_COST );
	
	g_iTripMines[ iPlayer ]++;
	
	ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You bought a ^x04Trip mine.^x01 Press ^x04V^x01 to plant it or^x04 C ^x01to ^x04take it ^x01!!!" );
	
	client_cmd( iPlayer, "bind v +setlaser" );
	client_cmd( iPlayer, "bind c +dellaser" );
	
	return PLUGIN_CONTINUE;
}

public Command_Plant( iPlayer )
{
	if( !is_user_alive( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Alive ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_get_user_zombie( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Human ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( !g_iTripMines[ iPlayer ] )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You don't have a ^x04Tripmine^x01 to ^x04plant ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( g_iPlantedMines[ iPlayer ] > 1 )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You can ^x04plant^x01 only ^x042 Mines ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_is_lnj_round( ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You can't buy a ^x04Tripmine^x01 into an ^x04Armageddon ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( g_iPlanting[ iPlayer ] || g_iRemoving[ iPlayer ] )
		return PLUGIN_CONTINUE;
	
	if( CanPlant( iPlayer ) ) {
		g_iPlanting[ iPlayer ] = true;
		
		message_begin( MSG_ONE_UNRELIABLE, 108, _, iPlayer );
		write_byte( 1 );
		write_byte( 0 );
		message_end( );
		
		set_task( 1.2, "Func_Plant", iPlayer + TASK_CREATE );
	}
	
	return PLUGIN_CONTINUE;
}

public Command_Take( iPlayer )
{
	if( !is_user_alive( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Alive ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( zp_get_user_zombie( iPlayer ) )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You should be ^x04Human ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( !g_iPlantedMines[ iPlayer ] )
	{
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You don't have a ^x04planted mine ^x01!!!" );
		
		return PLUGIN_CONTINUE;
	}
	
	if( g_iPlanting[ iPlayer ] || g_iRemoving[ iPlayer ] )
		return PLUGIN_CONTINUE;
	
	if( CanTake( iPlayer ) ) {
		g_iRemoving[ iPlayer ] = true;
		
		message_begin( MSG_ONE_UNRELIABLE, 108, _, iPlayer );
		write_byte( 1 );
		write_byte( 0 );
		message_end( );
		
		set_task( 1.2, "Func_Take", iPlayer + TASK_REMOVE );
	}
	
	return PLUGIN_CONTINUE;
}

public Event_RoundStart( ) {
	static iEntity, szClassName[ 32 ], iPlayer;
	for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
		if( !is_valid_ent( iEntity ) )
			continue;
		
		szClassName[ 0 ] = '^0';
		entity_get_classname( iEntity, szClassName );
		
		if( equal( szClassName, MINE_CLASSNAME ) )
			remove_entity( iEntity );
	}
	
	for( iPlayer = 1; iPlayer < 33; iPlayer++ ) {
		g_iTripMines[ iPlayer ] = 0;
		g_iPlantedMines[ iPlayer ] = 0;
	}
}

public Func_Take( iPlayer ) {
	iPlayer -= TASK_REMOVE;
	
	g_iRemoving[ iPlayer ] = false;
	
	static iEntity, szClassName[ 32 ], Float: flOwnerOrigin[ 3 ], Float: flEntityOrigin[ 3 ];
	for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
		if( !is_valid_ent( iEntity ) )
			continue;
		
		szClassName[ 0 ] = '^0';
		entity_get_classname( iEntity, szClassName );
		
		if( equal( szClassName, MINE_CLASSNAME ) ) {
			if( entity_get_owner( iEntity ) == iPlayer ) {
				entity_get_vector( iPlayer, EV_VEC_origin, flOwnerOrigin );
				entity_get_vector( iEntity, EV_VEC_origin, flEntityOrigin );
				
				if( get_distance_f( flOwnerOrigin, flEntityOrigin ) < 55.0 ) {
					g_iPlantedMines[ iPlayer ]--;
					g_iTripMines[ iPlayer ]++;
					
					remove_entity( iEntity );
					
					break;
				}
			}
		}
	}
}

public bool: CanTake( iPlayer ) {
	static iEntity, szClassName[ 32 ], Float: flOwnerOrigin[ 3 ], Float: flEntityOrigin[ 3 ];
	for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
		if( !is_valid_ent( iEntity ) )
			continue;
		
		szClassName[ 0 ] = '^0';
		entity_get_classname( iEntity, szClassName );
		
		if( equal( szClassName, MINE_CLASSNAME ) ) {
			if( entity_get_owner( iEntity ) == iPlayer ) {
				entity_get_vector( iPlayer, EV_VEC_origin, flOwnerOrigin );
				entity_get_vector( iEntity, EV_VEC_origin, flEntityOrigin );
				
				if( get_distance_f( flOwnerOrigin, flEntityOrigin ) < 55.0 )
					return true;
			}
		}
	}
	
	return false;
}

public bool: CanPlant( iPlayer ) {
	static Float: flOrigin[ 3 ];
	entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );
	
	static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
	velocity_by_aim( iPlayer, 64, flTraceDirection );
	flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
	flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
	flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];
	
	static Float: flFraction, iTr;
	iTr = 0;
	engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
	get_tr2( iTr, TR_vecEndPos, flTraceResult );
	get_tr2( iTr, TR_vecPlaneNormal, flNormal );
	get_tr2( iTr, TR_flFraction, flFraction );
	
	if( flFraction >= 1.0 ) {
		ColorChat(iPlayer,GREY,"^x04-[*ZmS*]-^x01 You must plant the ^x04Tripmine^x01 on a ^x04Wall ^x01!!!" );
		
		return false;
	}
	
	return true;
}

public Func_Plant( iPlayer ) {
	iPlayer -= TASK_CREATE;
	
	g_iPlanting[ iPlayer ] = false;
	
	static Float: flOrigin[ 3 ];
	entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );
	
	static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
	velocity_by_aim( iPlayer, 128, flTraceDirection );
	flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
	flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
	flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];
	
	static Float: flFraction, iTr;
	iTr = 0;
	engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
	get_tr2( iTr, TR_vecEndPos, flTraceResult );
	get_tr2( iTr, TR_vecPlaneNormal, flNormal );
	get_tr2( iTr, TR_flFraction, flFraction );
	
	static iEntity;
	iEntity = create_entity( "info_target" );
	
	if( !iEntity )
		return;
	
	entity_set_string( iEntity, EV_SZ_classname, MINE_CLASSNAME );
	entity_set_model( iEntity, MINE_MODEL_VIEW );
	entity_set_size( iEntity, Float: { -4.0, -4.0, -4.0 }, Float: { 4.0, 4.0, 4.0 } );
	
	entity_set_int( iEntity, EV_INT_iuser2, iPlayer );
	
	g_iPlantedMines[ iPlayer ]++;

	set_pev( iEntity, pev_iuser3, g_iPlantedMines[ iPlayer ] );

	fm_set_rendering(iEntity, kRenderFxGlowShell, 42, 112, 209, kRenderNormal, 16);
	
	entity_set_float( iEntity, EV_FL_frame, 0.0 );
	entity_set_float( iEntity, EV_FL_framerate, 0.0 );
	entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_FLY );
	entity_set_int( iEntity, EV_INT_solid, SOLID_NOT );
	entity_set_int( iEntity, EV_INT_body, 3 );
	entity_set_int( iEntity, EV_INT_sequence, 7 );
	entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_NO );
	entity_set_int( iEntity, EV_INT_iuser1, MINE_OFF );
	
	static Float: flNewOrigin[ 3 ], Float: flEntAngles[ 3 ];
	flNewOrigin[ 0 ] = flTraceResult[ 0 ] + ( flNormal[ 0 ] * 8.0 );
	flNewOrigin[ 1 ] = flTraceResult[ 1 ] + ( flNormal[ 1 ] * 8.0 );
	flNewOrigin[ 2 ] = flTraceResult[ 2 ] + ( flNormal[ 2 ] * 8.0 );
	
	entity_set_origin( iEntity, flNewOrigin );
	
	vector_to_angle( flNormal, flEntAngles );
	entity_set_vector( iEntity, EV_VEC_angles, flEntAngles );
	flEntAngles[ 0 ] *= -1.0;
	flEntAngles[ 1 ] *= -1.0;
	flEntAngles[ 2 ] *= -1.0;
	entity_set_vector( iEntity, EV_VEC_v_angle, flEntAngles );
	
	g_iTripMines[ iPlayer ]--;
	
	emit_sound( iEntity, CHAN_WEAPON, MINE_SOUND_DEPLOY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
	emit_sound( iEntity, CHAN_VOICE, MINE_SOUND_CHARGE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
	
	entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 0.6 );
}

public Func_RemoveMinesByOwner( iPlayer ) {
	static iEntity, szClassName[ 32 ];
	for( iEntity = 0; iEntity < MAX_ENTITIES + 1; iEntity++ ) {
		if( !is_valid_ent( iEntity ) )
			continue;
		
		szClassName[ 0 ] = '^0';
		entity_get_classname( iEntity, szClassName );
		
		if( equal( szClassName, MINE_CLASSNAME ) )
			if( entity_get_int( iEntity, EV_INT_iuser2 ) == iPlayer )
				remove_entity( iEntity );
	}
}

Func_Explode( iEntity ) {
	g_iPlantedMines[ entity_get_owner( iEntity ) ]--;
	
	static Float: flOrigin[ 3 ];
	entity_get_vector( iEntity, EV_VEC_origin, flOrigin );
	
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
	write_byte( TE_EXPLOSION );
	engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
	write_short( g_hExplode );
	write_byte( 55 );
	write_byte( 15 );
	write_byte( 0 );
	message_end( );
	
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
	write_byte( TE_EXPLOSION );
	engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
	write_short( g_hExplode );
	write_byte( 65 );
	write_byte( 15 );
	write_byte( 0 );
	message_end( );
	
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
	write_byte( TE_EXPLOSION );
	engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
	engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
	write_short( g_hExplode );
	write_byte( 85 );
	write_byte( 15 );
	write_byte( 0 );
	message_end( );
	
	for( new i = 1; i < 33; i++ )
	{
		if( !is_user_connected( i ) || !is_user_alive( i ) ) continue;
		if( zp_get_user_zombie( i ) )
		{
			static Float: fDistance, Float: fDamage;

			fDistance = HattrickRange( i, iEntity );

			if( fDistance < 340 )
			{
				fDamage = 1900 - fDistance;

				if( !zp_get_user_nemesis( i ) )
					fDamage *= 0.75;

				static Float: fVelocity[ 3 ];
				pev( i, pev_velocity, fVelocity );

				xs_vec_mul_scalar( fVelocity, 1.75, fVelocity );

				set_pev( i, pev_velocity, fVelocity );

				message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenFade" ), _, i );
				write_short( 4096 );
				write_short( 4096 );
				write_short( FFADE_IN );
				write_byte( 255 );
				write_byte( 0 );
				write_byte( 0 );
				write_byte( 225 );
				message_end( );

				message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenShake" ), _, i );
				write_short( 4096 * 19 );
				write_short( 4096 * 7 );
				write_short( 4096 * 24 );
				message_end( );

				if( float( get_user_health( i ) ) - fDamage > 0 )
					ExecuteHamB( Ham_TakeDamage, i, iEntity, entity_get_owner( iEntity ), fDamage, DMG_BLAST );

				else ExecuteHamB( Ham_Killed, i, entity_get_owner( iEntity ), 2 );

				static cName[ 32 ]; get_user_name( i, cName, 31 );
				Message( entity_get_owner( iEntity ), "^x04-[*ZmS*]-^x01 Damage to^x03 %s^x01 ::^x04 %0.0f damage", cName,fDamage );
			}
		}
	}

	for( new i = 1; i < 33; i++ )
	{
		if( !is_user_connected( i ) || !is_user_alive( i ) )
			continue;
		if( !zp_get_user_zombie( i ) )
		{
			if( HattrickRange( i, iEntity ) < 340 )
			{
				static Float: fVelocity[ 3 ];
				pev( i, pev_velocity, fVelocity );

				xs_vec_mul_scalar( fVelocity, 1.5, fVelocity );

				set_pev( i, pev_velocity, fVelocity );

				message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenShake" ), _, i );
				write_short( 4096 * 19 );
				write_short( 4096 * 7 );
				write_short( 4096 * 24 );
				message_end( );
			}
		}
	}

	remove_entity( iEntity );
}

public Forward_Think( iEntity ) {
	static Float: flGameTime, iStatus;
	flGameTime = get_gametime( );
	iStatus = entity_get_status( iEntity );
	
	switch( iStatus ) {
		case MINE_OFF: {
			entity_set_int( iEntity, EV_INT_iuser1, MINE_ON );
			entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_YES );
			entity_set_int( iEntity, EV_INT_solid, SOLID_BBOX );
			entity_set_float( iEntity, EV_FL_health, MINE_HEALTH + 1000.0 );
			
			emit_sound( iEntity, CHAN_VOICE, MINE_SOUND_ACTIVATE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
		}
		
		case MINE_ON: {
			static Float: flHealth;
			flHealth = entity_get_float( iEntity, EV_FL_health );

			if( is_user_alive( entity_get_owner( iEntity ) ) )
			{
				if( pev( iEntity, pev_iuser3 ) == 1 )
					set_hudmessage(0, 200, 100, 0.05, 0.3, 0, 0.0, 0.12, 2.0, 1.0, -1),
					show_hudmessage( entity_get_owner( iEntity ), "Lasermine #1 :: %0.0f HP", flHealth - 1000.0 );

				else
					set_hudmessage(0, 200, 100, 0.05, 0.32, 0, 0.0, 0.12, 2.0, 1.0, -1),
					show_hudmessage( entity_get_owner( iEntity ), "Lasermine #2 :: %0.0f HP", flHealth - 1000.0 );
			}

			if( flHealth <= 1000.0 ) {
				Func_Explode( iEntity );
				
				return FMRES_IGNORED;
			}
		}
	}
	
	if( is_valid_ent( iEntity ) )
		entity_set_float( iEntity, EV_FL_nextthink, flGameTime + 0.1 );
	
	return FMRES_IGNORED;
}
Message( v, c[ ], any: ... )
{
	static cBuffer[ 192 ];
	vformat( cBuffer, 191, c, 3 );

	if( v )
	{
		message_begin( MSG_ONE_UNRELIABLE, q, _, v );
		write_byte( v );
		write_string( cBuffer );
		message_end( );
	}

	else
	{
		static i[ 32 ], j, k;
		get_players( i, j, "ch" );
		for( k = 0; k < j; k++ )
		{
			message_begin( MSG_ONE_UNRELIABLE, q, _, i[ k ] );
			write_byte( i[ k ] );
			write_string( cBuffer );
			message_end( );
		}
	}
}
HeKeR is offline
Drissdev1
Senior Member
Join Date: Jun 2014
Old 06-26-2014 , 06:09   Re: Show Lm(Laser Mine) Health In HuD
Reply With Quote #10

Thank you and I give all thanks to you it's like () and I've been looking about 5 months ago.
HeKeR <3
Drissdev1 is offline
Reply



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 21:21.


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