Dialog Abfrage

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
  • Ich habe das Problem das ich im Dialog die Abfrage machen möchte wie viel Geld er zahlen soll. Wenn ich dabei die normale Abfrage nutze die im oberen befehl steht also bei dem Ticket befehl kommt dort nur eine komische Zahl heraus :
    if(dialogid == DIALOG_TICKET)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,WEIß,"Du hast dein Ticket weggeschmissen und Flüchtest");
    SetPlayerWantedLevel(playerid,1);
    return 1;
    }
    if(response == 1)
    {
    SendClientMessage(playerid,WEIß,"Du hast den Betrag %d gezahlt!");
    return 1;
    }
    }


    ocmd:ticket(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,WEIß,"Du bist kein agestellter bei der Polizei");
    if(DutyPD[playerid] == 0)return SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    new pID, grund[265], betrag[265];
    if(sscanf(params,"usd",pID,grund,betrag)) return SendClientMessage(playerid,HELLBLAU,"Benutze: /Ticket [PLAYERID] [GRUND] [STRAFE]");
    format(grund,sizeof(grund),"Du hast ein Ticket bekommen GRUND: %s \nDu musst eine Betrag von %d zahlen", grund, betrag);
    ShowPlayerDialog(pID, DIALOG_TICKET, DIALOG_STYLE_MSGBOX, "TICKET", grund, "Bezahlen", "Flüchten");
    return 1;
    }

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • if(response == 1)
    {
    SendClientMessage(playerid,WEIß,"Du hast den Betrag %d gezahlt!");
    return 1;
    }


    Speicher den Wert des Tickets in einer Variable.
    bsp:
    new fine[MAX_PLAYERS];
    bei deinem befehl
    ocmd..
    ..
    ..
    ..
    fine[pID] = betrag;


    Dann bei deinem Response
    new str[128];
    format(str,sizeof(str)," Du hast den Betrag von %d gezahlt",fine[playerid]);
    SendClientMessage(playerid, -1, str);
    //alternativ kannst du hier noch "fine" resetten

    Achja, schreibe deinen Befehl so
    ocmd:ticket(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,WEIß,"Du bist kein agestellter bei der Polizei");
    if(DutyPD[playerid] == 0)return SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    new pID, grund[265], betrag;
    if(sscanf(params,"us[128]d",pID,grund,betrag)) return SendClientMessage(playerid,HELLBLAU,"Benutze: /Ticket [PLAYERID] [GRUND] [STRAFE]");
    format(grund,sizeof(grund),"Du hast ein Ticket bekommen GRUND: %s \nDu musst eine Betrag von %d zahlen", grund, betrag);
    ShowPlayerDialog(pID, DIALOG_TICKET, DIALOG_STYLE_MSGBOX, "TICKET", grund, "Bezahlen", "Flüchten");
    return 1;
    }

  • Dafür benötigst du eine globale Variable, sprich schreib es so:

    new ticketGeld[MAX_PLAYERS];


    ocmd:ticket(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,WEIß,"Du bist kein agestellter bei der Polizei");
    if(DutyPD[playerid] == 0)return SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    new pID, grund[144], betrag;
    if(sscanf(params,"usd",pID,grund,betrag)) return SendClientMessage(playerid,HELLBLAU,"Benutze: /Ticket [PLAYERID] [GRUND] [STRAFE]");
    format(grund,sizeof(grund),"Du hast ein Ticket bekommen GRUND: %s \nDu musst einen Betrag von %d$ zahlen!", grund, betrag);
    ticketGeld[pID] = betrag;
    ShowPlayerDialog(pID, DIALOG_TICKET, DIALOG_STYLE_MSGBOX, "TICKET", grund, "Bezahlen", "Flüchten");
    return 1;
    }


    //Und unter OnDialogResponse
    if(dialogid == DIALOG_TICKET)
    {
    if(!response) return SendClientMessage(playerid,WEIß,"Du hast dein Ticket weggeschmissen und Flüchtest"),SetPlayerWantedLevel(playerid,1);
    new buffer[128];
    format(buffer,sizeof buffer,"Du hast den Betrag %d gezahlt!",ticketGeld[playerid]);
    SendClientMessage(playerid,WEIß,buffer),GivePlayerMoney(playerid, -ticketGeld[playerid]);
    return 1;
    }


    PS: Du solltest dir vielleicht etwas ausdenken, wenn er nicht genug Geld auf der Hand hat, da er sonst im negativen Bereich wäre ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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