Habe ein problem mit Positionen ( werden nicht richtig aus der datei ausgelesen )

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, ich hab für mich so ein Markierungssystem gescriptet, wo die Positionen in einer Datei abgespeichert werden sollen, um irgendwann später wieder ausgelesen zu werden und sich dorthinzu porten.


    Hier, die Auszüge aus dem Script
    enum UserInfo
    {
    Float:MarkPosX_1,
    Float:MarkPosY_1,
    Float:MarkPosZ_1,
    MarkInt_1,
    Float:MarkPosX_2,
    Float:MarkPosY_2,
    Float:MarkPosZ_2,
    MarkInt_2,
    Float:MarkPosX_3,
    Float:MarkPosY_3,
    Float:MarkPosZ_3,
    MarkInt_3,
    };
    new User[MAX_PLAYERS][UserInfo];

    das hier sind die enums, auf die dann die Positionen und das Interior draufgespeichert werden solln




    else if(zeile == 66) { User[playerid][MarkPosX_1] = strval(string); } // Markierung 1 PosX
    else if(zeile == 67) { User[playerid][MarkPosY_1] = strval(string); } // Markierung 1 PosY
    else if(zeile == 68) { User[playerid][MarkPosZ_1] = strval(string); } // Markierung 1 PosZ
    else if(zeile == 69) { User[playerid][MarkInt_1] = strval(string); } // Markierung 1 Interior
    else if(zeile == 70) { User[playerid][MarkPosX_2] = strval(string); } // Markierung 2 PosX
    else if(zeile == 71) { User[playerid][MarkPosY_2] = strval(string); } // Markierung 2 PosY
    else if(zeile == 72) { User[playerid][MarkPosZ_2] = strval(string); } // Markierung 2 PosZ
    else if(zeile == 73) { User[playerid][MarkInt_2] = strval(string); } // Markierung 2 Interior
    else if(zeile == 74) { User[playerid][MarkPosX_3] = strval(string); } // Markierung 3 PosX
    else if(zeile == 75) { User[playerid][MarkPosY_3] = strval(string); } // Markierung 3 PosY
    else if(zeile == 76) { User[playerid][MarkPosZ_3] = strval(string); } // Markierung 3 PosZ
    else if(zeile == 77) { User[playerid][MarkInt_3] = strval(string); } // Markierung 3 Interior

    dann, hier, wo sicher das Problem liegt, das ist unter OnUserEinloggen drinnen, also, wenn sich der Spieler einloggt
    Die datei wird ausgelesen, und das, was dann in der Zeile steht sollte dann dort draufgespeichert werden, aber, das Problem ist, dass ich nur ganze Zahlen habe, ohne komma, also statt zB.: 659.4572 hab ich dann nur 659.0000




    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_1]); fwrite(userdatei, eintrag); // Markierung 1 PosX
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_1]); fwrite(userdatei, eintrag); // Markierung 1 PosY
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_1]); fwrite(userdatei, eintrag); // Markierung 1 PosZ
    format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_1]); fwrite(userdatei, eintrag); // Markierung 1 Interior
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_2]); fwrite(userdatei, eintrag); // Markierung 2 PosX
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_2]); fwrite(userdatei, eintrag); // Markierung 2 PosY
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_2]); fwrite(userdatei, eintrag); // Markierung 2 PosZ
    format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_2]); fwrite(userdatei, eintrag); // Markierung 2 Interior
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosX_3]); fwrite(userdatei, eintrag); // Markierung 3 PosX
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosY_3]); fwrite(userdatei, eintrag); // Markierung 3 PosY
    format(eintrag, sizeof(eintrag), "%f\n\r", User[playerid][MarkPosZ_3]); fwrite(userdatei, eintrag); // Markierung 3 PosZ
    format(eintrag, sizeof(eintrag), "%d\n\r", User[playerid][MarkInt_3]); fwrite(userdatei, eintrag); // Markierung 3 Interior

    das ist der abschnitt, wie das ganze dann in den Dateien abgespeichert wird



    So sieht das dann in der Datei aus, ich hab hier einfach mal auf alle 3 die gleichen Positionen drauf




    if(strcmp(cmd, "/mark1", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    GetVehiclePos(Auto, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
    User[playerid][MarkInt_1] GetPlayerInterior(playerid);
    }
    else
    {
    GetPlayerPos(playerid, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
    User[playerid][MarkInt_1] GetPlayerInterior(playerid);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 1 gespeichert. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }
    if(strcmp(cmd, "/mark2", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    GetVehiclePos(Auto, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
    User[playerid][MarkInt_2] GetPlayerInterior(playerid);
    }
    else
    {
    GetPlayerPos(playerid, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
    User[playerid][MarkInt_2] GetPlayerInterior(playerid);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 2 gespeichert. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }
    if(strcmp(cmd, "/mark3", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    GetVehiclePos(Auto, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
    User[playerid][MarkInt_3] GetPlayerInterior(playerid);
    }
    else
    {
    GetPlayerPos(playerid, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
    User[playerid][MarkInt_3] GetPlayerInterior(playerid);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast diese Position unter Markierung 3 gespeichert. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }

    das sind die Befehle, mit denen dann die Positionen auf den enums abgespeichert werden




    if(strcmp(cmd, "/gehzumark1", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    SetVehiclePos(Auto, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_1]);
    LinkVehicleToInterior(playerid, User[playerid][MarkInt_1]);
    }
    else
    {
    SetPlayerPos(playerid, User[playerid][MarkPosX_1], User[playerid][MarkPosY_1], User[playerid][MarkPosZ_1]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_1]);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }
    if(strcmp(cmd, "/gehzumark2", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    SetVehiclePos(Auto, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_2]);
    LinkVehicleToInterior(playerid, User[playerid][MarkInt_2]);
    }
    else
    {
    SetPlayerPos(playerid, User[playerid][MarkPosX_2], User[playerid][MarkPosY_2], User[playerid][MarkPosZ_2]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_2]);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }
    if(strcmp(cmd, "/gehzumark3", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Auto;
    Auto = GetPlayerVehicleID(playerid);
    SetVehiclePos(Auto, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_3]);
    LinkVehicleToInterior(playerid, User[playerid][MarkInt_3]);
    }
    else
    {
    SetPlayerPos(playerid, User[playerid][MarkPosX_3], User[playerid][MarkPosY_3], User[playerid][MarkPosZ_3]);
    SetPlayerInterior(playerid, User[playerid][MarkInt_3]);
    }
    SendClientMessage(playerid, GRUEN, "-| Du hast dich zu deiner Markierung 1 geportet. |-");
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
    }
    else { SendClientMessage(playerid, ELSE_ROT, "Du bist kein Admin !"); }
    return 1;
    }

    und hier sind die Befehle, mit denen man sich dann wieder zu den Positionen porten kann




    das ist das ganze System, wär cool, wenn mir das jmd so machen kann, dass das dann richtig funktioniert, würde mich freuen
    solltet Ihr noch ein paar Auszüge brauchen, dann Bitte melden und sagen, was noch benötigt wird



    Mit freundlichen Grüßen


    Hofgreith