Ven made a teleport that works fantasticly! Only has a few things wrong I need help with.
When somebody uses it. Like aims at ground it puts them IN the ground so I made it move the person like 10 w/e up more. But now roof doesn't work it puts them 10 more up ( stupid me. ) what should I do?
Code:
public teleport(id) {
if(cs_get_user_team(id) != CS_TEAM_T)
{
client_print(id, print_chat, "[Teleport] You must be a vampire to teleport.")
return PLUGIN_HANDLED
}
if(maxTeleport[id] > 2)
{
client_print(id, print_chat, "[Teleport] You have maxed out your teleports this round.")
return PLUGIN_HANDLED
}
static Float:start[3], Float:dest[3]
pev(id, pev_origin, start)
pev(id, pev_view_ofs, dest)
xs_vec_add(start, dest, start)
pev(id, pev_v_angle, dest)
engfunc(EngFunc_MakeVectors, dest)
global_get(glb_v_forward, dest)
xs_vec_mul_scalar(dest, 9999.0, dest)
xs_vec_add(start, dest, dest)
engfunc(EngFunc_TraceLine, start, dest, IGNORE_MONSTERS, id, 0)
get_tr2(0, TR_vecEndPos, start)
get_tr2(0, TR_vecPlaneNormal, dest)
static const player_hull[] = {HULL_HUMAN, HULL_HEAD}
engfunc(EngFunc_TraceHull, start, start, DONT_IGNORE_MONSTERS, player_hull[_:!!(pev(id, pev_flags) & FL_DUCKING)], id, 0)
if (!get_tr2(0, TR_StartSolid) && !get_tr2(0, TR_AllSolid) && get_tr2(0, TR_InOpen)) {
engfunc(EngFunc_SetOrigin, id, start)
maxTeleport[id] --
return PLUGIN_HANDLED
}
static Float:size[3]
pev(id, pev_size, size)
xs_vec_mul_scalar(dest, (size[0] + size[1]), dest)
xs_vec_add(start, dest, dest)
if( (dest[1] - start[1] ) > 0 )
dest[1] -= 50
else
dest[1] += 50
engfunc(EngFunc_SetOrigin, id, dest)
maxTeleport[id] ++
return PLUGIN_HANDLED
}