zerruv

Custom Player Nametags

Dec 26th, 2018
1,130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.78 KB | None | 0 0
  1. /*
  2.     Custom Player Nametags
  3.     ----- by zerruv -----
  4.     https://forum.sa-mp.com/showthread.php?t=651314
  5.  
  6.     Make sure to put this under OnGameModeInit!
  7.         ShowNameTags(0);
  8. */
  9. #define FILTERSCRIPT
  10.  
  11. #include <a_samp>
  12. #include <streamer>
  13. #include <foreach>
  14.  
  15. #define NT_DISTANCE 25.0 // Nametag render distance
  16.  
  17. new Text3D:cNametag[MAX_PLAYERS];
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     print("--- Custom nametags by zerruv loaded.");
  22.     // OnPlayerUpdate causes lag and OnPlayer(Take/Give)Damage doesn't work with it
  23.     SetTimer("UpdateNametag", 500, true); // So we're using a timer, change the interval to what you want
  24.     return 1;
  25. }
  26. stock GetHealthDots(playerid)
  27. {
  28.     new dots[64];
  29.     new Float:HP;
  30.  
  31.     GetPlayerHealth(playerid, HP);
  32.  
  33.     if(HP == 100)
  34.         dots = "••••••••••";
  35.     else if(HP >= 90 && HP < 100)
  36.         dots = "•••••••••{660000}•";
  37.     else if(HP >= 80 && HP < 90)
  38.         dots = "••••••••{660000}••";
  39.     else if(HP >= 70 && HP < 80)
  40.         dots = "•••••••{660000}•••";
  41.     else if(HP >= 60 && HP < 70)
  42.         dots = "••••••{660000}••••";
  43.     else if(HP >= 50 && HP < 60)
  44.         dots = "•••••{660000}•••••";
  45.     else if(HP >= 40 && HP < 50)
  46.         dots = "••••{660000}••••••";
  47.     else if(HP >= 30 && HP < 40)
  48.         dots = "•••{660000}•••••••";
  49.     else if(HP >= 20 && HP < 30)
  50.         dots = "••{660000}••••••••";
  51.     else if(HP >= 10 && HP < 20)
  52.         dots = "••{660000}••••••••";
  53.     else if(HP >= 0 && HP < 10)
  54.         dots = "{660000}••••••••••";
  55.  
  56.     return dots;
  57. }
  58. stock GetArmorDots(playerid)
  59. {
  60.     new dots[64];
  61.     new Float:AR;
  62.  
  63.     GetPlayerArmour(playerid, AR);
  64.  
  65.     if(AR == 100)
  66.         dots = "••••••••••";
  67.     else if(AR >= 90 && AR < 100)
  68.         dots = "•••••••••{666666}•";
  69.     else if(AR >= 80 && AR < 90)
  70.         dots = "••••••••{666666}••";
  71.     else if(AR >= 70 && AR < 80)
  72.         dots = "•••••••{666666}•••";
  73.     else if(AR >= 60 && AR < 70)
  74.         dots = "••••••{666666}••••";
  75.     else if(AR >= 50 && AR < 60)
  76.         dots = "•••••{666666}•••••";
  77.     else if(AR >= 40 && AR < 50)
  78.         dots = "••••{666666}••••••";
  79.     else if(AR >= 30 && AR < 40)
  80.         dots = "•••{666666}•••••••";
  81.     else if(AR >= 20 && AR < 30)
  82.         dots = "••{666666}••••••••";
  83.     else if(AR >= 10 && AR < 20)
  84.         dots = "••{666666}••••••••";
  85.     else if(AR >= 0 && AR < 10)
  86.         dots = "{666666}••••••••••";
  87.  
  88.     return dots;
  89. }
  90.  
  91. public OnPlayerConnect(playerid)
  92. {
  93.     cNametag[playerid] = CreateDynamic3DTextLabel("Loading nametag...", 0xFFFFFFFF, 0.0, 0.0, 0.1, NT_DISTANCE, .attachedplayer = playerid, .testlos = 1);
  94.     return 1;
  95. }
  96. public OnPlayerDisconnect(playerid, reason)
  97. {
  98.     if(IsValidDynamic3DTextLabel(cNametag[playerid]))
  99.               DestroyDynamic3DTextLabel(cNametag[playerid]);
  100.     return 1;
  101. }
  102. forward UpdateNametag();
  103. public UpdateNametag()
  104. {
  105.     foreach(new i : Player)
  106.     {
  107.         if(IsPlayerConnected(i))
  108.         {
  109.             new nametag[128], playername[MAX_PLAYER_NAME], Float:armour;
  110.             GetPlayerArmour(i, armour);
  111.             GetPlayerName(i, playername, sizeof(playername));
  112.             if(armour > 1.0)
  113.             {
  114.                 format(nametag, sizeof(nametag), "{%06x}%s {FFFFFF}(%i)\n{FFFFFF}%s\n{FF0000}%s", GetPlayerColor(i) >>> 8, playername, i, GetArmorDots(i), GetHealthDots(i));
  115.             }
  116.             else
  117.             {
  118.                 format(nametag, sizeof(nametag), "{%06x}%s {FFFFFF}(%i)\n{FF0000}%s", GetPlayerColor(i) >>> 8, playername, i, GetHealthDots(i));
  119.             }
  120.             UpdateDynamic3DTextLabelText(cNametag[i], 0xFFFFFFFF, nametag);
  121.         }
  122.     }
  123. }
Add Comment
Please, Sign In to add comment