Problem beim Personalausweis System

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, liebe Community.
    Ich habe ein kleines Problem bei meinem Personalausweis System.



    if(dialogid==DIALOG_ALTER)
    {
    new alter;
    if(response==0)
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du hast den Vorgang abgebrochen.");
    return 1;
    }
    if(response==1)
    {
    if(alter < 10)return SendClientMessage(playerid,COLOR_WHITE,"Unter 10 Jahren kriegst du leider keinen Personalausweis.");
    if(alter > 100)return SendClientMessage(playerid,COLOR_WHITE,"Kein Mensch der über 100 Jahre ist, spielt noch am Computer.");
    if(!strval(inputtext))
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du hast kein Alter angegeben - Vorgang abgebrochen.");
    return 1;
    }
    else
    {
    Spieler[playerid][Alter] = inputtext;
    ShowPlayerDialog(playerid,DIALOG_SEX,DIALOG_STYLE_LIST,"Geschlecht auswählen","Männlich\nWeiblich","Auswählen","Abbrechen");
    }
    }
    }



    Herauskommt dieser Error:

    C:\Dokumente und Einstellungen\Mirko G\Desktop\FreeRoam-Project\gamemodes\RSSA.pwn(626) : error 006: must be assigned to an array
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Zeile 626 = Spieler[playerid][Alter] = inputtext;

  • Dies wird so funktionieren, da "inputtext" ein string ist, du es aber einem Integer zuweisen moechtest.
    Mit der Funktion "strval" wandelst du diesen string in einen Integer um und kannst ihn dann dementsprechend benutzen.


    Gruesse,
    tony

  • Die Variable alter, die du unter OnDialogResponse erstellen lässt wird nirgends gesetzt - und ist somit gleich Null. Damit es nicht zu Fehlern kommt, müsstest du diese Variable direkt bei der Erstellung setzen:
    new alter=strval(inputtext);
    oder nach der Erstellung der Variable:
    new alter;
    alter=strval(inputtext)


    Dazu kommt, wie bereits erwähnt wurde musst du bei der Enumerator 'Spieler' Variablen Setzung von 'Alter' die Funktion strval (String to Value, Text zu Zahl) verwenden.
    Spieler[playerid][Alter]=strval(inputtext);


    Um abzufragen, ob die Eingabe eine Zahl ist - empfehle ich dazu die Funktion IsNumeric:
    stock IsNumeric(const Text[])
    {
    new Laenge=strlen(Text);
    if(Laenge==0)return false;
    for(new X=0;X<Laenge;X++)
    {
    if((Text[X]>'9'||Text[X]<'0'&& Text[X]!='-'&& Text[X]!='+')||(Text[X]=='-'&& X!=0)||(Text[X]=='+'&& X!=0))
    return false;
    }
    if(Laenge==1&&(Text[0]=='-'||Text[0]=='+'))return false;
    return true;
    }


    Alles in einem zusammengefasst inkl. der Funktion IsNumeric, die du in dein Script außerhalb einer Funktion/eines Public's einfügen müsstest.
    if(dialogid==DIALOG_ALTER)
    {
    new alter=strval(inputtext);
    if(response==0)return SendClientMessage(playerid,COLOR_WHITE,"Du hast den Vorgang abgebrochen.");
    if(response==1)
    {
    if(strlen(inputtext)<1||strlen(inputtext)>3||!IsNumeric(strval(inputtext)))return SendClientMessage(playerid,COLOR_WHITE,"Du hast keine gültige Zahl eingegeben!");
    if(alter < 10)return SendClientMessage(playerid,COLOR_WHITE,"Unter 10 Jahren kriegst du leider keinen Personalausweis.");
    if(alter > 100)return SendClientMessage(playerid,COLOR_WHITE,"Kein Mensch der über 100 Jahre ist, spielt noch am Computer.");
    if(!strval(inputtext))return SendClientMessage(playerid,COLOR_WHITE,"Du hast kein Alter angegeben - Vorgang abgebrochen.");
    else
    {
    Spieler[playerid][Alter]=strval(inputtext);
    ShowPlayerDialog(playerid,DIALOG_SEX,DIALOG_STYLE_LIST,"Geschlecht auswählen","Männlich\nWeiblich","Auswählen","Abbrechen");
    }
    }
    }


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.