Int & Array Return

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,
    ich hatte letztens die selbe Problematik mit einem String
    "http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/188224-string-problem/#post1747569"


    Jetzt die selbe mit einem Int & Array. Wie returne ich richtig?


    Fehler: inconsistent return types (array & non-array)


    for(new i = 1; i < AllPlayersCounter; i++)
    {
    if(!strcmp(AllPlayer[i][apName], playername, false))
    {
    return AllPlayer[i][apID];
    }
    }
    return -1;


    PS: Warum kann man ein int und ein array nicht gleichzeitig in einer Funktion auf return stellen? Die Variable im array ist ja eig auch ein int?!

    mfg
    Ali ;)

  • Kann ich ohne Probleme kompileren. Der Fehler muss woanders liegen.
    Gibst du weiter oben noch etwas mit return in der selben Funktion (oder callback) zurück? Wenn ja, was?


    stock GetGangLeaderName(type, playerid, playername[])
    {
    switch(type)
    {
    case 1:
    {
    new tmp[24] = "0";
    for(new i = 1; i < AllPlayersCounter; i++)
    {
    if(AllPlayer[i][apID] == playerid)
    {
    format(tmp, sizeof(tmp), "%s", AllPlayer[i][apName]);
    return tmp;
    }
    }
    return tmp;
    }
    case 2:
    {
    for(new i = 1; i < AllPlayersCounter; i++)
    {
    if(!strcmp(AllPlayer[i][apName], playername, false))
    {
    return AllPlayer[i][apID];
    }
    }
    return -1;
    }
    }
    }

    mfg
    Ali ;)

  • tmp is ein array, apID ist ein Integer. Das geht nicht.
    Du musst aus case 1 und case 2 jeweils ein separates stock machen, nur so geht es.


    Der Variablen-Typ des Rückgabewerts muss über die gesamte Funktion immer der selbe sein. Das ist so vorgegeben und kann nicht umgangen werden.

  • tmp is ein array, apID ist ein Integer. Das geht nicht.
    Du musst aus case 1 und case 2 jeweils ein separates stock machen, nur so geht es.


    Der Variablen-Typ des Rückgabewerts muss über die gesamte Funktion immer der selbe sein. Das ist so vorgegeben und kann nicht umgangen werden.


    toll, dachte pawn macht das ^^


    danke dir, wusste nicht das der da so rumzickt. bei case kann ja immer nur ein fall zutreffen.. darum dachte ich halt das das so geht..


    Danke für deine Hilfe.

    mfg
    Ali ;)