Das Script in-Game auslesen! Aber wie?

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
  • CMD:Test(playerid,params[])
    {
    new File:Text, i, string[128];
    new tmp[20], tmp2[20], idx; tmp = strtok(params,idx), tmp2 = strtok(params,idx);
    if(!strlen(tmp2)) return SendClientMessage(playerid, RED, "Benutze: /test [start] [ende]");
    new start = strval(tmp);
    new ende = strval(tmp2);
    if(fexist("Text.txt"))
    {
    Text = fopen("Text.txt", io_read);
    while(fread(Text, string))
    {
    i++;
    if(i>=start && i<=ende) format(string, sizeof(string), "Gesuchter Text in Zeile %d: %s", i, string), SendClientMessage(playerid, RED, string);
    }
    }
    return 1;
    }


    Ich schätze du meinst es so.


    Dazu brauchst du noch strtok: http://wiki.sa-mp.com/wiki/Strtok

  • Dort bekomme ich folgenden Error:


    C:\Users\Marcel\Desktop\Testing Area\gamemodes\TestScript.pwn(283) : error 017: undefined symbol "strtok"
    C:\Users\Marcel\Desktop\Testing Area\gamemodes\TestScript.pwn(283) : error 033: array must be indexed (variable "tmp2")
    C:\Users\Marcel\Desktop\Testing Area\gamemodes\TestScript.pwn(283) : warning 203: symbol is never used: "idx"


    Und zwar ist das diese Zeile:


    new tmp[20], tmp2[20], idx; tmp = strtok(params,idx), tmp2 = strtok(params,idx);


    Jeffry:



    Ich möchte dich wirklich nicht mit meinen Problemen belasten, doch könntest du mir nochmal die genaue Bedeutung von "strtok, strfind, strlen, strval, strcmp, tmp & idx" erklären?
    Nur wenn du Zeit hast anhand von kleinen simplen Beispielen vielleicht, ich hab mir heute den halben Tag die jeweiligen Beiträge im Wiki dazu angeschaut und es zum kleinen Teil auch verstanden nur eben noch nicht ganz.
    Und zu tmp & idx habe ich garnichts gefunden. Ich gehe mal davon aus das idx für Index steht aber wofür steht tmp? Temporary?
    Zum Beispiel: Wann und Wo - Welches? Wieso dieses? Und was es macht.
    Also nur wenn du Zeit dafür hast, wäre dir sehr verbunden.


    Du hast mir jetzt schon so viel geholfen =)
    Mit freundlichen Gruß =)


    Alle Menschen sind eins. Was sie unterscheidet, ist der Name, den man ihnen gibt.
    (Buddha)


    Uns zivilisierten Menschen ist zwar gelungen, das Raubtier in uns auszuschalten, nicht aber den Esel.
    (Winston Churchill)


    Wenn du denkst, die ganze Welt sei schlecht, dann vergisst nicht, dass Leute wie du darin leben.
    (Mahatma Gandhi)

    Einmal editiert, zuletzt von ItsFreaky | Marcel ()

  • Alles klar, schon einmal vielen Dank für deine erneute Hilfe =)



    Edit 19.06.2014 20:34:


    Ich bekomme wieder nur "Unknown Command".


    Alle Menschen sind eins. Was sie unterscheidet, ist der Name, den man ihnen gibt.
    (Buddha)


    Uns zivilisierten Menschen ist zwar gelungen, das Raubtier in uns auszuschalten, nicht aber den Esel.
    (Winston Churchill)


    Wenn du denkst, die ganze Welt sei schlecht, dann vergisst nicht, dass Leute wie du darin leben.
    (Mahatma Gandhi)

    Einmal editiert, zuletzt von ItsFreaky | Marcel ()

  • Hier die Erklärungen:


    strfind = Sucht einen string in einem string. (z.B. In "Hallo Welt" wird "Welt" gesucht.) Es wird die Stelle des Texts zurückgegeben (in dem Fall 6).


    strlen = Länge eines strings. (strlen("Hallo") ist 5, da Hallo 5 Buchstaben hat.)


    strval = Wert eines strings. (strval("123") ist 123, als Integer, damit kannst du dann rechnen, mit "123" geht das nicht.)


    strcmp = Vergleicht zwei strings mit einander. ("Hallo" und "Hallo" zum Beispiel) Sind beide strings gleich, wird 0 zurückgegeben.


    strtok = Splittet einen string am Leerzeichen.
    tmp & idx" = Gehört zu strtok. idx Speichert die letzte Position um Ressourcen zu schonen (irrelevant für dich, Hauptsache es ist da). tmp bekommt den Rückgabewert reingeschrieben.
    string = "Hallo Welt";
    tmp = strtok(string, idx); //Hier steht "Hallo" drin
    tmp2 = strtok(string, idx); //Hier steht "Welt" drin


    -----------------------------------


    So, und zu deinem Befehl. Poste doch bitte mal den Code wie du ihn grade hast.
    Füge aber noch als erste Zeile im Befehl ein "print("Test");" ein, und schau, ob das überhaupt geprintet wird, wenn du den Befehl eingibst.


    ItsFreaky | Marcel:

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Vielen Dank Jeffry:


    Ich werde es mir später anschauen und testen und den Code posten.
    Da ich dafür jetzt keine Zeit hatte und auch die letzten Tage leider keine Zeit hatte.


    Mfg :)


    Alle Menschen sind eins. Was sie unterscheidet, ist der Name, den man ihnen gibt.
    (Buddha)


    Uns zivilisierten Menschen ist zwar gelungen, das Raubtier in uns auszuschalten, nicht aber den Esel.
    (Winston Churchill)


    Wenn du denkst, die ganze Welt sei schlecht, dann vergisst nicht, dass Leute wie du darin leben.
    (Mahatma Gandhi)