GetPlayerName | Umgeschrieben

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 liebe Community,


    ich habe einen Fehler in meinem umgeschriebenden GetPlayerName (als Include)
    ( Ich weiß das das ganze so nicht funktionieren kann, allerdings habe ich auch gerade keine Ahnung, wie es funktionieren soll )


    stock NC_GetPlayeName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }
    #define GetPlayerName NC_GetPlayerName


    Dies ist der Code. Kann mir jemand diesen so umschreiben, das er funktionsfähig ist?

    Mit freundlichen Grüßen

  • #define PlayerName(%0) pName[%0]


    static pName[MAX_PLAYERS][MAX_PLAYER_NAME];


    //Und unter OnPlayerConnect
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);


    Nutzen tust du das dann z.B. so:


    printf("Dein Name ist: %s",PlayerName(playerid)); //Kannst PlayerName beliebig oben im Makro umbennnen


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • Warum machst du das so umständlich?


    Hol dir doch einfach in OnPlayerConnect einmal den SpielerNamen
    Pack den einen Array oder in eine PVar und setz dir dein "SpielerName" via Makro/Define.


    Immer über einen stock zu gehen ist verschwenderisch.


    Aber zu deinem "Problem".
    Schau dir mal an wie du deinen "Stock" genannt hast.
    Ich würde dir aber raten, in diesem Fall die native zu hooken, sonst bekommst du fehler, weil den Compiler durcheinander kommt.


    Schau dir dazu das an.
    [ SCRIPTING ] Includes richtig erstellen | Hooking ganz einfach

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • nein kaliber das returnen von strings bewirkt keinen memoryleak diese diskussion bin ich mal mit blackace nachgegangen und wir kamen zu dem ergebnis das diese nicht stimmt. Da nach der beendung eine funktion der ganze speicher wieder freigegeben wird. Sonst würden deine ganzen local definierten variabeln einen memoryleak verursachen, was sie jedoch nicht tun. Es ist ja auch nix anders als bei integern oder floats nur das ein längerer binärcode bei arrays zurück gegeben wird.

  • #Edit, brauche es um den Clantag rausfiltern zu lassen.



    << Bitte um Hilfe >>



    Hier sollte so funktionieren:




    stock NC_GetPlayerName(playerid) {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
    }
    #if defined _ALS_GetPlayerName
    #undef GetPlayerName
    #else
    #define _ALS_GetPlayerName
    #endif
    #define GetPlayerName NC_GetPlayerName