[NEED HELP] Multiple questions [Poor english inside :'(]
Hello there! I will put every question I've got here! So people don't blame me for "hi-jacking".... uhm that out of the way here are the things where I need help
In the case when using a conc_grenade. How to set the damage to 0??
PHP Code:
public plugin_init{
register_event("Damage", "hedamage_event", "b", "2!0", "4!0", "5!0", "6!0")
register_cvar("he_push","600.0")
}
public hedamage_event(id) {
new MAXPLAYERS
MAXPLAYERS = get_maxplayers()
new inflictor = entity_get_edict(id, EV_ENT_dmg_inflictor)
if (inflictor <= MAXPLAYERS)
return PLUGIN_CONTINUE
new classname2[8]
entity_get_string(inflictor, EV_SZ_classname, classname2, 7)
if (!equal(classname2, "grenade"))
return PLUGIN_CONTINUE
new Float:upVector[3]
upVector[0] = float(read_data(4))
upVector[1] = float(read_data(5))
upVector[2] = float(read_data(6))
new damagerept = read_data(2)
set_velocity_from_origin(id, upVector, get_cvar_float("he_push")*damagerept)
return PLUGIN_CONTINUE
}
The important value is damagerept (I think...) And I can't remove damage by using
PHP Code:
#define DMG_GRENADE (1 << 24)
public plugin_init()
{
RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
}
public func_TakeDamage(id, idinflictor, idattacker, Float:damage, damagebits)
{
if( damagebits & DMG_GRENADE )
{
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
or it will block the conc effect! Any idea?
And second thing! With this code I can set conc on different weapons but I'ld like to set vertival and horizontal conc on the m249 so that I can use it to make people moving upward and laterally!
Here's what I got so far!
PHP Code:
// 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 );
new Float:maxboost2 = get_pcvar_float( defrag_m249push );
if( !maxboost, !maxboost2 )
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);
}
}
lastammo[id] = ammo;
lastweap[id] = weap;
}
else
if( weap == CONC_WEAP2 && 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:radius2 = get_pcvar_float( defrag_m249radius );
if(dist <= radius2){
new Float:boost = maxboost2 - ( ( maxboost2 * dist) / radius2 );
set_velocity_from_origin(id, fVec, boost);
}
}
lastammo[id] = ammo;
lastweap[id] = weap;
}
}
Thx if you take time to help :)
|