Code:
////////////////////
#include <amxmodx>
#include <engine>
////////////////////
new Float:pOrigin[3]
new AimOrigin[33][3]
new OwnerID, Fire
////////////////////
public plugin_init()
{
register_plugin("RPG Rocket","0.1","knekter")
register_clcmd("fire_rocket","rocket_init")
}
public plugin_precache()
{
precache_model("models/rpgrocket.mdl")
Fire = precache_model("sprites/fire.spr")
return PLUGIN_CONTINUE
}
/////////////////////
public rocket_init(id)
{
new rocketID
rocketID = create_entity("info_target")
if(rocketID == 0)
return PLUGIN_CONTINUE
entity_set_string(rocketID,EV_SZ_classname,"RPG Rocket")
entity_set_model(rocketID,"models/rpgrocket.mdl")
entity_get_vector(id,EV_VEC_origin,pOrigin)
entity_set_origin(rocketID,pOrigin)
entity_set_int(rocketID,EV_INT_solid,1)
entity_set_int(rocketID,EV_INT_movetype,6)
OwnerID = entity_set_edict(rocketID,EV_ENT_owner,id)
get_user_origin(id,AimOrigin[id],3)
new pID[2]
pID[0] = id
set_task(0.1,"rocket_fired",0,pID,1)
return PLUGIN_CONTINUE
}
public rocket_fired(pID[0])
{
if(floatround(pOrigin[0]) > AimOrigin[pID[0]][0])
{
pOrigin[0] = (pOrigin[0] + 0.1)
}
if(floatround(pOrigin[0]) < AimOrigin[pID[0]][0])
{
pOrigin[0] = (pOrigin[0] - 0.1)
}
if(floatround(pOrigin[1]) > AimOrigin[pID[0]][1])
{
pOrigin[1] = (pOrigin[1] + 0.1)
}
if(floatround(pOrigin[1]) < AimOrigin[pID[0]][1])
{
pOrigin[1] = (pOrigin[1] - 0.1)
}
if(floatround(pOrigin[2]) > AimOrigin[pID[0]][2])
{
pOrigin[2] = (pOrigin[2] + 0.1)
}
if(floatround(pOrigin[0]) < AimOrigin[pID[0]][2])
{
pOrigin[2] = (pOrigin[2] - 0.1)
}
set_task(0.2,"rocket_fired",0,pID,1)
return PLUGIN_CONTINUE
}
public pfn_touch(ptr,ptd)
{
OwnerID = entity_get_edict(ptd,EV_ENT_owner)
if(ptr == OwnerID)
{
return PLUGIN_CONTINUE
}
else
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(AimOrigin[ptr][0])
write_coord(AimOrigin[ptr][1])
write_coord(AimOrigin[ptr][2])
write_short(Fire)
write_byte(20)
write_byte(5)
write_byte(0)
message_end()
}
remove_task(OwnerID)
return PLUGIN_CONTINUE
}