Programmieren


Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Programmieren

    Hallo Leuzte!
    Ich hab da ein Problem...ich modde zur Zeit mit GTA3...& da wollte ich mir die Arbeit leichter machen und paar kleine Editoren schreiben doch da stoße ich auf paar Probleme...

    ----------------------------------------------------------------
    1. Wie kann ich in einer Textdatei mit meinem Programm einen spezielen Wert ändern...

    Auto 1, Name, 10, 20, 30
    Auto 2, Name, 11, 22, 33
    Auto3, ...

    Das ist ein Beispiel....
    Wie kann ich da zum Beispiel den 2ten Wert bei Auto2 ändern? Oder wie kann ich etwas ändern, wenn aufeinmal ein neues AUto hinzugefügt wird...
    ----------------------------------------------------------------
    da sind wir schon bei meiner 2ten Frage:

    Wie kann ich Text zwischen zwei Textpassagen schreiben:
    z.B.

    Hallo
    Blabla

    da möchte ich jetzt das schreiben:

    Hallo
    ...
    Blbla

    Wie geht das?
    ----------------------------------------------------------------

    3.Oder wie kann ich in einem Text irgendwas durch etwas anders ersetzen, z.B. Das Wort "Car" durch "Plane"

    ----------------------------------------------------------------
    4. Wee kann ich ein Wort ganz löschen oder eine Zeile?
    ----------------------------------------------------------------
    5.Wie kann ich bei meinen eigenen SPielen soetwas auslesen:

    Version: 0.1Beta
    //Enemies: Energie Kraft Speed Schutzschild
    Knight 120, 50, 7, 50
    Archery 100, 30, 5, 100
    .....


    Vielen Dank schon Mal!!!

    Mit Textdateien kenne ich mich noch nicht so aus!!! :(

    Cu TheMillenium
  • Bin nicht sich ob ich das richtig verstanden habe aber wenn du in einem Gamefile ein Wort verändern willst würde ich mir mal einen Hexeditor runterziehen.
    Es ist nämlich öfters, dass wenn du das Gamefile unter z.B. Wordpad öffnest die Wörter so angezeigt werde: blabla
    Aber sie in Wirklichkeit so heißen: b.l.a.b.l.a.

    Vielleicht ist das das Problem, wenn nicht erkläre es bitte nochmal genauer.

    bbb
    Transferred 1 file totaling 15.000.000 bytes in 04:18:01 (0,95 KB/Sec)
  • Suchen, Ersetzen usw.

    Hi,

    für einfache "Suchen und Ersetzen"-Tasks, wie ersetze "Auto" durch "Schiff", hat sich der (Text-) Editor Proton von Uli Meybohm bewährt: >> Proton Homepage <<.

    Für Ersetzungen, die sich durch reguläre Ausdrücke verwirklichen lassen - wie zB ersetze zweiten Wert in der 1. Zeile, die mit "Auto1" beginnt durch "10" - oder - schreibe "Farbe 2" zwischen "Farbe1" und "Farbe3" - bietet sich eine Programmiersprache an, die darauf optimiert ist, wie zB. PERL (PERL=Pratical Extraction and Report Language). Eine Version für Windows bekommst du bei >> ActiveState <<. Linux und BSD enthalten bereits Perl.

    Wenn du weitere Fragen hast kannst du sie hier stellen.
  • Und wie mache ich vielleicht, dass er immer den Wert in der dritten SPalte ändert???

    Außerdem habe ich programmieren gesagt, und wollte keine Programme!!!


    Cu TheMillenium
  • Außerdem habe ich programmieren gesagt, und wollte keine Programme!!!

    Nun ja, wenn du programmieren willst, wirst du um einen Interpreter (=Programm) nicht herum kommen ...

    Und wie mache ich vielleicht, dass er immer den Wert in der dritten SPalte ändert???

    Du würdest zum Beispiel den Text zwischen dem 2. und 3. Komma jeder Zeile ändern. Dazu suchst du (zB. mittels Perl) alle Zeilen, die auf dein Muster zutreffen (bei dir zB: Auto num, Name, x, y, z) wobei dir das Komma als signifikantes TRENNZEICHEN dienen kann. In Perl würde das in etwa so aussehen:

    --- schnipp ---

    $neuerWert = 50;

    if ($zeile =~ m/Auto\s{*}\d{+}\,\s{*}\w{+}\s{*}\,\s{*}\w{+}\s{*} \, \s{*} \w{+} \s{*} \, \s{*}\w{+}\s{*}/i)
    {

    $zeile =~ s/Auto\s{*}\d{+}\,\s{*}\w{+}\s{*}\,\s{*}\w{+}\s{*} \, \s{*} \w{+} \s{*} \, \s{*}\w{+}\s{*}/Auto\s{*}\d{+}\,\s{*}\w{+}\s{*}\,\s{*}\w{+}\s{*} \, \s{*} $neuerWert \s{*} \, \s{*}\w{+}\s{*}/i;

    }

    --- schnapp ---

    Wobei das rote die Trennkommata sind und das blaue dein Wert.
    Im richtigen Code müsstest du nur die Leerzeichen entfernen, die ich hier habe machen müssen, um die Ausgabe zu formatieren.

    Na ja, ist 'n bischen kryptisch, geb' ich ja zu. Als kurze Erklärung sei deswegen noch folgendes angemerkt:

    Ein Suchmuster hat die allgemeine Form:

    $zu_durchsuchende_variable =~ m/Suchmuster/Optionen

    Im Beispiel ist die Option 'i' für ''ignore case'' gesetzt, es findet also keine Prüfung auf Gross- und Kleischreibung statt.

    In Kombination mit if(Bedingung) kann man also prüfen, ob $zu_durchsuchende_variable dem Suchmuster entspricht.

    Eine Ersetzung hat diese Form:

    $zu_durchsuchende_variable =~ s/Suchmuster/NeuerText/Optionen

    Für beide Mustererkennungen gelten die folgenden Ausdrücke:

    \w sucht nach Wortzeichen (Ziffern und Unterstrich ''_'' sowie die Buchstaben ohne deutsche Umlaute (ÄÖÜäöüß).
    \d sucht nach Ziffern
    \s sucht nach Whitespacezeichen (TAB, SPACE etc...)
    \, meint das Komma als Zeichen

    Die sogenannten Quantifizierer geben an, wie OFT ein Ausdruck vorkommen darf / soll:

    {+} mindestens ein Mal
    {*} beliebig oft oder gar nicht

    Ich hoffe, du bist jetzt nicht verschreckt, und ich habe dir ein wenig den Einstieg erleichtert. Wenn du dich entscheidest, Perl zu lernen, lernst du eine der mächtigsten Skriptsprachen überhaupt.

    Viel Erfolg

    EDIT: Seit 6 Wochen keine Antwort ? Wird ja dann wohl auch nichts mehr kommen. Wenn jemand noch was dazu schreiben möchte -> PN.