Inputtext in einen String/eine Varriable Zwischenschpeichern?

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
  • moin Breadi,
    meine Frage is diesma:
    wie speichere ich den Inputtext in einer Varriable?


    habs ma so getestet:


    strval(inputtext);
    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%d.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    user= inputtext;
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }


    oder auch so:


    user[1]= inputtext;
    allerding kommt immer dieser Error:

    Zitat

    C:\Multilife.pwn(4346) : error 006: must be assigned to an array

    was muss ich ändern?


    danke im Vorraus

  • Der Inputtext ist generell ein String, es kommt darauf an wie du ihn verwendest, gibst du nur Zahlen an oder auch Buchstaben?
    /edit...

    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%d.ini",strval(inputtext));
    if(dini_Exists(formatLD))
    {
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    Evtl so...

    Einmal editiert, zuletzt von ]hp[ ()

  • Tzz Schmarn... Wenn es ein Integer ist benutzt du strval, das ist aber eine Zeichenkette, von daher musst du strmid benutzen

  • also es isn Bank-system, in diesem Dialog response soll er überprüfen ob der Acc des angegebenen NAMENS existiert, also ja, Buchstaben, aber da auch ein Name mit Zahle möglich is weiß ich jetz nich, was ich da machen soll
    edit

    nein, denn ich brauch den Inputtext zwischengespeichert in einer Varriable, da ein weiterer Dialog danach kommt,


    das ganze sieht bisher so aus:
    if(dialogid == 400)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    strval(inputtext);
    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%d.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    user= inputtext;
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"dieser Nutzer existiert nicht!");
    ShowPlayerDialog(playerid,400,DIALOG_STYLE_INPUT,"Emfänger","Geben Sie den Empfänger ein (Name)","weiter","abbrechen");
    }
    }
    }

  • Zitat

    strval can be used to convert a string to an integer.


    Zitat

    inputtext[] The text entered into the input box by the player or the selected list item text.


    Das gillt allerdings nur wenn man nur Zahlen angibt, und da er den String mit %d formatiert bin ich logischerweise von Integern ausgegangen. Anders siehts natürlich aus wenn er nen String angibt aber dazu kann ich nix sagen das geht aus dem Code nicht hervor. ^^


    /edit Wenn das so ist.


    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%s.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    Dann muss das ganze so aussehen, nix mit strval oder strmid.

  • new blubb[150];
    strmid(blubb,inputtext,0,sizeof(inputtext),255);
    format(string,sizeof(string),"%s.xd",blubb);
    if(fexist(string))
    {
    //restlicher Code

  • das ganze sieht jetz so aus:



    new user[256];
    new betrag[MAX_PLAYERS];
    if(dialogid == 400)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    strmid(string,inputtext,0,sizeof(inputtext),255);
    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%d.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"dieser Nutzer existiert nicht!");
    ShowPlayerDialog(playerid,400,DIALOG_STYLE_INPUT,"Emfänger","Geben Sie den Empfänger ein (Name)","weiter","abbrechen");
    }
    }
    }
    if(dialogid == 401)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    strmid(betrag[playerid],inputtext,0,sizeof(inputtext),255);
    ShowPlayerDialog(playerid,402,DIALOG_STYLE_INPUT,"Grund","Geben Sie einen Grund für die Überweisung an","absenden","abbrechen");
    }
    }


    noch 2 Warnings:
    C:\BCL.pwn(4341) : warning 224: indeterminate array size in "sizeof" expression (symbol "")
    C:\BCL.pwn(4364) : warning 224: indeterminate array size in "sizeof" expression (symbol "")

  • new user[256];
    new betrag[MAX_PLAYERS];
    if(dialogid == 400)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%s.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"dieser Nutzer existiert nicht!");
    ShowPlayerDialog(playerid,400,DIALOG_STYLE_INPUT,"Emfänger","Geben Sie den Empfänger ein (Name)","weiter","abbrechen");
    }
    }
    }
    if(dialogid == 401)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    ShowPlayerDialog(playerid,402,DIALOG_STYLE_INPUT,"Grund","Geben Sie einen Grund für die Überweisung an","absenden","abbrechen");
    }
    }

  • Das mit strmid ist eigentlich umständlich, man kann auch sofort schauen obs eine Spielerdatei mit dem inputtext gibt ohne das ganze zu extrahieren.

  • new user[256];
    new betrag[MAX_PLAYERS];
    if(dialogid == 400)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    strmid(string,inputtext,0,sizeof(inputtext),255);// hier
    new formatLD[256];
    format(formatLD,sizeof(formatLD),"/%d.ini",inputtext);
    if(dini_Exists(formatLD))
    {
    SendClientMessage(playerid,COLOR_RED,"Ok, dieser Nutzer existiert");
    ShowPlayerDialog(playerid,401,DIALOG_STYLE_INPUT,"Betrag","Geben Sie den zu überweisenden Betrag ein","weiter","abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"dieser Nutzer existiert nicht!");
    ShowPlayerDialog(playerid,400,DIALOG_STYLE_INPUT,"Emfänger","Geben Sie den Empfänger ein (Name)","weiter","abbrechen");
    }
    }
    }
    if(dialogid == 401)
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"Abgebrochen");
    }
    else
    {
    strmid(betrag[playerid],inputtext,0,sizeof(inputtext),255);// hier
    ShowPlayerDialog(playerid,402,DIALOG_STYLE_INPUT,"Grund","Geben Sie einen Grund für die Überweisung an","absenden","abbrechen");
    }
    }


    ich brauch des in einem neuen Dialogresponse! D:
    es is so:


    --> erst Name des Empfängers----> Betrag----> Grund-----> und erst am Dialogresponse des letzten Diaogs wrden die Aktionen ausgeführt, deswegen brauch ich die Inputtexte in Varriablen