Inputtext in einer Variable speichern und anschließend abfragen

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,
    seid zwei Tagen beschädftige ich mich mit den Problem, wie ich einen Inputtext eines Dialoges abspeichern und anschließend nach einen Playername bzw. einer PlayerID abfragen kann.
    Die Suchfunktion habe ich benutzt, doch leider hat sie mich nur kaum vorangebracht.


    Nochmal kurz zusammengefasst, mithilfe eines Beispieles: Spieler A benutzt den Befehl /giveweapon und daraufhin öffnet sich ein Dialog mit dem Dialogtype Input. Dort gibt Spieler A den Playername bzw. die PlayerID von B ein, den er später eine Waffe geben möchte. Anschließend öffnen sich weitere Dialoge, bei dem Spieler A aussuchen kann, ob er z.b Spieler B Nahkampf oder Handschusswaffen oder ob er einen Schlagring oder eine Desert Eagle geben möchte. Nachdem sich Spieler A entschieden hat, sollte Spieler B die von Spieler A ausgesuchte Waffe bekommen.


    Mein Problem besteht darin, den Inputtext in einer Variable zu speichern und anschließend per z.b IsPlayerConnected abzufragen. Das ist mein bisheriger Quelltext, der leider nicht einwandfrei funktioniert. Dies ist nur ein Ausschnitt von dem Dialog mit dem Dialogtype Input.


    if(dialogid==DIALOG_AGIVEWEAPONPID)
    {
    if(response==0)
    {
    SendClientMessage(playerid,ERROR_ROT,"Sie haben den Vorgang abgebrochen.");
    return 1;
    }
    if(response==1)
    {
    piD = strval(inputtext); // piD wurde bereits bei OnDialogResponse definiert.
    if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_AGIVEWEAPONPID,DIALOG_STYLE_INPUT,"{FF0000} Waffenliste","Bitte geben sie einen gültigen Playername/ID ein:","Bestätigen","Abbrechen");
    if(!IsPlayerConnected(piD)) return ShowPlayerDialog(playerid,DIALOG_AGIVEWEAPONPID,DIALOG_STYLE_INPUT,"{FF0000} Waffenliste","Bitte geben sie einen gültigen Playername/ID ein:","Bestätigen","Abbrechen");
    ShowPlayerDialog(playerid,DIALOG_AGIVEWEAPON,DIALOG_STYLE_LIST,"{FF0000} Waffenliste","Nahkampfwaffen \r\nHandschusswaffen \r\nShotguns \r\nMaschinenpistolen \r\nSturmgewehre \r\nRifles \r\nSonstige","Bestätigen","Zurück");
    return 1;
    }
    }


    Edit: Grammatikfehler korrigiert.

  • Also der Code sieht eigentlich richtig aus ;)
    Schreibe


    if(!strlen(inputtext))


    nochmal zu:


    if(!strval(inputtext))


    Aber das ist im Prinzip egal, da du ja eh nochmal checkst ob der Spieler mit dieser id online ist :D


    mehr code :huh:


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • für die nutzung von einer übergreifenden id nutz ich eine globale variabel welche ich neu definiere bsp: new empfänger[MAX_PLAYERS];


    und dann bei dem dialog verwendest es so empfänger[playerid] = strval(inputtext);


    wenn einer eine bessere möglichkeit kennst ruhig drunter posten ^^ oder besser gesagt eine ressourcensparendere Version

  • Kann die Variable dann nicht bei mehrfachen Gebrauch überschrieben werden? Oder irr ich mich gerade?


    Edit: Ich hab gerade nochmal den Befehl getestet, und komischerweiße bekommt immer der Spieler mit der PlayerID 0 die ausgewählte Waffe.
    Edit: Hat wirklich keiner eine Idee bzw. Lösung für dieses Problem? Ich würde mich sehr freuen.

    2 Mal editiert, zuletzt von Hefti ()