Dialog 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 ihr lieben,


    Ich möchte ein kleines Anmelde system haben für meine fahrzeuge


    ich brauche keine abfragen oder sonstiges. Mein problem liegt nur darin:



    Wenn man das Fahrzeug anmeldet soll eine Dialog liste kommen wo die Fahrzeuge aufgelistet werden die dem Spieler gehören, wie ich das mache weiß ich auch nur jetzt kommt das problem.


    Um auf das angeklickte Fahrzeug über denn dialog zugreifen zu können muss ich ja dies nutzen:



    if(listitem == 0)
    if(listitem == 1)


    und wie sage ich jetzt das wenn ich auf listitem 0 bin welches Fahrzeug das ist ?


    Hoffe ihr könnt mir folgen :)


    wenn nicht fragt mich bitte und ich versuch es genauer zu erklären

  • Mache erst mal den Code um die Fahrzeuge dem Spieler im Dialog anzuzeigen. Ohne den Code wird es nämlich schwer dir zu zeigen, wie du bei OnDialogResponse vorgehen musst, da der Code dafür benötigt wird (gleiche Struktur).





  • So habe ich mir das gedacht nur die sage ich jetzt das wenn ich auf nrg klicke und denn auf weiter





    ocmd:anmelden(playerid,params[])
    {
    new string[1000],str[20];
    for(new i=0;i<MAX_VEHICLES;i++)
    {
    if(sInfo[playerid][id]!=aInfo[Fahrzeugid[i]][besitzer])continue;
    {
    if(aInfo[i][anmelden] ==1)
    {
    format(str, sizeof(str),"{00FF00}JA{FFFFFF}");
    }
    if(aInfo[i][anmelden] ==0)
    {
    format(str, sizeof(str),"{FF0000}NEIN{FFFFFF}");
    }
    format(string, sizeof(string),"%s [%i] Angemeldet: [%s]\n%s",FahrzeugNamen[GetVehicleModel(i)-400],i,str,string);
    }
    }
    ShowPlayerDialog(playerid,DIALOG_anmelden,DIALOG_STYLE_LIST,"{008BFF}Anmelden",string,"Anmelden","Beenden");
    return 1;
    }

  • Im Dialog kannst du es dann so machen:
    new i, count = -1;
    for(i=0;i<MAX_VEHICLES;i++)
    {
    if(sInfo[playerid][id] != aInfo[Fahrzeugid[i]][besitzer]) continue;
    count++;
    if(count == listitem)
    {
    break;
    }
    }
    printf("Es wurde der %s angeklickt.", FahrzeugNamen[GetVehicleModel(i)-400]);

  • Wie kann ich bei einem dialog input abfragen ob er 2 Buchstagen und 2 Zahlen eingibt ?


    also es sollen erst nur buchstaben eingegeben werden und danach nur zahlen


    keine Sonderzeichen oder sonst was


    geht das so einfach oder ist das aufwendiger ?

    Einmal editiert, zuletzt von Gurkie94 ()

  • if(strlen(inputtext) != 4) return SendClientMessage(playerid, 0xFF0000FF, "Error: Es müssen 4 Zeichen sein.");
    if(!IsChar(inputtext[0] || !IsChar(inputtext[1]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Die ersten 2 Zeichen müssen Buchstaben sein.");
    if(!IsNum(inputtext[2] || !IsNum(inputtext[3]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Die letzten 2 Zeichen müssen Zahlen sein.");


    Zusammen mit diesen Stocks:
    stock IsChar(c)
    {
    switch(c)
    {
    case 'a'..'z', 'A'..'Z': return 1;
    }
    return 0;
    }


    stock IsNum(c)
    {
    switch(c)
    {
    case '0'..'9': return 1;
    }
    return 0;
    }

  • (11838) : error 001: expected token: ",", but found "return"


    (11839) : error 001: expected token: ",", but found "return"


    if(!IsChar(inputtext[0] || !IsChar(inputtext[1]) return ShowPlayerDialog(playerid,DIALOG_Kennzeichen,DIALOG_STYLE_INPUT,"{004BFF}Kennzeichen","{FFFFFF}Die ersten {FF0000}zwei {FFFFFF}Zeichen müssen Buchstaben sein\nzb.(PS203)","Weiter","Beenden");
    if(!IsNum(inputtext[2] || !IsNum(inputtext[3]|| !IsNum(inputtext[4]) return ShowPlayerDialog(playerid,DIALOG_Kennzeichen,DIALOG_STYLE_INPUT,"{004BFF}Kennzeichen","{FFFFFF}Die letzten {FF0000}drei {FFFFFF}Zeichen müssen Zahlen sein\nzb.(PS203)","Weiter","Beenden");


    Das sind diese beiden Zeilen aber ich finde da keinen Fehler

    Einmal editiert, zuletzt von Gurkie94 ()

  • Sorry, das war ein Copy Paste Fehler von mir, da fehlt immer die Klammer zu am Ende.


    Versuche es so:
    if(!IsChar(inputtext[0]) || !IsChar(inputtext[1])) return ShowPlayerDialog(playerid,DIALOG_Kennzeichen,DIALOG_STYLE_INPUT,"{004BFF}Kennzeichen","{FFFFFF}Die ersten {FF0000}zwei {FFFFFF}Zeichen müssen Buchstaben sein\nzb.(PS203)","Weiter","Beenden");
    if(!IsNum(inputtext[2]) || !IsNum(inputtext[3]) || !IsNum(inputtext[4])) return ShowPlayerDialog(playerid,DIALOG_Kennzeichen,DIALOG_STYLE_INPUT,"{004BFF}Kennzeichen","{FFFFFF}Die letzten {FF0000}drei {FFFFFF}Zeichen müssen Zahlen sein\nzb.(PS203)","Weiter","Beenden");

  • Wie kann ich die werte als dezimal speichern ?


    wenn ich das ausrechne setzt er mir steuer auf 1 obwohl es bei einer geschwin von 177 /100 auf 1,77 sein müsste


    wie kann ich das anders machen ?

    new steuer=geschwin/100;


    new steuer1=steuer*60;

    Einmal editiert, zuletzt von Gurkie94 ()

  • Was ist daran Falsch?


    Ich will bei meinem /adminlist befehl anzeigen lassen wenn kein admin on ist aber er zeigt jetzt an es ist kein admin on obwohl welche on sind


    if(isPlayerAdmin()){format(string, sizeof(string),"{FF0000}Es ist kein Admin online!");}



    stock isPlayerAdmin()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel]==0)return 1;
    }
    }
    return 0;
    }

    Einmal editiert, zuletzt von Gurkie94 ()

  • Weil er direkt beim ersten die Schleife aufgrund Return 1; abbricht.



    So müsste es gehen:
    if(!isPlayerAdmin()){format(string, sizeof(string),"{FF0000}Es ist kein Admin online!");}

    stock isPlayerAdmin()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 0) return 1;
    }
    }
    }

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • stock isPlayerAdmin()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 1) return 1;
    }
    }
    return 0;
    }


    if(!isPlayerAdmin()) format(string, sizeof(string),"{FF0000}Es ist kein Admin online!");


    Die Bezeichnung der Funktion ist allerdings nicht ganz sprechend. Besser wäre: isAnyPlayerAdmin.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen