So I hasn't got many times during the last days! But I'm back!
I'm rewritting the whol plugin from scratch and I've found how to implement server cvars for now =D
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN "DeFRAG"
#define AUTHOR "superNOVA_"
#define VERSION "1.0"
#define MAX_PLAYERS 20
new bool:g_bAlive[MAX_PLAYERS+1]
new lastammo[MAX_PLAYERS+1]
new lastweap[MAX_PLAYERS+1]
new defrag_scoutpush
new defrag_scoutradius
new g_defrag_nodamages
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
// SERVER CVARS
set_cvar_num ("sv_gravity", 600) // Set the server gravity 600 for DeFRAG is really good
set_cvar_num ("sv_maxspeed", 1500) // Set player maxspeed
set_cvar_num ("mp_startmoney", 0) // Set player start money [Don't make buy zone in DeFRAG just place armory_entity]
set_cvar_num ("mp_timelimit", 0) // Time before map changes
set_cvar_num ("sv_airaccelerate", 100)
set_cvar_num ("mp_freezetime", 0)
set_cvar_num ("mp_autoteambalance", 0)
set_cvar_num ("mp_limitteams", 0)
register_clcmd ( "+sprint", "defrag_start_sprint")
register_clcmd ( "-sprint", "defrag_stop_sprint")
RegisterHam(Ham_TakeDamage, "player", "defrag_nodamages")
// DeFRAG Sprint CVARS
#define KNIFE_SPRINT_SPEED 1500.0 // Define the speed when using +sprint cmd
#define KNIFE_DEFAULT_SPEED 500.0 // Define normal move speed with the knife (Default Cs1.6 = 250)
// DeFRAF Scout CVARS
defrag_scoutpush = register_cvar("scout_conc","1000.0"); // Force of the push
defrag_scoutradius = register_cvar("scout_radius","1000.0"); // Area covered by the push
#define CONC_WEAP CSW_SCOUT // Define wich weapon to use for having a conc push
// DeFRAG No Damages
g_defrag_nodamages = register_cvar ("mp_falldamage", "0.0") // Set the amount of damages taken from falling (1 = normal damages)
}
public Check_Alive(id)
{
g_bAlive[id] = bool:is_user_alive(id)
}
// DeFRAG Knife
new const g_szKnifeModel[] = "models/v_knife.mdl"; // To set the knife model! Easy if you want to use custom models (will make some soon just for DeFRAG)
const KNIFE_DRAW_ANIMATION = 3;
public defrag_start_sprint ( const PlayerId )
{
if ( get_user_weapon ( PlayerId ) == CSW_KNIFE )
{
UTIL_SetPlayerSpeed ( PlayerId, KNIFE_SPRINT_SPEED );
set_pev ( PlayerId, pev_viewmodel2, "" );
}
return PLUGIN_HANDLED;
}
public defrag_stop_sprint ( const PlayerId )
{
if( get_user_weapon( PlayerId ) == CSW_KNIFE )
{
UTIL_SetPlayerSpeed ( PlayerId, KNIFE_DEFAULT_SPEED );
set_pev( PlayerId, pev_viewmodel2, g_szKnifeModel );
set_pev( PlayerId, pev_weaponanim, KNIFE_DRAW_ANIMATION );
message_begin( MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, PlayerId );
write_byte( KNIFE_DRAW_ANIMATION );
write_byte( pev( PlayerId, pev_body ) );
message_end();
}
return PLUGIN_HANDLED;
}
UTIL_SetPlayerSpeed ( const PlayerId, const Float:Speed )
{
set_pev( PlayerId, pev_maxspeed, Speed );
engfunc( EngFunc_SetClientMaxspeed, PlayerId, Speed );
}
// DeFRAG scout
stock get_velocity_from_origin( ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3] )
{
new Float:fEntOrigin[3];
pev( ent, pev_origin, fEntOrigin );
// Velocity = Distance / Time
new Float:fDistance[3];
fDistance[0] = fEntOrigin[0] - fOrigin[0];
fDistance[1] = fEntOrigin[1] - fOrigin[1];
fDistance[2] = fEntOrigin[2] - fOrigin[2];
new Float:fTime = ( vector_distance( fEntOrigin,fOrigin ) / fSpeed );
fVelocity[0] = fDistance[0] / fTime;
fVelocity[1] = fDistance[1] / fTime;
fVelocity[2] = fDistance[2] / fTime;
return ( fVelocity[0] && fVelocity[1] && fVelocity[2] );
}
// Sets velocity of an entity (ent) away from origin with speed (speed)
stock set_velocity_from_origin( ent, Float:fOrigin[3], Float:fSpeed )
{
new Float:fVelocity[3];
get_velocity_from_origin( ent, fOrigin, fSpeed, fVelocity )
set_pev( ent, pev_velocity, fVelocity );
return ( 1 );
}
public make_tracer(id)
{
new Float:maxboost = get_pcvar_float(defrag_scoutpush);
if( !maxboost )
return;
new weap = read_data(2); // id of the weapon
new ammo = read_data(3); // ammo left in clip
if( weap == CONC_WEAP && g_bAlive[id] )
{
if( lastweap[id] == 0 )
lastweap[id] = weap;
if( lastammo[id] > ammo && lastweap[id] == weap )
{
new Vec[3], Float:fVec[3], Float:origin[3];
get_user_origin(id, Vec, 3);
IVecFVec(Vec, fVec);
pev(id, pev_origin, origin);
new Float:dist = get_distance_f( origin, fVec );
new Float:radius = get_pcvar_float(defrag_scoutradius)
if(dist <= radius)
{
new Float:boost = maxboost - ( ( maxboost * dist) / radius );
set_velocity_from_origin(id, fVec, boost);
}
}
}
}
// DeFRAG nodamages
public defrag_nodamages(id, ent, idattacker, Float:damage, damagebits)
{
if( damagebits != DMG_FALL )
return HAM_IGNORED
damage *= get_pcvar_float(g_defrag_nodamages)
SetHamParamFloat(4, damage)
return HAM_HANDLED
}
Here's a new version! Only problem is with the scout conc... If someone can figure it it will really help me