Hier der Befehl:
ocmd:betreten(playerid)
{
if(NearestHaus(playerid) == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses!");
if(Haus[NearestHaus(playerid)][haus_lock] == 1)return SendClientMessage(playerid,-1,"Das Haus ist verschlossen!");
SetPlayerPos(playerid,Haus[NearestHaus(playerid)][haus_xi],Haus[NearestHaus(playerid)][haus_yi],Haus[NearestHaus(playerid)][haus_zi]);
SetPlayerInterior(playerid,Haus[NearestHaus(playerid)][haus_int]);
SetPlayerVirtualWorld(playerid,Haus[NearestHaus(playerid)][haus_vw]);
SetPVarInt(playerid,"ImHaus",NearestHaus(playerid));
return SendClientMessage(playerid,-1,"Du hast das Haus betreten.");
}
Hier wird das mit dem haus_vw nochmal genutzt:
stock NearestExit(playerid)
{
new Float:dist0,ID = -1;
new Float:dist1 = 2,Float:px,Float:py,Float:pz;
for(new i = 1; i<MAX_HAUS; i++)
{
if(Haus[i][haus_vw]!=GetPlayerVirtualWorld(playerid)) continue;
GetPlayerPos(playerid,px,py,pz);
dist0 = GetPlayerDistanceFromPoint(playerid,Haus[i][haus_xi],Haus[i][haus_yi],Haus[i][haus_zi]);
if(dist0 < dist1) dist1 = dist0,ID = i;
}
return ID;
}
Was genau bewirkt denn die Abfrage bei dem Stock?
Eigentlich setzen man die Spieler doch damit in eine ander VirtualeWorld: SetPlayerVirtualWorld(playerid,+1);
Das Problem ist das mit der VirtualenWorld in dem ocmd: Befehl funktioniert nicht.