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 } randomSpawnGift(Gift:gift) { new Float:fOrigin[3]; new try = 256; new index; do { try--; index = random(giImportantSpots); fOrigin[0] = gfImportantSpots[index][0]; fOrigin[1] = gfImportantSpots[index][1]; fOrigin[2] = gfImportantSpots[index][2]; if(!gbCustomLocations) { fOrigin[0] += random_float(-489.0, 489.0); fOrigin[1] += random_float(-489.0, 489.0); fOrigin[2] += random_float(-289.0, 289.0); } if(is_hull_vacant(fOrigin, HULL_HUMAN)) { createPointer(gift, fOrigin); break; } } while(try > 0); return 1; }