| steve139 |
08-22-2008 12:43 |
code of grab = bug (push instead of grab)
1 Attachment(s)
hello at all
I customized the plugin "jedi force grab" to can also move entity
but the problems the plugin dont work proprely
instead of grab , it s pushing the entity or the player
if someone can help this is the code(+.sma attached if you prefeert)
PHP Code:
#include <amxmodx> #include <fun> #include <engine> #include <fakemeta>
new grabbed[1024] new grablength[1024] new bool:grabmodeon[33] new velocity_multiplier
public grabtask(parm[]) { new id = parm[0] new targetid, body if (!grabbed[id]) { get_user_aiming(id, targetid, body) if (targetid) { set_grabbed(id, targetid) } } if (grabbed[id]) { new origin[3], look[3], direction[3], moveto[3], grabbedorigin[3], Float:f_grabbedorigin[3], velocity[3], length
if(is_user_connected(grabbed[id])) { if (!is_user_alive(grabbed[id])) { release(id) return } } get_user_origin(id, origin, 1) get_user_origin(id, look, 3) pev(id,pev_origin,f_grabbedorigin,2) for (new i=0;i<3;i++){ grabbedorigin[i] = floatround(f_grabbedorigin[i]) } //get_user_origin(grabbed[id], grabbedorigin)
direction[0]=look[0]-origin[0] direction[1]=look[1]-origin[1] direction[2]=look[2]-origin[2] length = get_distance(look,origin) if (!length) length=1 // avoid division by 0
moveto[0]=origin[0]+direction[0]*grablength[id]/length moveto[1]=origin[1]+direction[1]*grablength[id]/length moveto[2]=origin[2]+direction[2]*grablength[id]/length
velocity[0]=(moveto[0]-grabbedorigin[0])*velocity_multiplier velocity[1]=(moveto[1]-grabbedorigin[1])*velocity_multiplier velocity[2]=(moveto[2]-grabbedorigin[2])*velocity_multiplier
new Float:vector[3] IVecFVec(velocity, vector) entity_set_vector(grabbed[id], EV_VEC_velocity, vector) } }
public grab_toggle(id) { if (grabmodeon[id]) release(id) else grab(id) return PLUGIN_HANDLED }
public grab(id) { if ((get_user_flags(id)&ADMIN_SLAY)) { if (!grabmodeon[id]) { new targetid, body new parm[1] parm[0] = id velocity_multiplier = get_cvar_num("sv_grabforce") grabmodeon[id]=true set_task(0.1, "grabtask", 100+id, parm, 1, "b") get_user_aiming(id, targetid, body) if (targetid) { set_grabbed(id, targetid) } else { } } } else if ((get_cvar_num("sv_force") == 1)) { if (!grabmodeon[id]) { new targetid, body new parm[1] parm[0] = id velocity_multiplier = get_cvar_num("sv_grabforce") grabmodeon[id]=true set_task(0.1, "grabtask", 100+id, parm, 1, "b") get_user_aiming(id, targetid, body) if (targetid) { set_grabbed(id, targetid) } else { } } } return PLUGIN_HANDLED }
public release(id) { if (grabmodeon[id]) { grabmodeon[id]=false if (grabbed[id]) { pev(grabbed[id],pev_gravity,1)
} else { } grabbed[id]=0 remove_task(100+id) } return PLUGIN_HANDLED }
public spec_event(id) { new targetid = read_data(2)
if (targetid < 1 || targetid > 32) return PLUGIN_CONTINUE
if (grabmodeon[id] && !grabbed[id]) { set_grabbed(id, targetid) } return PLUGIN_CONTINUE }
public set_grabbed(id, targetid) { new origin1[3], origin2[3] new Float:f_origin1[3], Float:f_origin2[3] pev(id,pev_origin,f_origin1,2) pev(targetid,pev_origin,f_origin2,2) for (new i=0;i<3;i++){ origin1[i] = floatround(f_origin1[i]) origin2[i] = floatround(f_origin2[i]) } //get_user_origin(id, origin1) //get_user_origin(targetid, origin2) grabbed[id]=targetid grablength[id]=get_distance(origin1,origin2) pev(targetid,pev_gravity,0.001) //set_user_gravity(targetid,0.001) }
public plugin_init() { register_plugin("Jedi Force Grab","2.1","SpaceDude") register_cvar("sv_grabforce","8") register_cvar("sv_force","0") register_clcmd("+force","grab",ADMIN_SLAY,"bind a key to +grab") register_clcmd("-force","release",ADMIN_SLAY) register_event("StatusValue","spec_event","be","1=2") }
|