#include #include #include #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 }