Mehrere Float Arrays gleichzeitig definieren?

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


    ich habe ein kleines Problem...
    Ich habe mal wieder eine laaaaange Pause von PAWN gemacht, es ist zwar eine einfache Scriptsprache, aber wenn man in 1000 anderen Sprachen scriptet dann vergisst man manchmal einiges bzw. macht es so wie in anderen Sprachen.. (Wieso kann nicht überall alles gleich sein?)
    Naja zu meinem Problem:
    Ich möchte mehrere Variablen erstellen, die den gleichen Namen haben, aber alle eine andere Funktion haben.
    So sieht mein Code bis jetzt aus:

    new Float:GGMap[1][][] = {
    {-1285.7355,2499.9009,87.0075,59.0473},
    {-1321.6528,2504.4688,89.5703,191.2752},
    {-1336.7495,2531.4897,87.0899,244.8323},
    {-1311.9321,2546.4199,87.7422,186.8652},
    {-1293.1025,2547.6797,86.9489,175.2717},
    {-1303.1263,2526.1602,87.5380,180.2851}
    };
    new Float:GGMap[2][][] = {
    {-467.6490,-470.9081,25.5234,135.5014}, //SPAWNID (bs: 1)
    {-484.4607,-559.2358,25.5234,54.9974}, //SPAWNID (bs: 2)
    {-601.8755,-559.7782,25.5234,270.5494}, //SPAWNID (bs: 3)
    {-616.9458,-496.6703,25.5234,276.8395}, //SPAWNID (bs: 4)
    {-541.5930,-504.8772,25.5234,356.8853} //SPAWNID (bs: 5)
    };



    Aber irgendwas funktioniert da nicht so wie ich möchte...
    Also zum Beispiel möchte ich jetzt in diesem Fall haben:
    GGMap[1][3][0] wäre dann -1336.7495.
    GGMap[2][3][0] wäre dann -601.8755.
    Allerdings hab ich das Problem das die Variable bereits definiert wurde... (Variable wurde bereits definiert: "GGMap")
    und ich wüsste jetzt nicht wie ich das mache das alles in einer Variable ist.
    Wie funktioniert das jetzt genau in Pawn?
    Danke schonmal für die Hilfe...



    Mfg pierre65


  • wenn du schon ein dreidimensionales array benutzt dann mach es doch wenigstens richtig



    new Float:GGMap[2][6][4] = {
    {
    {-1285.7355,2499.9009,87.0075,59.0473},
    {-1321.6528,2504.4688,89.5703,191.2752},
    {-1336.7495,2531.4897,87.0899,244.8323},
    {-1311.9321,2546.4199,87.7422,186.8652},
    {-1293.1025,2547.6797,86.9489,175.2717},
    {-1303.1263,2526.1602,87.5380,180.2851}
    },
    {
    {-467.6490,-470.9081,25.5234,135.5014}, //SPAWNID (bs: 1)
    {-484.4607,-559.2358,25.5234,54.9974}, //SPAWNID (bs: 2)
    {-601.8755,-559.7782,25.5234,270.5494}, //SPAWNID (bs: 3)
    {-616.9458,-496.6703,25.5234,276.8395}, //SPAWNID (bs: 4)
    {-541.5930,-504.8772,25.5234,356.8853},
    {-1303.1263,2526.1602,87.5380,180.2851} //SPAWNID (bs: 5)
    }
    };


    jedoch brauchst du constante werte da es sonst mit der for schleife nicht klappt als auch mit dem starten des gamemodes
    *hust* Runtime error 22 *hust*

  • Ah Okay...
    Ich habs ja noch nie so benutzt, von daher weiß ich nicht so genau wie das benutzt werden soll, das wollte ich ebend wissen.



    new Float:GGMap[4][][] = {
    {
    {-1285.7355,2499.9009,87.0075,59.0473},
    {-1321.6528,2504.4688,89.5703,191.2752},
    {-1336.7495,2531.4897,87.0899,244.8323},
    {-1311.9321,2546.4199,87.7422,186.8652},
    {-1293.1025,2547.6797,86.9489,175.2717},
    {-1303.1263,2526.1602,87.5380,180.2851}
    },
    {
    {-467.6490,-470.9081,25.5234,135.5014},
    {-484.4607,-559.2358,25.5234,54.9974},
    {-601.8755,-559.7782,25.5234,270.5494},
    {-616.9458,-496.6703,25.5234,276.8395},
    {-541.5930,-504.8772,25.5234,356.8853}
    },
    {
    {-2366.8264,1539.1639,2.1172,356.8853},
    {-2407.8457,1535.2131,4.5413,270.5494},
    {-2428.2332,1536.6305,2.1172,54.9974},
    {-2435.7393,1548.3536,8.3984,244.8323}
    },
    {
    {2163.8582,-2264.8086,17.9311,44.4137},
    {2145.2810,-2267.8167,14.3281,99.5609},
    {2132.7834,-2282.5894,20.6719,245.1419},
    {2141.2490,-2249.0737,20.6641,277.5126},
    {2169.8748,-2246.2742,20.1587,50.0537}
    }
    };


    So würde das ganze funktionieren richtig?

  • GW zum kompilen dann musst es ja nur noch benutzen :D
    dann kommen wir wieder auf meinen oberen post zu sprechen .


    //edit ahja um die größe für die zweite dimension zu bekommen in einen loop


    benutzt man sizeof(GGMap[])


    oder einfach den wert der anzahl der einträge der zweiten dimension eintragen für die größe
    :D

  • Naja ok jetzt kommt der Fehler:
    Zeile (81) : Multi-Dimensionaler Array muss zuerst initialisiert werden
    beim kompilieren...

    new Float:GGMap[4][6][4] = {
    {
    {-1285.7355,2499.9009,87.0075,59.0473},
    {-1321.6528,2504.4688,89.5703,191.2752},
    {-1336.7495,2531.4897,87.0899,244.8323},
    {-1311.9321,2546.4199,87.7422,186.8652},
    {-1293.1025,2547.6797,86.9489,175.2717},
    {-1303.1263,2526.1602,87.5380,180.2851}
    },
    {
    {-467.6490,-470.9081,25.5234,135.5014},
    {-484.4607,-559.2358,25.5234,54.9974},
    {-601.8755,-559.7782,25.5234,270.5494},
    {-616.9458,-496.6703,25.5234,276.8395},
    {-541.5930,-504.8772,25.5234,356.8853},
    {-541.5930,-504.8772,25.5234,356.8853}
    },
    {
    {-2366.8264,1539.1639,2.1172,356.8853},
    {-2407.8457,1535.2131,4.5413,270.5494},
    {-2428.2332,1536.6305,2.1172,54.9974},
    {-2435.7393,1548.3536,8.3984,244.8323},
    {-2435.7393,1548.3536,8.3984,244.8323},
    {-2435.7393,1548.3536,8.3984,244.8323}
    },
    {
    {2163.8582,-2264.8086,17.9311,44.4137},
    {2145.2810,-2267.8167,14.3281,99.5609},
    {2132.7834,-2282.5894,20.6719,245.1419},
    {2141.2490,-2249.0737,20.6641,277.5126},
    {2169.8748,-2246.2742,20.1587,50.0537}
    } // Zeile 81
    };

    und die Anzahl der ersten Map (in dem Fall die ersten 6 Einträge) kann man doch eigentlich mit
    size = sizeof(GGMap[0]);
    auslesen oder? Irgendwas funktioniert da nicht so wirklich... wenn ich nur [] benutze funktioniert das,
    aber ich vermute mal er zählt da alle Einträge zusammen, ich teste ja hier gerade garnichts was ich schreibe :wacko:


    // Edit: also den error hab ich weg... brauche jetzt nur noch die auslesfunktion.. hm
    // Edit 2: ah ok es geht mit GGMap[] da die Eintragzahl ja immer bei allen gleich ist.. war gerade etwas verwirrt -_- naja ok danke für die hilfe :P


  • du testes nix ahja xD
    naja du willst das ganze doch bestimmt ihrgend was erstellen. Bestimmt mit den ganzen einträgen pro block dafür benutzt du
    for(new i, j= sizeof(GGMap[]); i < j; i++)


    GGMap[] gibt die anzahl an einträge der zweiten dimension zurück und GGMap die der ersten.
    Wie schon oben genannt ist es nicht möglich unterschiedlich viele einträge in der 2d zu verwenden.


    die einfachste verwendung
    printf("%f",GGMap[0][0][0]);
    so verstanden "nix gehen mit unterschiedliche einträge in zweite dimension"
    in der dritten gehts wieder aber nicht in der zweiten.