If Abfrage im Dialog String ...

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
  • Hey, ich hab ein etwas kompliziertes aber auch kleines Problem!


    Ich habe ein Dialogbassierendes /carkey system gemacht welches auch Problemlos funktioniert


    Allerdings hab ich das Problem wenn man auf einem Slot kein Fahrzeug hat das dort einfach ein Random Fahrzeug name steht!



    if(strcmp(cmd, "/carkey", true) == 0)
    {
    format(ALLSTRING, sizeof(ALLSTRING), "%s.\n%s.\n%s.\n%s.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 0][CarModel]-400],CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 1][CarModel]-400],CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 2][CarModel]-400],CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 3][CarModel]-400]);
    ShowPlayerDialog(playerid, DIALOG_CARKEYS, DIALOG_STYLE_LIST, "Carkey", ALLSTRING, "Auswählen", "Abbrechen");
    return 1;
    }



    Ich wollte deshalb mit Folgenden Code eine Abfrage machen ob der Spieler ein Fahrzeug besitzt Wenn ja steht dort der name wenn nein steht dort "Freier Slot"



    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=1])
    {


    Wie kann ich das machen ? Ich kann ja nicht einfach die IF Abfrage in den String machen



    Mfg

  • Bedingt geht es mit dem Ternary Operator:
    Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=0] == 1 ? CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 0][CarModel]-400] : "Freier Slot"


    Musst dann halt statt dem Namen immer die Abfrage machen.

  • Leider giebt dieser Code so Fehler! Kann aber auch sein das ich einen Fehler gemacht hab


    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19551) : error 075: input line too long (after substitutions)
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19552) : error 017: undefined symbol "Dt"
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19553) : error 017: undefined symbol "c_PlayerHaveCar"
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19553) : warning 215: expression has no effect
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19553) : error 001: expected token: ";", but found "]"
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19553) : error 029: invalid expression, assumed zero
    C:\Users\Admin\Desktop\DTC Kacke\CoL.pwn(19553) : fatal error 107: too many error messages on one line



    Ich Hab mal Folgenden Code Selbst erstellt!



    if(strcmp(cmd, "/carkey", true) == 0)
    {
    new string1[200],string2[500],string3[400],string4[200],rest[1500];
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=0])
    {
    format(string1, sizeof string1, "%s.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 0][CarModel]-400]);
    }
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=1])
    {
    format(string2, sizeof string2, "%s.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 1][CarModel]-400]);
    }
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=2])
    {
    format(string3, sizeof string3, "%s.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 2][CarModel]-400]);
    }
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]=3])
    {
    format(string4, sizeof string4, "%s.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 3][CarModel]-400]);
    }
    format(rest, sizeof rest, "%s\n%s\n%s\n%s", string1,string2,string3,string4);
    ShowPlayerDialog(playerid, DIALOG_CARKEYS, DIALOG_STYLE_LIST, "Carkey", rest, "Auswählen", "Abbrechen");
    return 1;
    }





    Allerdings Funktioniert dieser nicht ingame bekomme ich bei /carkey "Unknow Command"

  • Soo ich hab nochmal geschaut




    if(strcmp(cmd, "/carkey", true) == 0)
    {
    format(ALLSTRING, sizeof(ALLSTRING), "%s.\n%s.\n%s.\n%s.",Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid] == 1] ? CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid] = 0][CarModel]-400] : "Freier Slot");
    ShowPlayerDialog(playerid, DIALOG_CARKEYS, DIALOG_STYLE_LIST, "Carkey", ALLSTRING, "Auswählen", "Abbrechen");
    return 1;
    }


    Dieser Code Funktioniert! Erstmal nur 1 Key zum Test möchte mal wissen ob der Code verbesserungswürdig ist

  • Nutze zwei format's hintereinander, Beispiel:
    format(string, sizeof(string), "Hallo");
    format(string, sizeof(string), "%s Welt!", string);


    Oder, falls nur die Parameter am Ende zu viele sind, reicht ein Zeilenumbruch in eine neue Zeile im Code.