Komischer Return Fehler

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 hab eine funktion geschrieben, in der ich mir bei inerer bestimmten eigenschaft einen wert in diesem fall einen Text zurückgeben lass:



    WhatTypeNameOfCar(vehicleid,playerid)
    {


    if(vehicleid == CarID[playerid][1][1] || vehicleid == CarID[playerid][2][1] || vehicleid == CarID[playerid][3][1])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Privat");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][2])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Mieten");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][3] || vehicleid == CarID[playerid][2][3] || vehicleid == CarID[playerid][3][3])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Arbeiten");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][4] || vehicleid == CarID[playerid][2][4] || vehicleid == CarID[playerid][3][4])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Flugzeug");
    return ausgabetext;
    }
    return 1;
    }


    nun meckert er folgendes:



    C:\Users\Stefan\Desktop\E&S Roleplay Server\E&S Roleplay\gamemodes\beta.pwn(771) : error 079: inconsistent return types (array & non-array)


    die Zeile 771 ist die Zeile in der return 1; steht


    weiß jemand eine lösung???


    mfg The_OTTO

  • WhatTypeNameOfCar(vehicleid,playerid)
    {


    if(vehicleid == CarID[playerid][1][1] || vehicleid == CarID[playerid][2][1] || vehicleid == CarID[playerid][3][1])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Privat");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][2])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Mieten");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][3] || vehicleid == CarID[playerid][2][3] || vehicleid == CarID[playerid][3][3])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Arbeiten");
    return ausgabetext;
    }
    if(vehicleid == CarID[playerid][1][4] || vehicleid == CarID[playerid][2][4] || vehicleid == CarID[playerid][3][4])
    {
    format(ausgabetext, sizeof(ausgabetext), "%s", "Flugzeug");
    return ausgabetext;
    }
    ausgabetext = "- Fehler -";
    return ausgabetext;
    //return 1; <- müsste der Fehler sein
    }
    Entweder non-Arrays oder Arrays,beides ist nicht möglich als return Wert.

  • ok danke das passt jetzt allerdings habe ich jetzt damit das nächste Problem....


    das ganze soll für die Tankanzeige dienen.



    public Tank(playerid)
    {
    GetPlayerName(playerid, name, sizeof(name));
    format(save, sizeof(save), "/Spieler/%s.ini", name);
    new vehicleid = GetPlayerVehicleID(playerid);
    new TypeNumber = WhatTypeNumberOfCar(vehicleid,playerid);
    new TypeName[10] = WhatTypeNameOfCar(vehicleid,playerid);
    new InWhatCar = InWhatCarIsIt(vehicleid, playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(vehicleid == CarID[playerid][InWhatCar][TypeNumber])
    {
    new speed = GetPlayerSpeed(playerid, true);
    if(speed > 0 && speed < 70)
    {
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Verbrauch_Klein_%d", TypeName, InWhatCar);
    new verbrauch = dini_Int(save, ausgabetext);
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Tank_%d", TypeName, InWhatCar);
    oldautotankinhalt = dini_Int(save,ausgabetext);
    if(oldautotankinhalt == 0)
    {
    TogglePlayerControllable(playerid, 0);
    }
    else
    {
    newautotankinhalt = oldautotankinhalt-verbrauch;
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Tank_%d", TypeName, InWhatCar);
    dini_IntSet(save, ausgabetext, newautotankinhalt);
    new anzeige = newautotankinhalt /10;
    format(ausgabetext, sizeof(ausgabetext), "%d Liter", anzeige);
    TextDrawSetString(TankText[playerid], ausgabetext);
    //SendClientMessage(i,red, ausgabetext);
    }
    }
    if(speed > 70 || speed == 70)
    {
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Verbrauch_Gross_%d", TypeName, InWhatCar);
    new verbrauch = dini_Int(save, ausgabetext);
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Tank_%d", TypeName, InWhatCar);
    oldautotankinhalt = dini_Int(save,ausgabetext);
    if(oldautotankinhalt == 0)
    {
    TogglePlayerControllable(playerid, 0);
    }
    else
    {
    newautotankinhalt = oldautotankinhalt-verbrauch;
    format(ausgabetext, sizeof(ausgabetext), "Auto_%s_Tank_%d", TypeName, InWhatCar);
    dini_IntSet(save, ausgabetext, newautotankinhalt);
    new anzeige = newautotankinhalt /10;
    format(ausgabetext, sizeof(ausgabetext), "%d Liter", anzeige);
    TextDrawSetString(TankText[playerid], ausgabetext);
    //SendClientMessage(i,red, ausgabetext);
    }
    }
    }
    else
    {
    TextDrawSetString(TankText[playerid], ".");
    }
    }
    }


    hier meckert er jetzt vollgendens:



    C:\Users\Stefan\Desktop\E&S Roleplay Server\E&S Roleplay\gamemodes\beta.pwn(1078) : error 008: must be a constant expression; assumed zero


    die Zeise 1078 ist die Zeile in der folgendes steht:


    new TypeName[10] = WhatTypeNameOfCar(vehicleid,playerid);


    was soll das bedeuten und was kann ich dagegen tun??


    mfg The_OTTO

  • also am besten is es wenn du bei (wahrscheinlich hast du ja ein enum von carid) carid noch typename[10-128] (<- eine zwischen den zahlen) ins enum rein machst.
    das wäre eig das beste da du dann das mit einer variable abkürzen kannst z.b. tname[zahl] = CarID...[TypeName];
    der error bedeutet glaube ich das das kein string ist sondern ein public o.a.

  • Zu dem Beitrag von [aKoE]nanjo :


    also würd ich die CarID als Enum schreiben wär das grad wieder für die katz weil ich wieder n haufen cod hätte.....


    das was bei CarID in der Public Tank drinsteht ist ja nur der Wert was aus der funktion rauskommt da stehen eigentlich Zahlen drin
    z.b. CarID[playerid][1][1] bedeutet einfach, dass das auto dem player mit der entsprechenden playerid gehört sein erstes auto der Kategorie 1 ist (dies sind Private autos)


    Das CarID[playerid][x][y] ist ein 3 Dimensional-Array (kann sein das ich das ein bischen falsch geschrieben habe)



    naja aber eigentlich ist es eine funktion und keine Public....


    zu dem Beitrag von Goldkiller


    danke so müsste es funktionieren


    mfg The_OTTO