Multidimensionaler Array

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 wie kann ich einen Dreifachenmultidimesionalen Array machen mit einem Dynamischen Wert:


    Ich habe einmal einen MAX Wert für die Maximale anzahl der Nachrichten also für jeden player : new MAX_NACHRICHTEN[MAX_PLAYERS]; der einzeld festgelegt wird bevor der Array kommt


    dann der Array: new NachArray[MAX_PLAYERS][MAX_NACHRCHTEN[MAX_PLAYERS][nachrichtenenum];
    und das nachrichtenenum ist sooo: enum nachrichtenenum
    {
    idm,
    Empfängerm[24],
    Absenderm[24],
    Inhaltm[128],
    listitemm
    }


    aber ich kriege dann diese errors: C:\Users\Jan\Desktop\op\gamemodes\neu.pwn(160) : error 032: array index out of bounds (variable "MAX_NACHRICHTEN")
    C:\Users\Jan\Desktop\op\gamemodes\neu.pwn(3443) : warning 203: symbol is never used: "NachrichtenArray"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    wie löse ich das problem aufgrund des variablen nachrichtenwert der bei jedem spieler anders ist.?


    MFG janpplayer

  • Erst musst du MAX_NACHRICHTEN als eine Konstante definieren
    z.B.:
    #define MAX_NACHRICHTEN 100
    oder
    new const MAX_NACHRICHTEN = 100;
    wie auch immer..


    Danach kannst du deinen enum schreiben:
    enum nachrichtenenum
    {
    idm, //Ich meine ID und Inhalt reicht auch komplett da du die informationen über GetPlayerName oder andersherum bekommen kannst aber musst du selber wissen
    Empfängerm[MAX_PLAYER_NAME], //Ich weiß nicht, warum du 2 separate Variablen brauchst, um den Empfänger und Absender zu deklarieren.
    Absenderm[MAX_PLAYER_NAME],
    Inhaltm[128],
    listitemm //Was? Ich meine, das kannst du auch komplett weglassen, da beim [MAX_NACHRICHTEN] index der listitem schon vordefiniert sein wird
    }


    Danach sollteste du einen array deklarieren, die wie folgt aussehen sollte:
    new NachArray[MAX_PLAYERS][MAX_NACHRICHTEN][nachrichtenenum];

    Einmal editiert, zuletzt von BigETI ()

  • Ja mein problem ist das ich die nachrichten aus der mysql datenbank hohlen und lade und dann die die abspeichern muss da ich über das listitem die id von der datenbank haben muss da das listitem ja nicht gleich die datenbank id also muss ich sie abspeichern und über das listitem die id hohlen und dann darüber den inhalt da jeder spieler max 50 sms mindestens haben muss also muss die variable für jeden spieler und nochmal die sms anzahl würde es denn funktionieren? oder geht es nicht


    also für jeden spieler und nochmal für jeden spieler 50 sms mindestens


    muss ich ihn nochmal machen oder gehts so nicht das sie sich überschneiden...

  • okay meine frage wenn ich es so machen würde:


    new NACHARRAY[MAX_PLAYERS][50][nachenum];


    würde es so funktionieren das jeder spieler 50 mal den array hat oder würde sich dieser dann überschneiden therotisch ja nicht weil ja davor das mit dem spieler gemacht wird ?

  • Anstatt zu fragen,hättest du es testen können. Du hast dabei doch nichts geändert, wie soll es denn besser werden.
    Ich kanns dir aber auch so sagen,wird nicht funktionieren, denn :


    NACHARRAY[MAX_PLAYERS][50][nachenum];


    nachenum =
    enum nachrichtenenum
    {
    idm, //Ich meine ID und Inhalt reicht auch komplett da du die informationen über GetPlayerName oder andersherum bekommen kannst aber musst du selber wissen
    Empfängerm[MAX_PLAYER_NAME], //Ich weiß nicht, warum du 2 separate Variablen brauchst, um den Empfänger und Absender zu deklarieren.
    Absenderm[MAX_PLAYER_NAME],
    Inhaltm[128],
    listitemm //Was? Ich meine, das kannst du auch komplett weglassen, da beim [MAX_NACHRICHTEN] index der listitem schon vordefiniert sein wird
    }


    Und jetzt nehmen wir zB den Eintrag Empfängerm , Absenderm , Inhaltm.


    Zitat

    NACHARRAY [ 1 ][ 2 ][ 3 - Empfängerm / Absenderm / Inhaltm ][ 4 ]


    Wie du siehst sind wir wieder bei 4 , es geht aber nur bis 3.