Hide Name Tag

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 möchte für einen spieler der z.B. /hidename eingibt, dass der Name über dem Spieler ausgeblendet wird, sodass man ihn nicht mehr identifizieren kann ich habe es schon einmal mit ShowPlayerNameTagForPlayer ausprobiert allerdings hat das nicht funktioniert kann mir einer helfen?

  • Poste mal deinen Code den Du bisher auf die Beine gestellt hast, dann kann ich dir warsch. sagen wo das Problem liegt.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Ahh das steht ja auch das du die Namen der Spieler nicht mehr sieht ^^

    dcmd_greenpeace(playerid,params[]) {
    #pragma unused params
    SendClientMessage(playerid, Grün, "Rettet die Wale,esst mehr Bieber!");
    return 1;
    }


    Mapplanung:
    Etwas einzigartiges was noch kein anderer veröffentlicht hat.
    70% fertig.

  • ja das habe ich beachtet und aus getauscht und jetzt habe ich gerade mal unter OnPlayerStreamIn eingebaut guckt es euch mal bitte an:


    new Name[MAX_PLAYERS];


    if (strcmp("/hidename", cmdtext, true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8 || PlayerInfo[playerid][pAdmin] > 2)
    {
    if(Name[playerid] == 0)
    {
    GameTextForPlayer(playerid, "~W~Nametags ~R~off", 5000, 5);
    Name[playerid] = 1;
    return 1;
    }
    else
    {
    GameTextForPlayer(playerid, "~W~Nametags ~R~on", 5000, 5);
    Name[playerid] = 0;
    return 1;
    }
    }
    }


    public OnPlayerStreamIn(playerid, forplayerid)
    {
    if(Name[playerid] == 1)
    {
    ShowPlayerNameTagForPlayer(forplayerid, playerid, false);
    }
    }

  • Du musst natürlich auch auf die Player achten die den jeweiligen User schon reingestreamt haben.


    Deswegen einmal durchloopen, checken ob der Player schon gestreamed wurde und falls ja direkt den Namen für selbige verdecken.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • jo habe ich auch ausprobiert habe es sogar schon umgescriptet damit ich sehe wann ich streame und wann nicht


    public OnPlayerStreamIn(playerid, forplayerid)
    {
    new playername1[MAX_PLAYER_NAME];
    new playername3[MAX_PLAYER_NAME];
    new string3[50];
    GetPlayerName(playerid, playername3, sizeof(playername3));
    GetPlayerName(forplayerid, playername1, sizeof(playername1));
    if(Name[playerid] == 1)
    {
    ShowPlayerNameTagForPlayer(forplayerid, playerid, false);
    format(string3, sizeof(string3), "%s = playerid || %s = forplayerid", playername3, playername1);
    SendAdminMessage(COLOR_YELLOW, string3);
    }
    }


    //edit jetzt habe ich heraus gefunden:


    wenn ich die abfrage wie folgt unter onplayerupdate reinstelle:
    Public OnPlayerUpdate(playerid)
    {
    if(Name[playerid] == 1)
    {
    for(new i ; i < MAX_PLAYERS ; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(i != playerid)
    {
    ShowPlayerNameTagForPlayer(i,playerid,false);
    }
    }
    }
    }
    }


    dann blinkt der name über dem spieler also muss wohl irgendwo irgendwas den NameTag zurück setzen was könnte das sein?

    2 Mal editiert, zuletzt von Legö ()

  • Nein, schau mal: Wenn irgend ein Player den Spieler der seinen Namen verdecken möchte schon reingestreamt hat (bspw. neben ihm steht) dann werden all diese Funktionen gar nicht aufgerufen.


    Deswegen, im Block deines Commands


    if (strcmp("/hidename", cmdtext, true) == 0)
    {
    //...
    }


    schleifst du einmal durch die Player durch, checkst ob sie den Spieler "playerid" gerade schon im Stream haben und wenn ja verdeckst du den Namen für eben diese Player. Umgekehrt natürlich genauso - wenn sein Name wieder angezeigt werden soll.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • oO warum so umständlich?
    Einfach nur nen Command:

    if(strcmp(cmdtext,"/hidename",true)==0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(i, playerid, 0);
    }
    return 1;
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Ok habe es heraus gefunden wo das problem lag danke an eure wirklich sehr schnelle mithilfe!


    Das Problem lag darin das der NamTimer(); aktiviert war der dauernt alles zurück gesetzt hat auch wenn er sonst keine funktion auffweisst


    er stand dort einfach nur so da ohne new; oder forward kp was das sollte xD