Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#define PLUGIN_NAME "baza_alien"
#define PLUGIN_AUTHOR "author"
#define PLUGIN_VERSION "1.0"
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
#define ALIEN_TEAM CS_TEAM_T
#define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
new Float: Wallorigin[33][3];
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
new cvar_start_alien_hp;
new cvar_start_alien_ap;
new cvar_start_alien_gravity;
new cvar_start_alien_speed;
new cvar_start_alien_damage;
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
//Cvars Alien
cvar_start_alien_hp = register_cvar("alien_hp","300"); //Seteaza HP maxim pe care il poate avea Alien (default "500")
cvar_start_alien_ap = register_cvar("alien_ap","150"); //Seteaza AP maxim pe care il poate avea Alien (default "500")
cvar_start_alien_gravity = register_cvar("alien_gravity","0.375"); //Seteaza Gravity maxim pe care il poate avea Alien (default "1.0")
cvar_start_alien_speed = register_cvar("alien_speed","900.0"); //Seteaza Speed maxim pe care il poate avea Alien (default "2.0")
cvar_start_alien_damage = register_cvar("alien_damage", "3.0"); //Seteaza Damage maxim pe care il poate avea Alien (default "10.0")
RegisterHam(Ham_TakeDamage, "player", "Fw_TakeDamage" );
RegisterHam(Ham_Spawn, "player", "Player_Spawn_Post", 1);
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "Player_ResetMaxSpeed", 1);
RegisterHam(Ham_Touch, "player", "fw_PlayerTouch", 1);
register_forward(FM_PlayerPostThink, "fw_PlayerPostThink");
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public Player_Spawn_Post( id )
{
if( is_user_alive(id) )
{
if(cs_get_user_team(id) == ALIEN_TEAM )
{
set_user_gravity( id, get_pcvar_float( cvar_start_alien_gravity ) );
set_user_health( id, get_pcvar_num( cvar_start_alien_hp ) );
set_user_armor( id, get_pcvar_num( cvar_start_alien_ap ) );
set_user_footsteps(id, 1)
}
else
{
set_user_footsteps(id, 0)
set_user_gravity(id, 1.0)
}
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public Fw_TakeDamage( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
if( iInflictor == iAttacker && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == ALIEN_TEAM )
{
SetHamParamFloat( 4, fDamage * get_pcvar_float( cvar_start_alien_damage ) );
return HAM_HANDLED;
}
return HAM_IGNORED;
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public Player_ResetMaxSpeed( id )
{
if( is_user_alive(id) && cs_get_user_team(id) == ALIEN_TEAM && get_user_maxspeed(id) != 1.0 )
{
set_pev( id, pev_maxspeed, get_pcvar_float( cvar_start_alien_speed ) )
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public fw_PlayerTouch(id, world)
{
if( is_user_alive(id) && ALIEN_TEAM )
{
new ClassName[32];
pev(world, pev_classname, ClassName,(32-1));
if(equal(ClassName, "worldspawn") || equal(ClassName, "func_wall") || equal(ClassName, "func_breakable"))
pev(id, pev_origin, Wallorigin[id]);
}
return HAM_SUPERCEDE;
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
public fw_PlayerPostThink(id)
{
if( is_user_alive(id) && ALIEN_TEAM )
{
static Float:Origin[3];
pev(id, pev_origin, Origin);
static Button;
Button = pev(id, pev_button);
if(get_distance_f(Origin, Wallorigin[id]) <= 5.0 && !(pev(id, pev_flags) & FL_ONGROUND))
{
new Float:Velocity[3];
new ClimbSpeed = floatround(pev(id, pev_maxspeed) / 2.0);
if(Button & IN_FORWARD)
{
velocity_by_aim(id, ClimbSpeed, Velocity);
fm_set_user_velocity(id, Velocity);
}
else if(Button & IN_BACK)
{
velocity_by_aim(id, - ClimbSpeed, Velocity);
fm_set_user_velocity(id, Velocity);
}
else
{
set_pev(id, pev_origin, Wallorigin[id]);
velocity_by_aim(id, 0, Velocity);
fm_set_user_velocity(id, Velocity);
}
}
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/