okay I wrote a quite simple plugin, it could be useful and someone could convert it into a "real" plugin, here's the source:
Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Wall"
#define VERSION "1.0"
#define AUTHOR "Basic-Master"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_wall", "cmdWall")
register_clcmd("amx_wallrotate", "cmdGaben")
}
public cmdWall(id) {
new wall = create_entity("func_wall")
entity_set_string(wall, EV_SZ_classname, "wall")
entity_set_model(wall, "models/wall.mdl") // I found it somewhere in the forums
// Set size and absmin+absmax values
new Float:mins[3]
new Float:maxs[3]
mins[0] = -90.0
mins[1] = -10.0
mins[2] = -20.0
maxs[0] = 90.0
maxs[1] = 10.0
maxs[2] = 75.0
entity_set_vector(wall, EV_VEC_mins, mins)
entity_set_vector(wall, EV_VEC_maxs, maxs)
entity_set_vector(wall, EV_VEC_absmin, mins)
entity_set_vector(wall, EV_VEC_absmax, maxs)
// Set angle
mins[0] = 0.0
mins[1] = 90.0
mins[2] = 0.0
entity_set_vector(wall, EV_VEC_angles, mins)
// Get user origin
new Float:someOrigin[3]
entity_get_vector(id, EV_VEC_origin, someOrigin)
// You can offset the origin here.
new offset = 200
new Float:adjustPos[3]
velocity_by_aim(id, offset, adjustPos)
// This prevents the wall from spawning in the current position of the user and make it spawn farther away from the user.
someOrigin[0] += adjustPos[0]
someOrigin[1] += adjustPos[1]
someOrigin[2] += adjustPos[2]
entity_set_origin(wall, someOrigin)
// Set other values
entity_set_int(wall, EV_INT_solid, SOLID_BBOX)
entity_set_int(wall, EV_INT_movetype, MOVETYPE_FLY)
// zomg!
}
public cmdGaben(id) {
new target, body
get_user_aiming(id, target, body)
if (target != 0) {
new class[32]
entity_get_string(target, EV_SZ_classname, class, 31)
if (equali(class, "wall")) {
new Float:tmp
new Float:mins[3]
new Float:maxs[3]
entity_get_vector(target, EV_VEC_mins, mins)
tmp = mins[1]
mins[1] = mins[0]
mins[0] = tmp
entity_get_vector(target, EV_VEC_maxs, maxs)
tmp = maxs[1]
maxs[1] = maxs[0]
maxs[0] = tmp
entity_set_vector(target, EV_VEC_mins, mins)
entity_set_vector(target, EV_VEC_maxs, maxs)
entity_set_vector(target, EV_VEC_absmin, mins)
entity_set_vector(target, EV_VEC_absmax, maxs)
entity_get_vector(target, EV_VEC_angles, mins)
mins[1] = floatadd(mins[1], 90.0)
if (floatcmp(mins[1], 360.0) >= 0)
mins[1] = 0.0
entity_set_vector(target, EV_VEC_angles, mins)
entity_set_int(target, EV_INT_solid, SOLID_BBOX)
}
}
}