HTTP_GET string in Array

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
  • Da PAWN in sachen Speicherverwaltung, fast nicht dynamisch agiert,
    musst du dir einen Maximalwert suchen bzw festlegen, damit auch alles passt ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • stock split(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    Damit kannste deinen String nach belieben splitten und jeweils in den Array ballern danach.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • new tmp[3][128];
    split("Hello|my|World", tmp, '|');


    // tmp[0] = Hello
    // tmp[1] = my
    // tmp[2] = World


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Danke, werde das ganze morgen mal testen und dann mal berichten wie es ausging :)




    /edit:

    new tmp[3][128];
    split("Hello|my|World", tmp, '|');


    // tmp[0] = Hello
    // tmp[1] = my
    // tmp[2] = World

    Das hab ich nun gemacht, allerdings scheint der da irgendwo stecken zu bleiben. Hab vor dem ne Textausgabe und danach eingefügt nur die erste wird ausgegeben ...

  • alter Beitrag
    public MyHttpResponse(index, response_code, data[])
    {
    new buffer[2000];
    if(response_code == 200)
    {
    print(buffer);

    format(buffer, sizeof(buffer), "%s", data);
    split2(buffer, BadWord, '|');
    print(BadWord[1]);
    format(string,sizeof(string),"Badword0: %s .Badword1: %s . Badword2: %s",BadWord[0],BadWord[1],BadWord[2]);

    alter Beitrag
    SendClientMessage(index, 0xFFFFFFFF, string);
    }
    else
    {
    format(buffer, sizeof(buffer), "The request failed! The response code was: %d", response_code);
    SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
    }

    alter Beitrag
    stock split2(const strsrc[], strdest[][], delimiter)
    {
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
    if(strsrc[i]==delimiter || i==strlen(strsrc)){
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }

    alter Beitrag
    Und das steht im serverlog ->

    Code
    (null)


    Inzwischen probiere ich es mit sscanf, aber hier wird mir nur das erste Wort vom Rest getrennt. Ich möchte ja aber das die Wörter im Array landen jemand eine Idee ?
    (Die Idee von Sniper funktionierte ja leider nicht.)

  • Wie benutzt du sscanf denn? Wenn du da nen Delimiter angibst, sollte das eigentlich auch kein Problem sein.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Funktioniert leider nicht,
    Code:
    print(buffer);
    SendClientMessage(index, 0xFFFFFFFF, "DEBUG2");
    //Yes!
    format(buffer, sizeof(buffer), "%s", data);

    ShowPlayerDialog(index,DIALOG_WELCOME, DIALOG_STYLE_MSGBOX,"TEST",data,"-","-");

    sscanf(buffer, "a<s>[64]p<|>", BadWord);
    print(BadWord[1]);
    format(string,sizeof(string),"Badword0: %s .Badword1: %s . Badword2: %s",BadWord[0],BadWord[1],BadWord[2]);


    SendClientMessage(index, 0xFFFFFFFF, "DEBUG3");
    SendClientMessage(index, 0xFFFFFFFF, string);
    SendClientMessage(index, 0xFFFFFFFF, "DEBUG4");
    Wörterliste:

    Code
    Analficker|Analritter|Anus|Anusschmatzer|Arsch|Arschgeburt|Arschloch|Azzlack|B!tch|Bitch|drecksack|dreckskind|drecksknecht|Dreckssau|DummerSack|F0tze|F0tzenkind|F1cker|Fehlgeburt|fettgondel|Ficker|fickfehler|Fickschnitzel|fick_dich|Fotze|Fotzekind|Fotzenknecht|fuck|gefickteskind|H0lzkopf|Hitler|Hittler|holzkopf|Homo|hrns|Hrsn|Huan|Huansohn|Hundesohn|hure|Hurensohn|hurre|hurrensohn|hus0|huso|Kackbratze|Kackfotze|Kanacke|Kanalratte|Knecht|lappen|Lauch|Mistgeburt|Muschilecker|N00b|N0ob|nazi|No0b|Noob|Nutnkind|Penis|Penner|Pimmelkopf|pisser|pussy|Ratte|Schlampe|Schlappschwanz|schnauze|schwanzfresse|schwanzlutscher|Schwuchtel|Schwul|spacken|spacko|spast|spasti|spastie|Spastiker|Tr0ttel|Trottel|Wichser|wixxa|wixxer
  • Was ist das für ein SSCANF Code?
    sscanf(buffer, "p<|>s[64]", BadWord);
    Musst die länge warscheinlich eh erhöhen denn 64 is zu klein


    //e
    Aber das ist dann auch wieder schwer umzusetzten, da du es erweitern musst
    bsp:
    Der Text

    Zitat

    Analficker|Analritter|Anus


    Der SSCANF code:
    sscanf(buffer, "p<|>s[64]s[64]s[64]", BadWord[0], BadWord[1], BadWord[2]);
    Wie man das einfach machen kann wüsste ich jetzt nicht

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • Erhälst du die Daten aus ner mySQL auf die du theoretisch auch übers Script zugreifen könntest? Erscheint mir grade irgendwie alles unnötig kompliziert konzipiert zu sein.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'


  • Das was du hier machst vom sscanf code geht nicht


    das sollte so aussehen p sagt aus das er den string splitten soll ab dem delimiter | und a steht für array also ein array hier als beispiel mit 4 1dimensionen und 10 2dimensionen
    also string[4][10];

    "p<|>a<s[10]>[4]"


    Ich hoffe das hat dir weiter geholfen

  • Hier geht gar nichts mehr ohne sscanf im Forum, weil sich keiner hier mit dem Bearbeiten von Texten auseinander setzt;)


    new text[] = "Beispiel|TATU|TATA";
    new string[10][20]; // hier wird alles gespeichert
    new i = 0, c = 0, d = 0;
    while(text[i] != 0 && c < sizeof(string) && (d+1) < sizeof(string[]))
    {
    if(text[i] != '|')
    {
    string[code=c][d] = text[i];
    d++;
    }
    else
    {
    c++;
    d = 0;
    }
    i++;
    }


    //Ausgabe (zum test)
    for(i = 0; i< sizeof(string); i++) printf("String[%d]: %s", i, string[i]);