Dialog Input | Splitten

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 Abend,


    Mein Name lautet CIBERKILLER.
    Und zwar bräuchte ich Hilfe beim splitten des Dialog Inputs.


    ShowPlayerDialog(playerid, DIALOG_CREATE_ENTER_EXIT, DIALOG_STYLE_INPUT, ".:Eingang erstellen:.", "{FFFFFF}Gebe nun die Kordinaten in den Chat ein z.B (X,Y,Z)", "Angabe", "Schließen");
    Das ganze soll z.B so gemeint, 1345.34314,-2019.43414,14.0983
    Er soll mir das ganze dann zwischenspeichern, pos[0]=1345.34314,pos[1]=-2019.43414,pos[2]=14.0983
    Kann mir jemand einen Tipp geben, wie ich das anstellen soll ?


    Mit freundlichen Grüßen,


    CIBERKILLER

    Einmal editiert, zuletzt von Kasakow ()

  • new Float:pos[3];
    new dots, tmp[16], count;
    for(new i=1, j=strlen(inputtext); i<j; i++)
    {
    if(inputtext[i] == ',' || inputtext[i] == ')')
    {
    pos[count] = floatstr(tmp);
    count++;
    tmp = "";
    dots = 0;
    }
    else if(inputtext[i] >= '0' && inputtext[i] <= '9')
    {
    format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    }
    else if(inputtext[i] == '-')
    {
    if(!strlen(tmp)) format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    else return SendClientMessage(playerid, ROT, "Fehler"); //Minus nicht am Anfang (was will es denn mittendrin??!)
    }
    else if(inputtext[i] == '.')
    {
    dots++;
    format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    if(dots > 1) return SendClientMessage(playerid, ROT, "Fehler"); //Mehr als 1 Punkt
    }
    else return SendClientMessage(playerid, ROT, "Fehler"); //Kein - oder ) oder , oder . oder 0 1 2 3 4 5 6 7 8 9.
    }
    printf("%f %f %f", pos[0], pos[1], pos[2]);


    Eingabe:

    Zitat

    (1345.34314,-2019.43414,14.0983)


    Ausgabe:

    Zitat

    1345.343139 -2019.434082 14.098299


    Geht sicher effizienter, aber du macht ja keine 10000 Eingaben auf einmal, von daher geht die Anschaulichkeit vor.