Warum zur Hölle so kompliziert? 
Machs einfach nur so:
stock const Float:H_W[][3] = {
{244.4221, 305.0592, 999.1484},
{266.7091, 305.0197, 999.1484},
{2324.4587, -1148.8004, 1050.7101},
{235.3885, 1187.0400, 1080.2578},
{225.7580, 1239.9197, 1082.1406},
{223.1530, 1287.4996, 1082.1406},
{225.7527, 1021.9715, 1084.0162},
{295.0053, 1472.9153, 1080.2578},
{328.0984, 1478.0658, 1084.4375},
{386.7174, 1471.7593, 1080.1875},
{2269.7668, -1210.4520, 1047.5625},
{2365.2903, -1135.0590, 1050.8750}
};
ocmd:exit(playerid)
{
for(new i; i<sizeof(H_W); i++)
{
if(!IsPlayerInRangeOfPoint(playerid, 7.0, H_W[i][0], H_W[i][1], H_W[i][2])) continue;
new v=GetPlayerVirtualWorld(playerid);
printf("Welt: %d | %.02f | %.02f | %.2f",v,HausInfo[v][hX],HausInfo[v][hY],HausInfo[v][hZ]);
SetPlayerInterior(playerid, 0),SetPlayerVirtualWorld(playerid, 0);
return SetPlayerPos(playerid, HausInfo[v][hX],HausInfo[v][hY],HausInfo[v][hZ]),1;
}
return SendClientMessage(playerid,-1,!"Sie befinden sich an keinem Haus!");
}
Schau mal was dir geprintet wird...wenn da 0|0|0 in den Koordinaten rauskommt, stimmt die VirtuelleWelt nicht mit dem index von HausInfo überein...
Du solltest dir vielleicht überlegen, dass alles in ein Array zu schreiben 
mfg. 