Save und Load Position

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
  • LOL habe es jetzt alleine hingekriegt :D Also für alle die ein Stunt Server haben und ein gutes save- und loadpositions script brauchen hier bitte sehr 8)


    Edit: Habe nen bug behoben jetzt gehts einwandfrei!



    #include <a_samp>


    #define COLOR_BLAU 0x0066FFAA


    //Savep //Loadp
    new Float:PosX[MAX_PLAYERS], Float:PosY[MAX_PLAYERS], Float:PosZ[MAX_PLAYERS], Float:PosA[MAX_PLAYERS], PosI[MAX_PLAYERS];
    new FahrzeugID[MAX_PLAYERS];


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp(cmdtext, "/spos", true)==0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    FahrzeugID[playerid] = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), PosA[playerid]);
    PosI[playerid] = (GetPlayerInterior(playerid));
    SendClientMessage(playerid, COLOR_BLAU, "Positon gespeichert! Gehe zu dieser Possiton mit /lpos!");
    }
    else
    {
    FahrzeugID[playerid] = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]);
    GetPlayerFacingAngle(playerid, PosA[playerid]);
    PosI[playerid] = (GetPlayerInterior(playerid));
    SendClientMessage(playerid, COLOR_BLAU, "Positon gespeichert! Gehe zu dieser Possiton mit /lpos!");
    }
    return 1;
    }


    if (strcmp(cmdtext, "/lpos", true)==0)
    {
    if (!floatsqroot(PosX[playerid]+PosY[playerid]+PosZ[playerid]))
    {
    return SendClientMessage(playerid, COLOR_BLAU, "Benutze zuerst /spos!");
    }
    else
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(GetPlayerVehicleID(playerid), PosX[playerid], PosY[playerid], PosZ[playerid]);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), PosA[playerid]);
    SetPlayerInterior(playerid, PosI[playerid]);
    LinkVehicleToInterior(GetPlayerVehicleID(playerid), PosI[playerid]);
    SetCameraBehindPlayer(playerid);
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    else
    {
    if (!(FahrzeugID[playerid]))
    {
    SetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]);
    SetPlayerFacingAngle(playerid, PosA[playerid]);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid, PosI[playerid]);
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    else
    {
    SetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]);
    SetPlayerFacingAngle(playerid, PosA[playerid]);
    SetVehiclePos(FahrzeugID[playerid], PosX[playerid], PosY[playerid], PosZ[playerid]);
    SetVehicleZAngle(FahrzeugID[playerid], PosA[playerid]);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid, PosI[playerid]);
    LinkVehicleToInterior(FahrzeugID[playerid], PosI[playerid]);
    PutPlayerInVehicle(playerid, FahrzeugID[playerid], 0);
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    }
    }
    return 1;
    }

  • Ich habe das selbst gemacht und das is schon mindestens 2 monate hier und vor paar tagen habe ich nen fehler gefunden und desswegen habe ichs heute aktualisiert!
    Nagut wenn du mir nicht glaubst kann ich dir auch zeile für zeile erklären...


    Also:

    if (strcmp(cmdtext, "/spos", true)==0)
    {
    if(IsPlayerInAnyVehicle(playerid)) //Spieler sitzt in nem Fahrzeug
    {
    FahrzeugID[playerid] = GetPlayerVehicleID(playerid); //fahrzeug ID wird gespeichert
    GetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); //Spieler Pos xyz wird gespeichert
    GetVehicleZAngle(GetPlayerVehicleID(playerid), PosA[playerid]); //fahrzeugblickrichtung wird gespeichert
    PosI[playerid] = (GetPlayerInterior(playerid)); //Interior wird gespeichert
    SendClientMessage(playerid, COLOR_BLAU, "Positon gespeichert! Gehe zu dieser Possiton mit /lpos!");
    }
    else //wen er nicht in nem fahrzeug sitzt
    {
    FahrzeugID[playerid] = GetPlayerVehicleID(playerid); //speichert das er in keinem auto sitzt wirste bei lpos sehen wofür
    GetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); //wieder xyz
    GetPlayerFacingAngle(playerid, PosA[playerid]); //spieler blickrichtung
    PosI[playerid] = (GetPlayerInterior(playerid)); //int
    SendClientMessage(playerid, COLOR_BLAU, "Positon gespeichert! Gehe zu dieser Possiton mit /lpos!");
    }
    return 1;
    }


    if (strcmp(cmdtext, "/lpos", true)==0)
    {
    if (!floatsqroot(PosX[playerid]+PosY[playerid]+PosZ[playerid])) //wen x y z noch nicht belegt ist
    {
    return SendClientMessage(playerid, COLOR_BLAU, "Benutze zuerst /spos!");
    }
    else
    {
    if(IsPlayerInAnyVehicle(playerid)) //wenn er in nem fahrzeug ist
    {
    SetVehiclePos(GetPlayerVehicleID(playerid), PosX[playerid], PosY[playerid], PosZ[playerid]); //fahrzeug in dem du sitztst wird zur alten position gebracht
    SetVehicleZAngle(GetPlayerVehicleID(playerid), PosA[playerid]); //alte blickrichtung wird geladen
    SetPlayerInterior(playerid, PosI[playerid]); //alte int dimesion wird geladen
    LinkVehicleToInterior(GetPlayerVehicleID(playerid), PosI[playerid]); //fahrzeug wird zum int teleportiert
    SetCameraBehindPlayer(playerid); //is klar^^
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    else
    {
    if (!(FahrzeugID[playerid])) //Wen spieler beim /spos in keinem fahrzeug saß
    {
    SetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); //alte xyz position geladen
    SetPlayerFacingAngle(playerid, PosA[playerid]); //alte blickrichtung
    SetCameraBehindPlayer(playerid); //...
    SetPlayerInterior(playerid, PosI[playerid]); //...
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    else //wen er in einem auto saß
    {
    SetPlayerPos(playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); //spieler pos wird auch geladen falls altes fahrzeug gelöscht wird das is mein bugfix...
    SetPlayerFacingAngle(playerid, PosA[playerid]); //blickrichtung
    SetVehiclePos(FahrzeugID[playerid], PosX[playerid], PosY[playerid], PosZ[playerid]); //fahrzeug zu xyz
    SetVehicleZAngle(FahrzeugID[playerid], PosA[playerid]); //fahrzeug blickrichtung
    SetCameraBehindPlayer(playerid); //...
    SetPlayerInterior(playerid, PosI[playerid]); //..
    LinkVehicleToInterior(FahrzeugID[playerid], PosI[playerid]); //..
    PutPlayerInVehicle(playerid, FahrzeugID[playerid], 0); //spieler wird in sein altes fahrzeug gesteckt
    SendClientMessage(playerid, COLOR_BLAU, "Gespeicherte Position geladen!");
    }
    }
    }
    return 1;
    }


    Einmal editiert, zuletzt von SkaterDenis ()

  • nain brauchste nicht ich glaub dir ja schon...
    Es ist nur so wenn man Sachen von anderen hier reinstellt und dafür noch lobe einfängt finde ich das ganzschön mies, aber wenn du das selber gemacht hast ist das ok


    @Topic Ich finds gut
    kann man für Freeroam/stunt sehr sehr gut verwenden :>


    9/10


    MFG