PIN

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
  • Hi


    Du solltest die Funktion ShowPlayerDialog benutzen:


    http://wiki.sa-mp.com/wiki/ShowPlayerDialog


    Dort gibt es 4 Dialogarten:


    http://wiki.sa-mp.com/wiki/Dialog_Styles


    Für dich heisst das also DIALOG_STYLE_INPUT:


    ShowPlayerDialog(playerid, DIAGID, DIALOG_STYLE_INPUT, "PIN Eingabe", "Bitte geben Sie ihren PIN ein", "Weiter", "Abbrechen");


    Gruss

  • Unter OnDialogResponse hast Du als Parameter das Array (String) inputtext[], das entspricht deinem Inputtext. Zum Vergleich einfach dne String in einen Integer konvertieren und dann mit dme PVar vergleichen:


    new pin_value = strval(inputtext);
    if(GetPVarInt(playerid, "myPIN") == pin_value)
    {
    }


    Ich würde dir aber empfehlen, deinen PIN als String zu speichern, denn aus einer 0234 wird bei einem Integer 234, was ja nicht mehr deinem ursprünglichen String entspricht.


    Edit: Antwort überarbeitet, um Missverständnis vorzubeugen
    Edit 2: Hier noch ein kleines Tutorial über PVars:


    [ SCRIPTING ] Per-Player Variablen-System (PVars)

  • So habe es fast fertig nur eine kleine Frage die ich mir selbst nicht erklären kann...


    Immer wenn ich abbrechen oder die ESC Taste drücke so das der Dialog
    sich schließen soll öffnet er sich wieder automatisch?


    Noch 1 Error, den ich irgendwie nicht beheben kann :s
    if(dialogid==DIALOG_AUSZAHLEN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,Hellblau,"Du hast den Auszahlungsvorgang abgebrochen.");
    }
    if(response==1)
    {
    new str[128];
    if(GetPVarInt(playerid,"Bankgeld") < strval(inputtext))return SendClientMessage(playerid,Hellrot,"Du hast nicht genügend Geld auf deinem Konto.");
    GivePlayerMoney(playerid,strval(inputtext));
    SetPVarInt(playerid,"Bankgeld") -= strval(inputtext); //Error Zeile
    format(str,sizeof(str),"Sie haben %d$ von ihrem Konto abgehoben",strval(inputtext));
    SendClientMessage(playerid,Hellrot,str);
    }
    }


    Errors: C:\Users\John_Jones\Desktop\Neuer Ordner (3)\gamemodes\First-Roleplay.pwn(1360) : warning 202: number of arguments does not match definition
    C:\Users\John_Jones\Desktop\Neuer Ordner (3)\gamemodes\First-Roleplay.pwn(1360) : error 022: must be lvalue (non-constant)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Derzeit haben wir noch 1 Error, so sieht der Code aus:


    PAWN Quelltext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16


    if(dialogid==DIALOG_AUSZAHLEN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,Hellblau,"Du hast den Auszahlungsvorgang abgebrochen.");
    }
    if(response==1)
    {
    new str[128];
    if(GetPVarInt(playerid,"Bankgeld") < strval(inputtext))return SendClientMessage(playerid,Hellrot,"Du hast nicht genügend Geld auf deinem Konto.");
    GivePlayerMoney(playerid,strval(inputtext));
    SetPVarInt(playerid,"Bankgeld", -= strval(inputtext); //Error Zeile
    format(str,sizeof(str),"Sie haben %d$ von ihrem Konto abgehoben",strval(inputtext));
    SendClientMessage(playerid,Hellrot,str);
    }
    }




    Hier der Error:


    PAWN Quelltext
    1


    C:\Users\John_Jones\Desktop\Neuer Ordner (3)\gamemodes\First-Roleplay.pwn(1360) : error 029: invalid expression, assumed zero

  • Was ist hier falsch? O.o
    if(dialogid==DIALOG_EINZAHLEN)
    {
    if(response==0)
    {
    SendClientMessage(playerid,Hellblau,"Du hast den Einzahlungsvorgang abgebrochen.");
    }
    if(response==1)
    {
    new str[128];
    if(GetPVarInt(playerid,"Bankgeld") < strval(inputtext))return SendClientMessage(playerid,Hellrot,"Du hast nicht genügend Geld auf deinem Konto.");
    GivePlayerMoney(playerid,-strval(inputtext));
    SetPVarInt(playerid,"Bankgeld", +strval(inputtext); //Error Zeile
    format(str,sizeof(str),"Sie haben %d$ auf ihr Konto eingezahlt.",strval(inputtext));
    SendClientMessage(playerid,Hellrot,str);
    }
    }


    C:\Users\John_Jones\Desktop\Neuer Ordner (3)\gamemodes\First-Roleplay.pwn(1415) : error 029: invalid expression, assumed zero

  • SetPVarInt(playerid,"Bankgeld", +strval(inputtext); //Error Zeile


    Da öffnest du 2 Klammern, schließt jedoch nur 1!


    Richtig wäre es so:


    SetPVarInt(playerid,"Bankgeld", GetPVarInt(playerid, "Bankgeld") +strval(inputtext));


    E1: Über mir ist schneller :)