/*
Plugin generated by AMXX-Studio
Plugin: [CoF] Abilites
Creator: Chrescoe1
Skype: Xailer24
*/
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta_util>
#define PLUGIN "New abilitys"
#define VERSION "0.4"
#define AUTHOR "Chrescoe1"
#define v_hands "models/cof/v_actions5.mdl"
#define RunSpeed 300.0
#define SpeedUpg 30.0
new
//Run
bool:in_run[33],
runbutton_num[33],
Float:RunButtonTime[33][2],
Float:OriginalMaxSpeed[33],
RunStade[33],
vModelName[128][33],
pModelName[128][33],
//Jump
bool:in_jump[33],
Float:JumpTime[33],
bool:free_fall[33],
//Deploy weapon after jump
bool:ForceWeaponDeploy[33],
Float:ForceDeployTime[33],
//Swim
bool:in_swim[33]
public plugin_precache()precache_model(v_hands)
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "Event_CurrentWeapon", "be", "1=1")
// Add your code here...
}
public Event_CurrentWeapon(id)
{
if(in_jump[id])
in_jump[id]=false,
ForceWeaponDeploy[id]=false
if(in_run[id])
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
in_run[id]=false
if(in_swim[id])
in_swim[id]=false
}
public client_connect(id)
OriginalMaxSpeed[id]=250.0,ForceWeaponDeploy[id]=false,
in_jump[id]=false,in_run[id]=false,in_swim[id]=false
public client_PreThink(id)
{
static Float:gametime
gametime=get_gametime()
if(is_user_alive(id))
//If on ladder or movetype_fly or movetype_noclip - block func
if(pev(id,pev_movetype)==MOVETYPE_FLY||pev(id,pev_movetype)==MOVETYPE_NOCLIP)
{
if(in_jump[id])
in_jump[id]=false,
ForceWeaponDeploy[id]=false,
deploy_weapon(id)
if(in_run[id])
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
in_run[id]=false,
deploy_weapon(id)
if(in_swim[id])
in_swim[id]=false,
deploy_weapon(id)
return
}
else
//Swimming
if(pev(id,pev_waterlevel)>1)
{
if(!in_swim[id])
{
if(in_jump[id])
in_jump[id]=false,
ForceWeaponDeploy[id]=false
if(in_run[id])
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
in_run[id]=false
if(pev(id,pev_waterlevel)<2)return
save_model(id)
set_pev(id, pev_viewmodel2, v_hands)
set_pev(id, pev_weaponmodel2, "")
set_pdata_float(id, 83, 999.9, 5) //Block attack
in_swim[id]=true
WeaponAnim(id,3)
return
}
}
else
//Run
if(pev(id,pev_flags)&FL_ONGROUND)
{
if(in_swim[id])
in_swim[id]=false,
deploy_weapon(id)
if(ForceWeaponDeploy[id])
if(ForceDeployTime[id]<gametime)ForceWeaponDeploy[id]=false,deploy_weapon(id)
if(in_jump[id])
{
WeaponAnim(id,7)
in_jump[id]=false
ForceWeaponDeploy[id]=true
ForceDeployTime[id]=gametime+0.25
}
if(pev(id,pev_button)&IN_FORWARD)
{
if(!(pev(id,pev_oldbuttons)&IN_FORWARD))
{
static x
switch(runbutton_num[id])
{
case 0:runbutton_num[id]=1,x=0
case 1:runbutton_num[id]=0,x=1
}
RunButtonTime[id][runbutton_num[id]]=gametime
if(gametime-RunButtonTime[id][x]<0.35)
{
in_run[id]=true
RunStade[id]=1
OriginalMaxSpeed[id]=fm_get_user_maxspeed(id)
if(OriginalMaxSpeed[id]<=1.0)OriginalMaxSpeed[id]=250.0
save_model(id)
set_pev(id, pev_viewmodel2, v_hands)
set_pev(id, pev_weaponmodel2, "")
set_pdata_float(id, 83,999.9, 5) //Block attack
set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id])
WeaponAnim(id,4)
}
}
if(in_run[id])
{
static Float:Velocity[3]
pev(id,pev_velocity,Velocity);
if(gametime-RunButtonTime[id][runbutton_num[id]]>1.0)
if(vector_length(Velocity)<200.0)
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id]),
in_run[id]=false,
deploy_weapon(id)
else
if(RunStade[id]<5)
{
static Float:RunTime
RunTime=RunButtonTime[id][runbutton_num[id]]
if(gametime-RunTime>=3.4&&RunStade[id]<5)RunStade[id]=5,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
if(gametime-RunTime>=2.6&&RunStade[id]<4)RunStade[id]=4,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
if(gametime-RunTime>=1.8&&RunStade[id]<3)RunStade[id]=3,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
if(gametime-RunTime>=1.2&&RunStade[id]<2)RunStade[id]=2,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id]);else
if(gametime-RunTime>=0.6&&RunStade[id]<1)RunStade[id]=1,set_pev(id,pev_maxspeed,RunSpeed+SpeedUpg*RunStade[id])
}
}
}
else
if(in_run[id])
{
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id])
in_run[id]=false
deploy_weapon(id)
}
}
else
//Jump
if(!(pev(id,pev_flags)&FL_ONGROUND))
{
if(in_swim[id])
in_swim[id]=false,
deploy_weapon(id)
if(!in_jump[id])
{
static Float:Velocity[3]
pev(id,pev_velocity,Velocity);
if((Velocity[2]>300.0)||(Velocity[2]<-350.0)||in_run[id]&&(Velocity[2]>200.0)||(Velocity[2]<-400.0))
{
static Float:JumpPower
switch(RunStade[id])
{
case 1:JumpPower=1.0
case 2:JumpPower=1.09
case 3:JumpPower=1.18
case 4:JumpPower=1.27
case 5:JumpPower=1.36
}
set_pev(id,pev_maxspeed,OriginalMaxSpeed[id])
in_run[id]=false
RunStade[id]=1
Velocity[0]=Velocity[0]*JumpPower
Velocity[1]=Velocity[1]*JumpPower
Velocity[2]=Velocity[2]*JumpPower
set_pev(id,pev_velocity,Velocity)
save_model(id)
set_pev(id, pev_viewmodel2, v_hands)
set_pev(id, pev_weaponmodel2, "")
set_pdata_float(id, 83, 999.9, 5)
WeaponAnim(id,5)
in_jump[id]=true
free_fall[id]=false
JumpTime[id]=gametime
}
}
else
if(!free_fall[id])
if(gametime-JumpTime[id]>0.35)
free_fall[id]=false,WeaponAnim(id,6)
}
}
stock deploy_weapon(id)
{
static Temp_String[28]
get_weaponname(get_user_weapon(id), Temp_String, 27)
static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, Temp_String, id)
if(pev_valid(weapon_ent))ExecuteHam(Ham_Item_Deploy, weapon_ent),set_pdata_int(weapon_ent,54,0),set_pdata_int(weapon_ent,55,0)
if (contain(vModelName[id], v_hands)== -1)
set_pev(id, pev_viewmodel2, vModelName[id]),
set_pev(id, pev_weaponmodel2, pModelName[id])
}
stock WeaponAnim(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(0)
message_end()
}
stock save_model(id)
{
new Text[128]
pev(id, pev_viewmodel2, Text,127)
if (contain(Text, v_hands)== -1)
pev(id, pev_viewmodel2, vModelName[id],127)
pev(id, pev_weaponmodel2, Text,127)
if (contain(Text,"models/")!= -1)
pev(id, pev_weaponmodel2, pModelName[id],127)
}