All pastes #403193 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-03-20 05:55 UTC
rendered paste body
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR  "SAMURAI"


#define ROCK_MINS Float:{ -78.0,-5.0,-156.0 }
#define ROCK_MAXS Float:{ 78.0, 5.0, 156.0 }


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_concmd("say place","place_rock",ADMIN_BAN,"place rock");
	
	
}

public place_rock(id,level,cid)
{
	if(!cmd_access(id,level,cid,1))
		return PLUGIN_HANDLED;
		

	new Float:fVec[3], Float:fOrigin[3];
	new angle;	
	velocity_by_aim(id,150,fVec);
	pev(id, pev_origin, fOrigin);
	fOrigin[0] += fVec[0];
	fOrigin[1] += fVec[1];
	fOrigin[2] -= 20.0;
	
	pev(id, pev_v_angle, fVec);
	angle = floatround(fVec[1]);
	if (angle < 0)
		angle += 360;
	if (angle > 180)
		angle -= 180;
	make_rock(fOrigin, (angle > 45 && angle < 135));
		
	return PLUGIN_HANDLED
	
}

public plugin_precache()
{
	precache_model("models/rockgibs.mdl");
}

make_rock(Float:origin[3], angle) 
{
	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall"))
	
	new Float:mins[3], Float:maxs[3];
	new Float:ftmp;
	
	set_pev(ent, pev_classname, "amxx_stone")
	mins = ROCK_MINS
	maxs = ROCK_MINS
	
	
	if(!angle)
	{
		ftmp = mins[1]
		mins[1] = mins[0]
		mins[0] = ftmp
		ftmp = maxs[1]
		maxs[1] = maxs[0]
		maxs[0] = ftmp	
		engfunc(EngFunc_SetModel, ent, "models/rockgibs.mdl")
	}
	
	else 
		engfunc(EngFunc_SetModel, ent, "models/rockgibs.mdl")
		

	dllfunc(DLLFunc_Spawn, ent)
	// set sizes etc.
	engfunc(EngFunc_SetSize, ent, ROCK_MINS, ROCK_MINS)
	set_pev(ent, pev_mins, mins)
	set_pev(ent, pev_maxs, maxs)
	set_pev(ent, pev_absmin, mins)
	set_pev(ent, pev_absmax, maxs)
	origin[0] += random_float(-0.4, 0.4)
	origin[1] += random_float(-0.4, 0.4)
	engfunc(EngFunc_SetOrigin, ent, origin)
	set_pev(ent, pev_movetype, MOVETYPE_FLY)
	set_pev(ent, pev_solid, SOLID_BBOX)
	set_pev(ent, pev_takedamage, DAMAGE_NO)
	
	return ent
}