error 018: initialization data exceeds declared size

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
  • Error: error 018: initialization data exceeds declared size


    Code #1:


    new Gangcars[21][3] ={
    // Name, Fahrzeug-ID, Preis
    {"Voodoo",412,30000}, {"Esperanto",419,30000}, {"Stallion",439,50000}, {"Glendale",466,30000},
    {"Hermes",474,30000}, {"Sabre",475,45000}, {"Buccaner",518,25000}, {"Feltzer",533,60000},
    {"Remington",534,35000}, {"Elegy",562,70000}, {"Savanna",567,30000}, {"Broadway",575,25000},
    {"Tornado",576,45000}, {"Huntley",579,50000}, {"Picador",600,20000}, {"Jester",559,55000},
    {"Perenniel",404,25000}, {"Sentinel",405,45000}, {"Bravura",401,20000}, {"Sanchez",468,50000}, {"PCJ-600",461,50000} };



    Codeschnipsel #2:




    if(frakid == 13 || frakid == 14|| frakid == 16 || frakid == 17 || frakid == 19) // GS, Ballas, Vagos, Scarfo, WCC
    {
    new Dialog[8192], listitems[21][256];
    for(new i; i < 21; i++)
    {
    format(listitems,256,"%s [%d]\n",Gangcars[0],Gangcars[2]);
    SendClientMessage(playerid,-1,listitems);
    }
    }





    Problem: Es liegt an Codeschnipsel 2 (Beim Auskommentieren dieses Codes bekam ich keine Errors). Ich habe bei for(new das Maximum auch auf 5 gesetzt und compilet, es geht trotzdem nicht.


    PS: Sorry, wenn ich einen PWN-Code mache, rutscht alles in 1 Zeile

  • 1. Du kannst nicht alle Daten von jedem Typ einfach so in ein Array klatschen. Dafür solltest du ein Enumerator verwenden, sprich schreib es so:


    enum a_Cars {
    a_Name[32],
    a_model,
    a_price
    };
    new Gangcars[21][a_Cars] ={
    // Name, Fahrzeug-ID, Preis
    {"Voodoo",412,30000}, {"Esperanto",419,30000}, {"Stallion",439,50000}, {"Glendale",466,30000},
    {"Hermes",474,30000}, {"Sabre",475,45000}, {"Buccaner",518,25000}, {"Feltzer",533,60000},
    {"Remington",534,35000}, {"Elegy",562,70000}, {"Savanna",567,30000}, {"Broadway",575,25000},
    {"Tornado",576,45000}, {"Huntley",579,50000}, {"Picador",600,20000}, {"Jester",559,55000},
    {"Perenniel",404,25000}, {"Sentinel",405,45000}, {"Bravura",401,20000}, {"Sanchez",468,50000}, {"PCJ-600",461,50000} };


    2. Ein Array mit einer Größe von 8192...bist du noch ganz dicht? :huh:


    Schreib das mal so, und ich denke du willst ShowPlayerDialog verwenden, als SendClientMessage :whistling:


    if(frakid == 13 || frakid == 14|| frakid == 16 || frakid == 17 || frakid == 19) // GS, Ballas, Vagos, Scarfo, WCC
    {
    new string[18 * sizeof Gangcars]; // Weil 9 Chars für den Namen, 5 chars für den Preis und 3 Chars für die [ ] und das Leerzeichen und 1char für '\n' -> 18
    for(new i; i < sizeof Gangcars; i++) format(string,sizeof string,"%s%s [%d]\n",string,Gangcars[i][a_Name],Gangcars[i][a_Price]);
    ShowPlayerDialog(playerid,99,DIALOG_STYLE_LIST,"{FF0000}Autohaus",string,"Kaufen","Abbrechen"); //Dialogid anpassen.
    }


    //Edit: String Größe erhöht, grad mal nachgerechnet.
    //Edit²: Ach verwende doch einfach ein mehr oder weniger "dynamisches" Array


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    2 Mal editiert, zuletzt von Kaliber ()