Schleifen Frage

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo habe ein Problem und zwar wollte ein Enter/Exit System mit einer Schleife laufen lassen,
    so alles soweit so gut.. die Teleports klappen.. jedoch wenn ich mich in ein Interior Porte setzt es mich in eine VirtualWorld
    und wenn ich wieder raus porte, werde ich in eine Virtual World gesetz wo ich nichts mehr sehe, sprich Fahrzeuge, 3D Labels


    Code:

    new binfo[][enterexit] = {
    {-2027.8751,-40.8133,38.8047,2215.454833,-1147.475585,1025.796875,15}, //NBH Drinnen
    {2215.454833,-1147.475585,1025.796875,-2027.8751,-40.8133,38.8047,0} //NBH Draußen
    };


    for(new i=0; i<sizeof(binfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,binfo[i][e_x],binfo[i][e_y],binfo[i][e_z]))continue;
    SetPlayerPos(playerid,binfo[i][e_ix],binfo[i][e_iy],binfo[i][e_iz]);
    SetPlayerInterior(playerid,binfo[i][e_interior]);
    SetPlayerVirtualWorld(playerid,i); // Hier wird er beim Eintreten ja in eine VirtualWorld gesetzt oder?
    return 1;
    }


    // Das alles läuft unter der Taste "N" ab..
    Jetzt wollte ich fragen was ich machen muss, damit beim exit keine VirtualWorld bzw "0" gesetzt wird


    Kompletter Code von OnPlayerKeyStateChange


    Spoiler anzeigen
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_NO)
    {
    if(IsPlayerInRangeOfPoint(playerid,0.5,-2023.4572,-46.0295,35.3635))
    {
    ShowPlayerDialog(playerid,DIALOG_ROLLER,DIALOG_STYLE_LIST,"Rollerverleih","Faggio (50$)","Mieten","Abbrechen");

    Spoiler anzeigen
    }
    for(new i=0; i<sizeof(binfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,binfo[i][e_x],binfo[i][e_y],binfo[i][e_z]))continue;
    SetPlayerPos(playerid,binfo[i][e_ix],binfo[i][e_iy],binfo[i][e_iz]);
    SetPlayerInterior(playerid,binfo[i][e_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    }
    return 1;
    }

  • Entweder du machst es so, wie es mein Vorredner sagte, aber dann musst du davon ausgehen, dass dein Array eine bestimmte Struktur/Reihenfolge hat, was die Einträge angeht.
    Oder du fügst in dein Array neben den Koordinaten noch die gewünschte virtuelle Welt und das Interior hinzu und rufst es dann ganz einfach aus deinem Array ab.