hey guys i just found this in the amx forums and i would like to port it but i don't know alot about engine and fm so could someone plz help me?
Code:
/*******************************************************************************
Shoot At Nades
Author: KRoTaL
Version: 1.0
1.0 Release
If you shoot at a nade (HE, FlashBang or SmokeGrenade), it will explode.
You can set also change the fuse time of each nade.
Cvars:
amx_shootatnades "1" - 0: you can't shoot at nades
1: you can shoot at nades
amx_changenadesfusetime "1" - 0: default fuse time
1: fuse time is set according to the values of the following cvars
amx_he_fusetime "5.0" - number of seconds before HE eplosion
amx_fb_fusetime "5.0" - number of seconds before FlashBang eplosion
amx_sg_fusetime "5.0" - number of seconds before Smoke Grenade eplosion
Setup:
Install the amx file.
Enable VexdUM.
*******************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#define STEP 40.0
#define NADE_RADIUS 20.0
new g_lastwpn[33]
new g_lastammo[33]
new g_iStart[3], g_iEnd[3]
new Float:g_fStart[3], Float:g_fEnd[3]
new Float:g_distance
new Float:g_fVel[3]
new g_heModel[] = "models/w_hegrenade.mdl"
new g_fbModel[] = "models/w_flashbang.mdl"
new g_sgModel[] = "models/w_smokegrenade.mdl"
public plugin_init() {
register_plugin("Shoot At Nades", "1.0", "KRoTaL")
register_cvar("amx_shootatnades", "1")
register_cvar("amx_changenadesfusetime", "1")
register_cvar("amx_he_fusetime", "5.0")
register_cvar("amx_fb_fusetime", "5.0")
register_cvar("amx_sg_fusetime", "5.0")
register_event("CurWeapon", "eventCurWeapon", "be", "1=1", "3>0")
}
public set_model(entity, const model[]) {
if(get_cvar_num("amx_changenadesfusetime") == 1) {
if(is_entity(entity) && entity_get_int(entity, EV_INT_movetype) == MOVETYPE_BOUNCE) {
if(equal(model, g_heModel)) {
entity_set_float(entity, EV_FL_dmgtime, get_gametime() + get_cvar_float("amx_he_fusetime"))
}
else if(equal(model, g_fbModel)) {
entity_set_float(entity, EV_FL_dmgtime, get_gametime() + get_cvar_float("amx_fb_fusetime"))
}
else if(equal(model, g_sgModel)) {
entity_set_float(entity, EV_FL_dmgtime, get_gametime() + get_cvar_float("amx_sg_fusetime"))
}
}
}
return PLUGIN_CONTINUE
}
public eventCurWeapon(id)
{
new wpn = read_data(2)
new ammo = read_data(3)
if(get_cvar_num("amx_shootatnades") == 1 && find_entity(id, "grenade") > 0 && g_lastwpn[id] == wpn && g_lastammo[id] > ammo)
{
get_user_origin(id, g_iStart, 1)
get_user_origin(id, g_iEnd, 4)
IVecFVec(g_iStart, g_fStart)
IVecFVec(g_iEnd, g_fEnd)
new model[64]
new ent = find_entity_sphere(id, g_fEnd, NADE_RADIUS)
while(ent > 0) {
if(entity_get_float(ent, EV_FL_dmgtime) > get_gametime()) {
model[0] = '^0'
entity_get_string(ent, EV_SZ_model, model, 63)
if(equal(model, g_heModel) || equal(model, g_fbModel) || equal(model, g_sgModel)) {
entity_set_float(ent, EV_FL_dmgtime, get_gametime()-0.1)
g_lastwpn[id] = wpn
g_lastammo[id] = ammo
return PLUGIN_CONTINUE
}
}
ent = find_entity_sphere(ent, g_fEnd, NADE_RADIUS)
}
g_distance = vector_distance(g_fStart, g_fEnd)
if(g_distance > STEP) {
VelocityByAim(id, floatround(STEP), g_fVel)
new iStop=0
do {
g_fStart[0] += g_fVel[0]
g_fStart[1] += g_fVel[1]
g_fStart[2] += g_fVel[2]
ent = find_entity_sphere(id, g_fStart, NADE_RADIUS)
while(ent > 0) {
if(entity_get_float(ent, EV_FL_dmgtime) > get_gametime()) {
model[0] = '^0'
entity_get_string(ent, EV_SZ_model, model, 63)
if(equal(model, g_heModel) || equal(model, g_fbModel) || equal(model, g_sgModel)) {
entity_set_float(ent, EV_FL_dmgtime, get_gametime()-0.1)
g_lastwpn[id] = wpn
g_lastammo[id] = ammo
return PLUGIN_CONTINUE
}
}
ent = find_entity_sphere(ent, g_fEnd, NADE_RADIUS)
}
iStop++
} while(vector_distance(g_fStart, g_fEnd) > (STEP*1.5) && (iStop < 100))
}
}
g_lastwpn[id] = wpn
g_lastammo[id] = ammo
return PLUGIN_CONTINUE
}