Interior abfragen und beim Login setzen.

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
  • Hey Jungs,
    Kann mir einer helfen? Es geht darum das mein Script beim Ausloggen die letzte Position speichert und Sie dan beim Einloggen wieder setzt.
    Beispiel: Ich laufe zum BSN und gehe da offline, komme an der selben Position wieder online.


    So nun speichert der kein Interior ab, wie mache ich das? Wen ich im Knast oder BSN bin fällt der einfach durch den Boden.
    Wen mir einer meine Zeilen vervollständigen könnte wäre ich ihm sehr dankbar.


    Das kommt bei OnlplayerSpawn hin:
    SetPlayerVirtualWorld(playerid, 0);
    new pname[MAX_PLAYER_NAME], path[128];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(path, sizeof(path), "/Accountsspawn/%s.ini", pname);
    if(!dini_Exists(path))
    {
    dini_Create(path);
    }


    SetPlayerPos(playerid, dini_Float(path, "x"), dini_Float(path, "y"), dini_Float(path, "z"));


    Und das bei OnPlayerDisconnect:
    new Float:x, Float:y, Float:z, pname[MAX_PLAYER_NAME], path[128];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerName(playerid, pname, sizeof(pname));
    //format(path, sizeof(path), "/%s.ini", pname);
    format(path, sizeof(path), "/Accountsspawn/%s.ini", pname);
    if(!dini_Exists(path))
    {
    dini_Create(path);
    }


    dini_FloatSet(path, "x", x);
    dini_FloatSet(path, "y", y);
    dini_FloatSet(path, "z", z);

  • Da du anscheinend nicht alleine auf die Idee kommst wie es gehen könnte versuche ich dir mal zu Helfen


    Einmal definierst du oben Interior und die Virtual World.


    OnPlayerDisconnect:
    new interior, virtualworld


    Jetzt gehst du dorthin wo du Abfrägst in welchem Interior und in welcher Virtuellen Welt er ist dafür machst du es so.


    GetPlayerInterior(playerid,interior); & GetPlayerVirtualWorld(playerid,virtualworld);



    Jetzt musst du das ganze in die dini Datei Speichern dafür machst du folgendes.


    dini_IntSet(Spielerdatei,"virtualworld",virtualworld,); & dini_IntSet(Spielerdatei,"interior",interior,);


    Jetzt hast du das ganze Gespeichert wenn derjenige Disconnect.


    Jetzt muss nur noch das ganze bei OnPlayerSpawn Geladen werden dafür machst du.


    SetPlayerInterior(playerid]dini_Int(Spielerdatei,"interior",interior,)); & SetPlayerVirtualworld(playerid]dini_Int(Spielerdatei,"virtualworld",virtualworld,));


    unter dein SetPlayerPos und theoretisch müsste das ganze dann funktionieren.


    Ich hoffe das du jetzt weißt wie das ganze System funktionieren sollte, ich habe es jetzt auf Basis von deinem SetPlayerPos Befehl gemacht da dies fast genau das gleiche ist.


    Ich kann dir nicht versichern das dies zu 100% funktioniert da ich selbst noch in der Anfänger Phase bin und das jetzt aus dem Kopf geschrieben habe wie es Theoretisch funktionieren müsste.



    Edit: komma vergessen

    Einmal editiert, zuletzt von Bluescreen ()

  • Zeile (4779) : Unbekannte Variable : "interior"


    Zeile (4780) : Unbekannte Variable : "virtualworld"


    SetPlayerInterior(playerid,dini_Int(path,"interior",interior));


    SetPlayerVirtualWorld(playerid,dini_Int(path,"virtualworld",virtualworld));
    Wie kriege ich das hin?

    Einmal editiert, zuletzt von Sergej ()

  • Account daten:


    virtualworld=0


    interior=178 //Das kann ja nicht stimmen oder?


    x=249.592971


    y=65.127563


    z=1003.640625



    Das kommt bei OnlplayerSpawn hin:
    SetPlayerVirtualWorld(playerid, 0);
    new pname[MAX_PLAYER_NAME], path[128];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(path, sizeof(path), "/Accountsspawn/%s.ini", pname);
    if(!dini_Exists(path))
    {
    dini_Create(path);
    }


    SetPlayerInterior(playerid,dini_Int(path,"interior"));
    SetPlayerVirtualWorld(playerid,dini_Int(path,"virtualworld"));


    SetPlayerPos(playerid, dini_Float(path, "x"), dini_Float(path, "y"), dini_Float(path, "z"));


    Und das bei OnPlayerDisconnect: new virtualworld;new Float:x, Float:y, Float:z, pname[MAX_PLAYER_NAME], path[128];
    GetPlayerPos(playerid, x, y, z); GetPlayerInterior(playerid,pInt);
    GetPlayerVirtualWorld(playerid,virtualworld);
    GetPlayerName(playerid, pname, sizeof(pname));
    //format(path, sizeof(path), "/%s.ini", pname);
    format(path, sizeof(path), "/Accountsspawn/%s.ini", pname);
    if(!dini_Exists(path))
    {
    dini_Create(path);
    }dini_FloatSet(path, "x", x);
    dini_FloatSet(path, "y", y);
    dini_FloatSet(path, "z", z);
    pInt ist bei Spieler enum oben schon drinne.