DIALOG_STYLE_INPUT Problem

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
  • Hallo Leute,
    ich arbeite gerade an einem Notruf System für die Polizei und da muss der Spieler, der den Notruf abgibt, verschiedene Angaben in Dialogen machen (z.B. Ort,Täter,...). Dafür verwende ich DIALOG_STYLE_INPUT und speichere die Eingabe mit einem string und einer Variablen.
    Was raus kommt sieht dann jedoch so aus: (keine Angaben, obwohl überall etwas eingegeben wurde)


    Hier der Code:


    Der Notruf Command:
    if(strcmp("/110", cmdtext, true) == 0)
    {
    ShowPlayerDialog(playerid,PNOTRUFGRUND,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib einen Grund für deinen Notruf an:","Weiter","Schließen");
    return 1;
    }


    Die Dialoge unter ondialogresponse:
    if(dialogid == PNOTRUFGRUND)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    new string[128];
    format(string,sizeof(string),"%s",inputtext[60]);
    pnotrufgrund[playerid] = string[120];
    ShowPlayerDialog(playerid,PNOTRUFVERD,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen des Täters\noder des Verdächtigen an:\n(Sollten der Name und die ID unbekannt sein, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFVERD)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    new string[128];
    format(string,sizeof(string),"%s",inputtext[60]);
    pnotrufverd[playerid] = string[120];
    ShowPlayerDialog(playerid,PNOTRUFZEUGE,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen eines Zeugen an:\n(Sollte es keinen Zeugen geben, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFZEUGE)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    new string[128];
    format(string,sizeof(string),"%s",inputtext[60]);
    pnotrufzeuge[playerid] = string[120];
    ShowPlayerDialog(playerid,PNOTRUFORT,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib nun noch den Ort des Verbrechens an:\n(z.B. Burger Shot in LS)","Fertig","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFORT)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    new string[128];
    format(string,sizeof(string),"%s",inputtext[60]);
    pnotrufort[playerid] = string[120];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IstSpielerInFraktion(i,1))
    {
    SendClientMessage(i,GELB,"****** NOTRUF *****");
    new sgrund[128];
    format(sgrund,sizeof(sgrund),"Verbrechen: %s",pnotrufgrund[playerid]);
    SendClientMessage(i,GELB,sgrund);
    new sverd[128];
    format(sverd,sizeof(sverd),"Verdächtige: %s",pnotrufverd[playerid]);
    SendClientMessage(i,GELB,sverd);
    new szeuge[128];
    format(szeuge,sizeof(szeuge),"Zeuge: %s",pnotrufzeuge[playerid]);
    SendClientMessage(i,GELB,szeuge);
    new sort[128];
    format(sort,sizeof(sort),"Tatort: %s",pnotrufort[playerid]);
    SendClientMessage(i,GELB,sort);
    SendClientMessage(i,GELB,"******************");
    }
    }
    }
    return 1;
    }
    }

  • was soll das hier sein?


    format(string,sizeof(string),"%s",inputtext[60]);
    pnotrufverd[playerid] = string[120];
    Du formatierst den string mit dem 61. Zeichen (0-60 = 61), welches nicht exestiert, weil der String allgemein nicht so lang ist.
    Lass den quatsch.


    Nimm dir deine globale Variable oder PVar und speicher den inputtext dort rein, aber bitte ohne Positionsangabe.
    Beispiel:
    SetPVarString(playerid,"Grund",inputtext);
    Auslesen dann einfach über GetPVarString


    Irgendwie versteh ich den pnotrufverd[playerid] nicht.
    Was soll das genau bewirken?

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

    Margarete Stokowski

  • Probiers mal so <edit> sofern das von BlackAce nicht funktioniert </edit>


    new string[128];
    format(string,sizeof(string),"%s",inputtext);
    pnotrufgrund[playerid] = string;


    pnotrufgrund[playerid] ist als String deklariert?

  • also so?:


    if(dialogid == PNOTRUFGRUND)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarInt(playerid,"pnotrufgrund",inputtext[128]);
    ShowPlayerDialog(playerid,PNOTRUFVERD,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen des Täters\noder des Verdächtigen an:\n(Sollten der Name und die ID unbekannt sein, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFVERD)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarInt(playerid,"pnotrufverd",inputtext[128]);
    ShowPlayerDialog(playerid,PNOTRUFZEUGE,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen eines Zeugen an:\n(Sollte es keinen Zeugen geben, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFZEUGE)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarInt(playerid,"pnotrufzeuge",inputtext[128]);
    ShowPlayerDialog(playerid,PNOTRUFORT,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib nun noch den Ort des Verbrechens an:\n(z.B. Burger Shot in LS)","Fertig","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFORT)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarInt(playerid,"pnotrufort",inputtext[128]);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IstSpielerInFraktion(i,1))
    {
    SendClientMessage(i,GELB,"****** NOTRUF *****");
    new sgrund[128];
    format(sgrund,sizeof(sgrund),"Verbrechen: %s",GetPVarInt(playerid,"pnotrufgrund"));
    SendClientMessage(i,GELB,sgrund);
    new sverd[128];
    format(sverd,sizeof(sverd),"Verdächtige: %s",GetPVarInt(playerid,"pnotrufverd"));
    SendClientMessage(i,GELB,sverd);
    new szeuge[128];
    format(szeuge,sizeof(szeuge),"Zeuge: %s",GetPVarInt(playerid,"pnotrufzeuge"));
    SendClientMessage(i,GELB,szeuge);
    new sort[128];
    format(sort,sizeof(sort),"Tatort: %s",GetPVarInt(playerid,"pnotrufort"));
    SendClientMessage(i,GELB,sort);
    SendClientMessage(i,GELB,"******************");
    }
    }
    }
    return 1;
    }
    }


    Das "[128]" hinter inputtext muss sein, da ich sonst errors bekomme

  • habs jetzt so:


    if(dialogid == PNOTRUFGRUND)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufgrund",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFVERD,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen des Täters\noder des Verdächtigen an:\n(Sollten der Name und die ID unbekannt sein, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFVERD)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufverd",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFZEUGE,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen eines Zeugen an:\n(Sollte es keinen Zeugen geben, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFZEUGE)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufzeuge",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFORT,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib nun noch den Ort des Verbrechens an:\n(z.B. Burger Shot in LS)","Fertig","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFORT)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufort",inputtext);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IstSpielerInFraktion(i,1))
    {
    SendClientMessage(i,GELB,"****** NOTRUF *****");
    new sgrund[128];
    format(sgrund,sizeof(sgrund),"Verbrechen: %s",GetPVarString(playerid,"pnotrufgrund",sgrund,128));
    SendClientMessage(i,GELB,sgrund);
    new sverd[128];
    format(sverd,sizeof(sverd),"Verdächtige: %s",GetPVarString(playerid,"pnotrufverd",sverd,128));
    SendClientMessage(i,GELB,sverd);
    new szeuge[128];
    format(szeuge,sizeof(szeuge),"Zeuge: %s",GetPVarString(playerid,"pnotrufzeuge",szeuge,128));
    SendClientMessage(i,GELB,szeuge);
    new sort[128];
    format(sort,sizeof(sort),"Tatort: %s",GetPVarString(playerid,"pnotrufort",sort,128));
    SendClientMessage(i,GELB,sort);
    SendClientMessage(i,GELB,"******************");
    }
    }
    }
    return 1;
    }
    }


    und das kommt raus: (1. angabe war "mord",2.angabe war "unbekannt", 3. angabe war "0" und 4. angabe war "ls")


  • Nein, sonst würdest du deinen Fehler sehen.


    format(sort,sizeof(sort),"Tatort: %s",GetPVarString(playerid,"pnotrufort",sort,128));


    Du verwendest es falsch.
    Deswegen hab ich dir auch den Link gegeben ;)

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

    Margarete Stokowski

  • jetzt kommt das raus: (gleiche angaben wie eben)



    und ich hab das:


    if(dialogid == PNOTRUFGRUND)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufgrund",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFVERD,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen des Täters\noder des Verdächtigen an:\n(Sollten der Name und die ID unbekannt sein, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFVERD)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufverd",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFZEUGE,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib die ID oder den Namen eines Zeugen an:\n(Sollte es keinen Zeugen geben, gib 'unbekannt' ein)","Weiter","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFZEUGE)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufzeuge",inputtext);
    ShowPlayerDialog(playerid,PNOTRUFORT,DIALOG_STYLE_INPUT,"Polizei Notruf","Gib nun noch den Ort des Verbrechens an:\n(z.B. Burger Shot in LS)","Fertig","Schließen");
    return 1;
    }
    }
    if(dialogid == PNOTRUFORT)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    SetPVarString(playerid,"pnotrufort",inputtext);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IstSpielerInFraktion(i,1))
    {
    SendClientMessage(i,GELB,"****** NOTRUF *****");
    new sgrund[128];
    GetPVarString(playerid,"pnotrufgrund",sgrund,128);
    printf("Verbrechen: %s",sgrund);
    new sverd[128];
    GetPVarString(playerid,"pnotrufverd",sverd,128);
    printf("Verdächtige: %s",sverd);
    new szeuge[128];
    GetPVarString(playerid,"pnotrufzeuge",szeuge,128);
    printf("Zeuge: %s",szeuge);
    new sort[128];
    GetPVarString(playerid,"pnotrufort",sort,128);
    printf("Ort: %s",sort);
    SendClientMessage(i,GELB,"******************");
    }
    }
    }
    return 1;
    }
    }

  • Das war mit SendClientMessage schon richtig ;)


    Nur die Reihenfolge der Funktionen war falsch

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

    Margarete Stokowski

  • GetPVarString(playerid,"pnotrufgrund",sgrund,128);
    printf("Verbrechen: %s",sgrund); <- pöse | das ist nur für die Konsole


    Das sollte so gehen.
    Rest musst du machen ;)
    GetPVarString(playerid,"pnotrufgrund",sgrund,128);
    format(sgrund,sizeof(sgrund),"Verbrechen: %s", sgrund);
    SendClientMessage(i,GELB,sgrund); <- brav | ist fürs Chatfenster

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

    Margarete Stokowski