PHP Code:
public explosion_spwn(iEnt)
{
new Float:flvEnd[3];
pev(iEnt, pev_origin, flvEnd);
new inflictor = pev(iEnt, pev_owner);
client_print(0, print_chat, "OWNER: %i", inflictor);
new szClassname[32];
pev(inflictor, pev_classname, szClassname, 31);
client_print(0, print_chat, "CLASSNAME: %s", szClassname);
new Float:flvStart[3];
pev(inflictor, pev_origin, flvStart);
client_print(0, print_chat, "ORIGIN OF CANNON: %f %f %f", flvStart[0], flvStart[1], flvStart[2]);
new Float:angles[3], Float:flvForward[3];
pev(inflictor, pev_angles, angles);
angle_vector(angles, ANGLEVECTOR_FORWARD, flvForward);
flvEnd[0] += (flvForward[0] * 100.0);
flvEnd[1] += (flvForward[1] * 100.0);
flvEnd[2] += (flvForward[2] * 100.0);
client_print(0, print_chat, "ANGLES OF CANNON: %f %f %f", angles[0], angles[1], angles[2]);
new Float:NormalVector[3];
new trace = create_tr2();
engfunc(EngFunc_TraceLine, flvStart, flvEnd, IGNORE_MONSTERS, inflictor, trace);
get_tr2(trace, TR_vecPlaneNormal, NormalVector);
client_print(0, print_chat, "NORMAL_VEC: %f %f %f", NormalVector[0], NormalVector[1], NormalVector[2]);
free_tr2(trace);
new Float:fvGibsOrigin[3];
pev(iEnt, pev_origin, fvGibsOrigin);
fvGibsOrigin[0] = fvGibsOrigin[0] + (NormalVector[0] * 10.0);
fvGibsOrigin[1] = fvGibsOrigin[1] + (NormalVector[1] * 10.0);
fvGibsOrigin[2] = fvGibsOrigin[2] + (NormalVector[2] * 10.0);
toss_gibs(fvGibsOrigin);
}