stock bool:is_hull_vacant(const Float:origin[3]) {
new tr;
engfunc(EngFunc_TraceHull, origin, origin, 0, HULL_HUMAN, 0, tr);
if(!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
return true;
return false;
}
Jest on brany z diablo i w samym diablo niby działa, choć raz też miałem z tym problem tak jak teraz, ale zastąpiłem go trochę podobnym kodem, tutaj niestety już tego wykorzystać nie mogę. Robię coś takiego przy śmierci gracza
new Float:fOrgin[3];
entity_get_vector(ofiara, EV_VEC_origin, fOrgin);
fOrgin[2] += 15.0;
if(is_hull_vacant(fOrgin)) {
// kod
}
I ten warunek nigdy nie chce się spełnić, co jest tutaj źle?
Wykorzystałem nawet kod z prezentów, co napisał r3x, czyli
stock bool:is_hull_vacant(const Float:origin[3], hull, id = 0) {
static tr
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid)) //get_tr2(tr, TR_InOpen))
return true
return false
}
i też warunek nigdy się nie spełnia