Advertisement
Guest User

Untitled

a guest
Nov 18th, 2022
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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. }
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement