Multidimensionale Arrays in 'PlayerTextDrawSetPreviewModel'

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 Community,


    ich habe folgenden Array:

    CSS: Array
    new VehicleAutos[][][] = {
    {400, 4, "Offroad", 10000},
    {401, 2, "Standart", 10000},
    {402, 2, "Sport", 10000},
    {404, 4, "Kombi", 10000},
    {405, 4, "Standart", 10000}
    };


    Und diese Funktion:

    CSS
    for(new i; i<40; i++)
    {
        PlayerTextDrawSetPreviewModel(playerid, Textdraw_VID[i][playerid], VehicleAutos[i][0]); //<-- Error Zeile
    }


    Dabei bekomme ich folgenden Fehler: error 035: argument type mismatch (argument 3)
    Jetzt muss ich passen, hab auch versucht das ganze 'VehicleAutos[i][0] ' in einen String zu packen und das dann in 'PlayerTextDrawSetPreviewModel ' zu schreiben, funktioniert allerdings auch nicht.


    Jemand eine Idee?
    Danke im voraus ^^

  • Ich hab mir jetzt einen kleinen "Workaround" gemacht, wahrscheinlich nicht die Beste Lösung, aber es funktioniert :whistling:


    CSS
    new VID, IDstring[4];
    for(new i; i<40; i++)
    {
    	format(IDstring, sizeof(IDstring), "%d", VehicleAutos[i][0]);
    	VID = strval(IDstring);
    
    
    	PlayerTextDrawSetPreviewModel(playerid, Textdraw_VID[i][playerid], VID);
    }


    Sprich: Ich habe den Array, den ich später in 'PlayerTextDrawSetPreviewModel ' haben will zuerst in einen String gespeichert(IDstring ) und diesen dann mit 'strval() ' in einen Integer-Wert konvertiert (VID ) und diesen gebe ich dann aus :)
    Trotzdem Danke :)

  • Wie du selbst sagt, nur ein Workaround und keine gute Lösung. Das ist eines der Beispiele, wo ein enum es deutlich erleichtert.



    Dann kannst du mit einer Schleife durch alle Einträge / Zeilen gehen und gezielt auf die einzelnen Attribute zugreifen.
    So zum Beispiel VehicleAutos[2][VA_sKlasse] wäre "Sport".


    Bei deinem oben genanntem Beispiel wäre es dann:

    Code
    PlayerTextDrawSetPreviewModel(playerid, Textdraw_VID[i][playerid], VehicleAutos[i][VA_iModelID]);


    Finde gerade kein gutes deutsches Tutorial dazu, eventuell kommst du aber mit einem englischem klar.
    http://forum.sa-mp.com/showthread.php?t=318307
    http://wiki.sa-mp.com/wiki/Keywords:Initialisers#enum


    PS: Es heisst Standard