get Funktion gibt nicht den richtigen wert über

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 würde gerne mit getFraktion(id) den Namen der Fraktion angezeigt bekommen. Allerdings zeigt er mir nichts davon Richtig an. Hat einer eine Idee woran es liegt ?


    Code:


    Das komische für mich ist, sobald ich die Fraktion manuell Abfrage ohne get Funktion also wie folgt


    Code
    print(FrakInfo[id][frak_name])

    zeigt er den richtigen Wert an wenn ich die ID entsprechend ersetze

  • Du kannst direkt:


    cache_get_value_name(i, "fraktion",FrakInfo[id][frak_name],128 );

    Nutzen. Davon abgesehen ist das Laden ja offensichtlich nicht dein Problem, da es ja funktioniert.


    Wie rufst du denn die Funktion auf?

    Vermutlich einfach getFraktion(playerid), allerdings musst du ja in der Funktion erstmal die FraktionsID vom Spieler ermitteln und da ist dein Denkfehler ;)

    #Handy

    ast2ufdyxkb1.png


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

  • Tatsächlich hatte ich einen kleinen Denkfehler. Nun mehr läuft dass ganze wie folgt ab,


    Code
    new string[128];
    format(string, sizeof(string), "Du hast %s zum Leader der Fraktion %s gemacht.", getPlayerName(playerid), getFraktion(playerid));
    SendClientMessage(playerid, COLOR_RED, string);


    Folgendes Ergebnis erhalte ich hiermit


    Code
     Du hast testb zum Leader der Fraktion Stestb gemacht.


    Üblicherweise sollte dort wo Stestb steht die Stadtverwaltung als Wert hinterlegt sein. Warum kommt mein Benutzername auf einmal dazwischen ?


    Meine Funktion zu getPlayerFraktion(playerid) sieht wie folgt aus:


    Code
    getFraktion(playerid)
    {
        if(PlayerInfo[playerid][pLoggedIn])
        {
             new FraktionID = PlayerInfo[playerid][pFraktion];
             return FrakInfo[FraktionID][frak_name];
        }
        return 1;
    }
  • Mach das if und das return 1 weg :)

    Bringt leider auch nicht den gewünschten Erfolg. Hab ich eventuell einen Fehler im Enum selbst ?


    Ich muss in jedenfall mit


    Code
    strmid(FrakInfo[id][frak_name], tmp_name, 0, sizeof(tmp_name), sizeof(tmp_name));

    arbeiten. Andernfalls ist der Wert dauerhaft null und überhaupt nicht mehr aufrufbar. Das ganze geht ja an sich mit unnötigen umwegen aber warum nicht mit einer funktion ?

  • BreadScript da ich mein Fraktionssystem auch in einem Enum habe, nutze ich folgende Funktion um meinen Fraktionsnamen auslesen zu lassen:


    [pFraktion] ist in meinem "SpielerEnum"


    Code
    CMD:checkme(playerid, params[])
    {
        new string[128];
        SCME(playerid, -1,"Du bist in der Fraktion: %s",FrakInfo[PlayerInfo[playerid][pFraktion]][f_name]);
        return 1;
    }

    Weiß nicht ob du die Funktion SCME drin hast ansonsten wäre es bei dir ungefähr wie folgt:


    Code
    CMD:checkme(playerid, params[])
    {
        new string[128];
        format(string,sizeof(string),"Du bist in der Fraktion: %s",FrakInfo[PlayerInfo[playerid][pFraktion]][f_name]);
        SCME(playerid, -1,string);
        return 1;
    }
  • In diesem Fall habe ich auch überhaupt kein Problem damit, allerdings muss es ja eine Möglichkeit geben dass ganze zu vereinfachen.

  • Hey, versuch mal

    bei deiner methode, ein stock davor oder ein foward+public. Ich glaube, das hatte ich bei mir auch nur so, ging bei mir auch nicht. Aber ich bin mir nicht mehr zu 100% sicher deswegen teste das mal :)


    Einmal editiert, zuletzt von Mogly1 ()