Interior Speichern - Laden

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
  • Guten Tag ich möchte mal wissen wie genau ich Interior Speichern - Laden kann


    Derzeit habe ich es so




    //Speichern
    GetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    GetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);



    //Spawn
    SetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);



    Die frage ist Funktioniert das so?



    PS: Derzeit bekomme ich noch Folgende Warnungen



    [hide]
    C:\Users\Gamer\Desktop\RonnysSelf0.4\gamemodes\RoG.pwn(14359) : warning 202: number of arguments does not match definition
    C:\Users\Gamer\Desktop\RonnysSelf0.4\gamemodes\RoG.pwn(14360) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.


    [/hide]


    Warum ich es brauche, ich arbeite grad Dran das ein Spieler dort Spawnt wo er sich Ausgeloggt hat



    PS Derzeit habe ich es so




    enum Info
    {
    Float: SpawnX,
    Float: SpawnY,
    Float: SpawnZ,
    Float: SpawnR,
    SInterior,
    SVirtualWorld
    }
    new pInfo[MAX_PLAYERS][Info];


    public OnPlayerDisconnect(playerid, reason)
    {
    GetPlayerPos(playerid, pInfo[playerid][SpawnX], pInfo[playerid][SpawnY], pInfo[playerid][SpawnZ]);
    GetPlayerFacingAngle(playerid, pInfo[playerid][SpawnR]);
    GetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    GetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);
    }




    public OnPlayerSpawn(playerid)
    {


    SetPlayerPos(playerid, pInfo[playerid][SpawnX], pInfo[playerid][SpawnY], pInfo[playerid][SpawnZ]);
    SetPlayerFacingAngle(playerid, pInfo[playerid][SpawnR]);
    SetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);
    }




    Die Frage ist jetzt Würde dies so Funktionieren? Da ich es nicht gebacken bekomme, das ganze per Load - Save Account zu machn? Was bei mir so aussieht






    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/SpielerAccount/%s.txt",name);
    pInfo[playerid][pAlter] = dini_Int(Spielerdatei,"Alter");
    pInfo[playerid][pGeworben] = dini_Int(Spielerdatei,"Geworben");
    pInfo[playerid][pPerso] = dini_Int(Spielerdatei,"Personalausweis");
    pInfo[playerid][pSpawn] = dini_Int(Spielerdatei,"Spawnpunkt");
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/SpielerAccount/%s.txt",name);
    dini_IntSet(Spielerdatei,"Alter", pInfo[playerid][pAlter]);
    dini_IntSet(Spielerdatei,"Geworben", pInfo[playerid][pGeworben]);
    dini_IntSet(Spielerdatei, "Personalausweis", pInfo[playerid][pPerso]);
    dini_IntSet(Spielerdatei,"Spawnpunkt", pInfo[playerid][pSpawn]);
    return 1;
    }

  • GetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    GetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);


    zu:
    pInfo[playerid][SInterior] = GetPlayerInterior(playerid);
    pInfo[playerid][SVirtualWorld] = GetPlayerVirtualWorld(playerid);


    Sinnvoll wäre es aber, das direkt in deine Speichern- und Laden-Funktion einzubauen:


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/SpielerAccount/%s.txt",name);
    pInfo[playerid][pAlter] = dini_Int(Spielerdatei,"Alter");
    pInfo[playerid][pGeworben] = dini_Int(Spielerdatei,"Geworben");
    pInfo[playerid][pPerso] = dini_Int(Spielerdatei,"Personalausweis");
    pInfo[playerid][pSpawn] = dini_Int(Spielerdatei,"Spawnpunkt");
    //Position:
    pInfo[playerid][SInterior] = dini_Int(Spielerdatei,"Interior");
    pInfo[playerid][SVirtualWorld] = dini_Int(Spielerdatei,"World");
    pInfo[playerid][SpawnX] = Float:dini_Float(Spielerdatei, "x");
    pInfo[playerid][SpawnY] = Float:dini_Float(Spielerdatei, "y");
    pInfo[playerid][SpawnZ] = Float:dini_Float(Spielerdatei, "z");
    pInfo[playerid][SpawnR] = Float:dini_Float(Spielerdatei, "r");
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/SpielerAccount/%s.txt",name);
    dini_IntSet(Spielerdatei,"Alter", pInfo[playerid][pAlter]);
    dini_IntSet(Spielerdatei,"Geworben", pInfo[playerid][pGeworben]);
    dini_IntSet(Spielerdatei, "Personalausweis", pInfo[playerid][pPerso]);
    dini_IntSet(Spielerdatei,"Spawnpunkt", pInfo[playerid][pSpawn]);
    //Position
    pInfo[playerid][SInterior] = GetPlayerInterior(playerid);
    pInfo[playerid][SVirtualWorld] = GetPlayerVirtualWorld(playerid);
    GetPlayerPos(playerid, pInfo[playerid][SpawnX], pInfo[playerid][SpawnY], pInfo[playerid][SpawnZ]);
    GetPlayerFacingAngle(playerid, pInfo[playerid][SpawnR]);
    dini_IntSet(Spielerdatei,"Interior", pInfo[playerid][SInterior]);
    dini_IntSet(Spielerdatei,"World", pInfo[playerid][SVirtualWorld]);
    dini_FloatSet(Spielerdatei,"x", pInfo[playerid][SpawnX]);
    dini_FloatSet(Spielerdatei,"y", pInfo[playerid][SpawnY]);
    dini_FloatSet(Spielerdatei,"z", pInfo[playerid][SpawnZ]);
    dini_FloatSet(Spielerdatei,"r", pInfo[playerid][SpawnR]);
    }
    return 1;
    }



    Dann kannst du es bei OnPlayerSpawn so machen:
    public OnPlayerSpawn(playerid)
    {
    if(pInfo[playerid][SInterior] != -1)
    {
    SetPlayerPos(playerid, pInfo[playerid][SpawnX], pInfo[playerid][SpawnY], pInfo[playerid][SpawnZ]);
    SetPlayerFacingAngle(playerid, pInfo[playerid][SpawnR]);
    SetPlayerInterior(playerid, pInfo[playerid][SInterior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][SVirtualWorld]);
    //Das Interior wird auf -1 gesetzt. Das heißt hier dann, dass der Spieler
    //mit dem nächsten Spawn nicht mehr zu dieser Position gesetzt wird.
    //Entferne dies, falls der Spieler immer an dieser Position spawnen soll.
    pInfo[playerid][SInterior] = -1;
    }
    return 1;
    }

  • Danke
    Jeffry Du bist ein Schatz ;3 So oft wie du mir schon geholfen hast großen Respekt und vielen lieben dank an dir