/CreateVeh Befehl umsetzen.

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
  • Ich habe folgendes Problem. Und zwar möchte ich einen "/CreateVeh" Befehl machen ich hab dafür auch schon alles gescriptet und es funktioniert mit ein paar Autos.
    Wen man den Befehl "/CreateVeh" eingibt soll ein Dialog angezeigt werden, Wo man alle Autos aufgelistet hat und sich dann eins aussuchen kann. Nur in dem Dialog habe ich ein Problem.


    Es soll die Fahrzeuge mit Namen anzeigen.. Dazu müsste ich sie aber alle bei "ShowPlayerDialog" reinschreiben. Das sind nur leider zu viele Autos und deshalb kann ich die da nicht einfach so mit "\n" rein schreiben (Flugzeuge / Motorräder etc.. Nicht mitgerechnet).


    Kann mir bitte einer helfen wie ich das alles so machen kann, das es mir in meinem Dialog dann alle Autonamen anzeigt ohne das die "Input" Line zu lang ist... Oder ich an das Maximale Zeilenende bei PAWN komme..


    PS: Ich bin noch ein Anfänger... Also bitte etwas ausführlicher erklären damit ich es mir auch merken kann, und was dabei lerne


    Mit freundlichen Grüßen:
    DiTo2014

  • New String1[256];
    New String2[256];
    New Stringall[1000];
    Format(String1, sizeof string1,"auto1\nauto2");
    Format(String2, sizeof string2,"auto3\nauto4");
    Format(Stringall, sizeof stringall,"%s%s",string1,String2);
    Showplayerdialog....


    So könnte man es machen. Damit es nicht zu lang wird. Das ist nur ein Beispiel und klein und groß Schreibung ignorieren hab das mit Handy getippt.

  • Nutze format und strcat.


    Beispiel:


    new str[128];
    format(str,sizeof(str),"Dieser Satz");
    strcat(str," wurde hier weitergeschrieben.",sizeof(str));


    //Würde mit printf das ausgeben:
    printf("Ausgabe: %s",str);
    //Ausgabe: Dieser Satz wurde hier weitergeschrieben.


    ^Würde dein Problem mit input line to long lösen^^

  • Bitte immer erst den Beitrag des anderen lesen & verstehen. Ich habe deutlich geschrieben, dass ich noch ein Anfänger bin. Somit weis ich sogesagt gerade garnicht was ich mit der Antwort von dir anfangen soll.
    --Bitte einfach so schreiben & erklären das ein Anfänger auch damit arbeiten kann, und versuchen kann es in sein Script einzusetzen bzw so etwas in sein Script zu schreiben.


    Könntest du mir das auch nochmal ein bisschen ausführlicher erklären ? Verstehen tuh ich es schon aber das mit new str[128] z.b was soll das bedeuten ? oder kann ich da auch eine andere Zahl einfügen ??

  • Ich habe es jetzt mal mit dem Vorschlag von "Splash" versucht.
    Habe das jetzt geschrieben (Nur zum Test) und steht ganz oben im Script (unter "#include <a_samp>").


    So sieht es aus:
    new str[256];
    format(str,sizeof(str),"Bla\nBla\nBla");
    strcat(str,"Bla\nBla\nBla",sizeof(str));


    Nur jetzt bekomme ich diesen Error:
    C:\Users\Matthias\Desktop\SAMP Server\filterscripts\Dito2014-CreateVeh.pwn(14) : error 021: symbol already defined: "format"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Zeile 14 ist die Zeile wo "format" steht.


    Kann mir vielleicht jemand erklären, wie ich diesen Error entfernen kann ?
    PS: Ich habe bisher noch nicht mit format gearbeitet und ich verwende ein Filterscript.

    • Offizieller Beitrag

    Benutze am besten Arrays und Schleifen.


    Beispiel:
    #define MAXVehicle 2 // Alle Fahrzeuge die in deinem Array sind
    enum vehicle_enum{vModelID, vVehName[180]}; //Eine Aufzählung von Variablen die genutzt werden können
    new Vehicle[MAXVehicle][vehicle_enum] =
    {
    {400, "Landstalker"},
    {401, "Bravura"}
    }
    So, möchtest du weitere Fahrzeuge hinzufügen musst du einfach die Zeile kopieren und die Informationen ändern.
    Aber achte darauf das nur die Letzte Zeile keinen Komma hat.


    Das kommt in dein Befehl rein


    new string[2000];
    for(new v; v < MAXVehicle; v++)
    {
    format(string, sizeof string, "%s%s\n", string, vehicle[v][vVehName]);
    }
    return ShowPlayerDialog(playerid, DIALOGID, DIALOG_STYLE_LIST, "Fahrzeugliste", string, "Spawnen", "Abbrechen");


    Unter OnDialogResponse:


    if(dialogid == DIALOGID) {
    CreateVehicle(vehicle[listitem][vModelID], ...);
    }


    Sollte funktionieren.