Problem mit Formatierung

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,


    Mein Name lautet MrPawn.
    Und zwar habe ich einen Fehler, bei /lastdriver [vehicleid]
    Also per OnPlayerStateChange wird das ganze betrieben:


    new vehicleid = GetPlayerVehicleID(playerid);
    format(LastDriver[vehicleid], 24, "%s", PlayerInfo[playerid][pName]);


    Das geile ist es geht ja, aber das vermischt sich mit den anderen fahrzeugen mit der ID


    Ich habe aktuell 4 Sweeper auf dem Server stehen.
    Ich steige in das Fahrzeug mit der ID 1
    Gebe /lastdriver [1] ein.
    Dann steht da, "Adminbefehl: Der letzte Fahrer des Fahrzeuges ist USER.
    Alles gut, aber wenn ich dann id 2,3,4 abfrage wo ich nicht herinnen war, wird auch was getahn, und zwar immer 1 zeichen entnommen.


    1ID(Herinnen gesessen) = "USER"
    2ID(None)="SER"
    3ID(None)="ER
    4ID(None)="R"
    Also er zäht hoch und bei den zeichen runter :/

    COMMAND:lastdriver(playerid, params[])
    {
    if(!IsPlayerConnected(playerid))return 1;
    if(PlayerInfo[playerid][Eingeloggt] == false)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    if(!IsPlayerAnAdmin(playerid, 1))return SendClientMessage(playerid, GRAU, "Du bist kein Teammitglied / Du besitzt nicht die Rechte für diesen Befehl!");
    if(GetPVarInt(playerid, "Aduty") == 0)return SendClientMessage(playerid, ROT, "Du musst als Administrator im Dienst sein, um befehle zu nutzen");
    new tmp_vehicleid, string[128];
    if(sscanf(params, "i", tmp_vehicleid))return SendClientMessage(playerid, WRONGCMD, "BENUTZE: /lastdriver [vehicleid]");
    if(!IsValidVehicle(tmp_vehicleid))return SendClientMessage(playerid, ROT, "FEHLER: {FFFFFF}Diese FahrzeugID Existiert nicht!");
    if(strlen(LastDriver[tmp_vehicleid]) > 0) {
    format(string, sizeof(string), "AdminBefehl: Der letzte Fahrer des Fahrzeuges ist %s"
    ,LastDriver[tmp_vehicleid]);
    SendClientMessage(playerid,GRUEN,string); }
    else {
    SendClientMessage(playerid, GRUEN, "AdminBefehl: Es gibt keinen letzen Fahrer!");
    }
    return 1;
    }


    Mit freundlichen Grüßen,


    MrPawn

  • Also er zäht hoch und bei den zeichen runter :/


    Ja, was eine Überraschung :D


    Um dir dieses Phänomen mal zu erklären, es ist ganz einfach:


    //Nehmen wir einen String:
    new string[6] = "Hallo";


    //Printen wir nun etwas:
    print(string[0]); //Hier printet er: Hallo
    //Da alles ab dem 0ten Zeichen bis zum Ende ausgegeben wird.


    print(string[1]); //Hier printet er: allo
    //Da alles ab dem 1ten Zeichen bis zum Ende ausgegeben wird.


    Um das Problem, welches du hast zu lösen, musst du einfach dem String noch eine Dimension geben, da du ja noch Zeichen hast, sprich:


    LastDriver[vehicleid] = "Hallo";
    //Das ist falsch, da du z.B. jetzt nicht das H als Zeichen ausgeben kannst, sondern nur den ganzen String, oder halt ab dem Zeichen.


    new LastDriver[MAX_VEHICLES][6];
    LastDriver[vehicleid] = "Hallo";
    //Jetzt kannst du es ausgeben:
    LastDriver[vehicleid][0] // -> Das würde jetzt das H ausgeben


    Sprich du musst noch eine Dimension mit MAX_LENGTH des Strings angeben ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    • Warum schaust du nach, ob ein Spieler mit dem Server verbunden ist, wenn er einen Befehl ausführt. Ohne verbunden zu sein, kann man auch keinen Befehl ausführen.
    • Erstelle deine Variablen, wenn du sie brauchst. Du brauchst die Variable "string" nur innerhalb des if-Statements, daher erstelle die Variable auch dort. Du verschwendest Ressourcen.
    • Zu deinem eigentlichen Problem: Womöglich liegt es, wie Kaliber bereits erleuterte, an der Deklaration des "LastDriver"-Arrays.