[FEHLER] error 008: must be a constant expression; assumed zero ... wie lösen ?

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
  • Hi,


    Ich mache grade ein Scheinsystem und bei der Fahrzeugabfrage hab ich diesen fehler


    (1 -- 12) : error 008: must be a constant expression; assumed zero
    //1 -- 12 Das sind die Zeilen vom ersten Code


    Hier ein bisschen code:


    Ganz oben
    new BootName = {
    430,
    446,
    452,
    453,
    454,
    472,
    473,
    484,
    493,
    595
    };


    Bei OnPlayerStateChange
    if(GetVehicleModel(vehicleid) == BootName)
    {
    if(dini_Int(Account,"Bootschein") == 0)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,RED,"Du hast keinen Bootschein und weisst nicht wie das Boot angeht !");
    }
    }


    Ich hoffe ihr koennt mir helfen.



    mfG
    RAiNBoMb

  • Jetzt hab ich aber diese Fehler :


    (343) : error 008: must be a constant expression; assumed zero
    //343 ist "{430},"
    (1733) : error 033: array must be indexed (variable "BootName")
    //1733 ist "if(GetVehicleModel(vehicleid) == BootName)"

  • Da wirst du einfach das Array per for durchlaufen müssen:


    if(GetVehicleModel(vehicleid) == BootName)


    Also:


    for(new i = 0;i<sizeof(BootName);i++)
    {
    if(GetPlayerVehicleModel(vehicleid) == BootName[i])
    {
    // hier code ausführen
    // kannst dann nen break; reinsetzen, da du die Schleife dann ja nicht mehr zu Ende laufen lassen musst.
    }
    }


    edit: Notfalls kannst du das auch mit einem enum lösen

    new enum modelenum
    {
    modelid
    };
    new BootName[][modelenum] = {
    {430},
    {446},
    {452},
    {453},
    {454},
    {472},
    {473},
    {484},
    {493},
    {595}
    };


    for(new i = 0;i<sizeof(BootName);i++)
    {
    if(GetPlayerVehicleModel(vehicleid) == BootName[i][modelid])
    {
    // hier code ausführen
    // kannst dann nen break; reinsetzen, da du die Schleife dann ja nicht mehr zu Ende laufen lassen musst.
    }
    }