1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Di: 20 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Tutorials & Releases

    [Tutorial] Nametags für die Polizei, Medics und ADAC für Altis Life 4.X

      • Altis Life
    • Tallion
    • 14. Januar 2017 um 01:23
    • Tallion
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      37
      Bilder
      1
      • 14. Januar 2017 um 01:23
      • #1

      Hallo,
      Ich habe mich nach einer längeren Altis Life Pause entschieden mal wieder vorbeizuschauen und hab mal unsere alte fn_playerTags.sqf mit den Nametags für die Polizei, den Adac und für die Medics rausgekramt. Aber nun zum Tutorial:

      Das Tutorial funktioniert getestet bei der Vanilla 4.4R3 sollte aber auch in allen Versionen aber der 4.0 aufwärts klappen.

      1. Sucht nach eurer fn_playerTags.sqf in core / functions

      2. Ersetzt alles mit:

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_playerTags.sqf
          Author: Bryan "Tonic" Boardwine
          Description:
          Adds the tags above other players heads when close and have visible range.
      */
      if (!life_settings_tagson) exitWith {};
      private ["_ui","_units","_masks"];
      #define iconID 78000
      #define scale 0.8
      if (visibleMap || {!alive player} || {dialog}) exitWith {
          500 cutText["","PLAIN"];
      };
      _ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull];
      if (isNull _ui) then {
          500 cutRsc["Life_HUD_nameTags","PLAIN"];
          _ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull];
      };
      _units = nearestObjects[(visiblePosition player),["Man","Land_Pallet_MilBoxes_F","Land_Sink_F"],50];
      _units = _units - [player];
      _masks = LIFE_SETTINGS(getArray,"clothing_masks");
      {
          private "_text";
          _idc = _ui displayCtrl (iconID + _forEachIndex);
          if (!(lineIntersects [eyePos player, eyePos _x, player, _x]) && alive _x && {!isNil {_x getVariable "realname"}}) then {
              _pos = switch (typeOf _x) do {
                  case "Land_Pallet_MilBoxes_F": {[visiblePosition _x select 0, visiblePosition _x select 1, (getPosATL _x select 2) + 1.5]};
                  case "Land_Sink_F": {[visiblePosition _x select 0, visiblePosition _x select 1, (getPosATL _x select 2) + 2]};
                  default {[visiblePosition _x select 0, visiblePosition _x select 1, ((_x modelToWorld (_x selectionPosition "head")) select 2)+.5]};
              };
              _sPos = worldToScreen _pos;
              _distance = _pos distance player;
              if (!((headgear _x) in _masks || (goggles _x) in _masks || (uniform _x) in _masks)) then {
                  if (count _sPos > 1 && {_distance < 15}) then {
                      _text = switch (true) do {
                          case (_x in (units group player) && playerSide == civilian): {format ["<t color='#00FF00'>%1</t>",(_x getVariable ["realname",name _x])];};
                          case (!isNil {(_x getVariable "rank")} && side _x == west): {format["<img image='%1' size='1'></img> <t size='1.2' color='#318CE7'>%3<br/></t>%2",
      					    switch ((_x getVariable "rank")) do {
      						    case 2: {"\a3\ui_f\data\gui\cfg\Ranks\corporal_gs.paa"};
      			                case 3: {"\a3\ui_f\data\gui\cfg\Ranks\sergeant_gs.paa"};
      						    case 4: {"\a3\ui_f\data\gui\cfg\Ranks\lieutenant_gs.paa"};
      						    case 5: {"\a3\ui_f\data\gui\cfg\Ranks\captain_gs.paa"};
      						    case 6: {"\a3\ui_f\data\gui\cfg\Ranks\major_gs.paa"};
      						    case 7: {"\a3\ui_f\data\gui\cfg\Ranks\colonel_gs.paa"};
      						    case 8: {"\a3\ui_f\data\gui\cfg\Ranks\general_gs.paa"};
      						    default {"\a3\ui_f\data\gui\cfg\Ranks\private_gs.paa"};
      					    },
      					    _x getVariable ["realname",name _x],
      					    switch ((_x getVariable "rank")) do {
      							    case 2: {"POLIZEI RANG2"};
      							    case 3: {"POLIZEI RANG3"};
      							    case 4: {"POLIZEI RANG4"};
      							    case 5: {"POLIZEI RANG5"};
      							    case 6: {"POLIZEI RANG6"};
      							    case 7: {"POLIZEI RANG7"};
      							    default {"POLIZEI RANG1"};
      						}
      					    ]
      				        };
                          case (side _x == independent): {format["<t color='#FF0000'><img image='a3\ui_f\data\map\MapControl\hospital_ca.paa' size='1'></img> <t size='1.2' color='#FF0000'>%2<br/></t>%1",
      						_x getVariable ["realname",name _x],
      					    switch ((_x getVariable "medrank")) do {
      							    case 2: {"MEDIC RANG2"};
      							    case 3: {"MEDIC RANG3"};
      							    case 4: {"MEDIC RANG4"};
      							    case 5: {"MEDIC RANG5"};
      							    case 6: {"MEDIC RANG6"};
      							    case 7: {"MEDIC RANG7"};
      							    default {"MEDIC RANG1"};
      						}
      					    ]
      				        };
      					case (side _x == east): {format["<t color='#FFF700'><img image='a3\ui_f\data\map\MapControl\hospital_ca.paa' size='1'></img> <t size='1.2' color='#FFF700'>%2<br/></t>%1",
      						_x getVariable ["realname",name _x],
      					    switch ((_x getVariable "adacrank")) do {
      							    case 2: {"ADAC RANG2"};
      							    case 3: {"ADAC RANG3"};
      							    case 4: {"ADAC RANG4"};
      							    case 5: {"ADAC RANG5"};
      							    case 6: {"ADAC RANG6"};
      							    case 7: {"ADAC RANG7"};
      							    default {"ADAC RANG1"};
      						}
      					    ]
      				        };
                          default {
                              if (!isNil {(group _x) getVariable "gang_name"}) then {
                                  format["%1<br/><t size='0.8' color='#B6B6B6'>%2</t>",_x getVariable ["realname",name _x],(group _x) getVariable ["gang_name",""]];
                              } else {
                                  _x getVariable ["realname",name _x];
                              };
                          };
                      };
                      _idc ctrlSetStructuredText parseText _text;
                      _idc ctrlSetPosition [_sPos select 0, _sPos select 1, 0.4, 0.65];
                      _idc ctrlSetScale scale;
                      _idc ctrlSetFade 0;
                      _idc ctrlCommit 0;
                      _idc ctrlShow true;
                  } else {
                      _idc ctrlShow false;
                  };
              } else {
                  _idc ctrlShow false;
              };
          } else {
              _idc ctrlShow false;
          };
      } forEach _units;
      Alles anzeigen


      3. Sucht jetzt nach

      Code
      case (!isNil {(_x getVariable "rank")} && side _x == west): {format["<img image='%1' size='1'></img> <t size='1.2' color='#318CE7'>%3<br/></t>%2",
      					    switch ((_x getVariable "rank")) do {
      						    case 2: {"\a3\ui_f\data\gui\cfg\Ranks\corporal_gs.paa"};
      			                case 3: {"\a3\ui_f\data\gui\cfg\Ranks\sergeant_gs.paa"};
      						    case 4: {"\a3\ui_f\data\gui\cfg\Ranks\lieutenant_gs.paa"};
      						    case 5: {"\a3\ui_f\data\gui\cfg\Ranks\captain_gs.paa"};
      						    case 6: {"\a3\ui_f\data\gui\cfg\Ranks\major_gs.paa"};
      						    case 7: {"\a3\ui_f\data\gui\cfg\Ranks\colonel_gs.paa"};
      						    case 8: {"\a3\ui_f\data\gui\cfg\Ranks\general_gs.paa"};
      						    default {"\a3\ui_f\data\gui\cfg\Ranks\private_gs.paa"};
      					    },
      					    _x getVariable ["realname",name _x],
      					    switch ((_x getVariable "rank")) do {
      							    case 2: {"POLIZEI RANG2"};
      							    case 3: {"POLIZEI RANG3"};
      							    case 4: {"POLIZEI RANG4"};
      							    case 5: {"POLIZEI RANG5"};
      							    case 6: {"POLIZEI RANG6"};
      							    case 7: {"POLIZEI RANG7"};
      							    default {"POLIZEI RANG1"};
      						}
      					    ]
      				        };
                          case (side _x == independent): {format["<t color='#FF0000'><img image='a3\ui_f\data\map\MapControl\hospital_ca.paa' size='1'></img> <t size='1.2' color='#FF0000'>%2<br/></t>%1",
      						_x getVariable ["realname",name _x],
      					    switch ((_x getVariable "medrank")) do {
      							    case 2: {"MEDIC RANG2"};
      							    case 3: {"MEDIC RANG3"};
      							    case 4: {"MEDIC RANG4"};
      							    case 5: {"MEDIC RANG5"};
      							    case 6: {"MEDIC RANG6"};
      							    case 7: {"MEDIC RANG7"};
      							    default {"MEDIC RANG1"};
      						}
      					    ]
      				        };
      					case (side _x == east): {format["<t color='#FFF700'><img image='a3\ui_f\data\map\MapControl\hospital_ca.paa' size='1'></img> <t size='1.2' color='#FFF700'>%2<br/></t>%1",
      						_x getVariable ["realname",name _x],
      					    switch ((_x getVariable "adacrank")) do {
      							    case 2: {"ADAC RANG2"};
      							    case 3: {"ADAC RANG3"};
      							    case 4: {"ADAC RANG4"};
      							    case 5: {"ADAC RANG5"};
      							    case 6: {"ADAC RANG6"};
      							    case 7: {"ADAC RANG7"};
      							    default {"ADAC RANG1"};
      						}
      					    ]
      				        };
      Alles anzeigen

      und tragt dort eure Namen für die Polizei,Adac und Medicränge ein.


      4. Fügt jetzt noch in eurer fn_initMedic.sqf das

      Code
      player setVariable["medrank",(FETCH_CONST(life_medicLevel)),true];

      über

      Code
      [] call life_fnc_spawnMenu;

      ein und wenn ihr einen ADAC haben solltet noch das in die fn_initADAC.sqf

      Code
      player setVariable["adacrank",(FETCH_CONST(life_adacLevel)),true];

      über

      Code
      [] call life_fnc_spawnMenu;

      ein.

      Falls der Name eures ADAC Levels in der Datenbank anders sein sollte dann müsst ihr ihn noch in der initADAC.sqf anpassen.

      So das sollte es gewesen sein.

      MFG Tallion

      7 Mal editiert, zuletzt von Tallion (14. Januar 2017 um 12:35)

    • Drumper
      Frischling
      Trophäen
      9
      Beiträge
      23
      • 14. Januar 2017 um 05:35
      • #2

      Kann man das ganze auch für Medics oder ADAC machen bzw. Hast du sowas auch schon mal gemacht.
      Wäre cool wenn du dafür auch eine Anleitung hast.

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 14. Januar 2017 um 09:34
      • #3
      Zitat von Tallion

      Das Tutorial funktioniert getestet bei der Vanilla 4.4R3 sollte aber auch in allen Versionen aber der 4.0 klappen.

      Nicht ganz ^^

      Zitat von Tallion

      isEqualTo

      Dies müsste man umschreiben

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • Brizi Jaeger
      Profi
      Reaktionen
      291
      Trophäen
      11
      Beiträge
      1.025
      • 14. Januar 2017 um 11:17
      • #4

      Könnte jemand einen Screenshot Posten? Damit es sich andere Bildlich Vorstellen können Die nicht Wissen was genau damit gemeint ist.

    • Tallion
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      37
      Bilder
      1
      • 14. Januar 2017 um 11:39
      • #5
      Zitat von AmaZiinG

      Nicht ganz

      Besser?

    • Tallion
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      37
      Bilder
      1
      • 14. Januar 2017 um 11:52
      • #6
      Zitat von Drumper

      Kann man das ganze auch für Medics oder ADAC machen bzw. Hast du sowas auch schon mal gemacht.
      Wäre cool wenn du dafür auch eine Anleitung hast.

      Ich habe das Tutorial oben aktualisiert. Von dort kannst du das dann auch für die Medics und für den ADAC übernehmen.

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 14. Januar 2017 um 12:03
      • #7
      Zitat von Tallion

      Besser?

      Ja :D

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • JackONeill
      Frischling
      Reaktionen
      3
      Trophäen
      9
      Beiträge
      27
      • 14. Januar 2017 um 12:16
      • #8
      Zitat von AmaZiinG

      Nicht ganz ^^

      Dies müsste man umschreiben

      umschreiben auf was? und warum?

      ob jetzt isEqualTo oder == hat ja nichts mir der verwendeten Life version zu tun sondern mit der Arma Version und da funzt ja atm beides

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 14. Januar 2017 um 12:32
      • #9
      Zitat von JackONeill

      umschreiben auf was? und warum?


      Weil bei der 3.1.4.8. kein isEqualTo gibt.

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • JackONeill
      Frischling
      Reaktionen
      3
      Trophäen
      9
      Beiträge
      27
      • 14. Januar 2017 um 12:37
      • #10

      siehe meinen vorherigen post
      und jetzt sag mir seit wann sind bohemia functions von der life version abhängig?
      isEqualTo is ja jetzt nichts das tonic oder seine lakaien erfunden hätten

    • Shinji
      Profi
      Reaktionen
      576
      Trophäen
      10
      Beiträge
      778
      • 14. Januar 2017 um 12:46
      • #11
      Zitat von JackONeill

      siehe meinen vorherigen post
      und jetzt sag mir seit wann sind bohemia functions von der life version abhängig?
      isEqualTo is ja jetzt nichts das tonic oder seine lakaien erfunden hätten

      Ich denke @AmaZiinG meint, das Tonic ab irgendeiner Version das "EQUAL" als Macro eingeführt hat.
      Das "isEqualTo" ist von BI, das umschreiben an sich sollte einfach mit dem Austausch sein (ab das Tut nicht gelesen).

      Software Entwickler -
      Präzises Rätselraten, basierend auf unzuverlässigen Daten und fragwürdigem Wissen der Auftraggeber.

    • JackONeill
      Frischling
      Reaktionen
      3
      Trophäen
      9
      Beiträge
      27
      • 14. Januar 2017 um 12:50
      • #12

      EQUAL != isEqualTo

      und was er MEINT kann ich ja nicht ahnen wenn er nicht das schreibt was er meint ;)

    • Tallion
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      37
      Bilder
      1
      • 14. Januar 2017 um 12:53
      • #13

      Ich würde die Macros sowieso nicht nutzen da ist == bestimmt die einfachste Lösung.

    • Shinji
      Profi
      Reaktionen
      576
      Trophäen
      10
      Beiträge
      778
      • 14. Januar 2017 um 12:54
      • #14
      Zitat von JackONeill

      EQUAL != isEqualTo

      und was er MEINT kann ich ja nicht ahnen wenn er nicht das schreibt was er meint ;)

      #define EQUAL(condition1,condition2) condition1 isEqualTo condition2

      Software Entwickler -
      Präzises Rätselraten, basierend auf unzuverlässigen Daten und fragwürdigem Wissen der Auftraggeber.

    • JackONeill
      Frischling
      Reaktionen
      3
      Trophäen
      9
      Beiträge
      27
      • 14. Januar 2017 um 13:21
      • #15

      mir is schon klar was EQUAL ist (eine von tonics unnötigen doppelt gemoppelten macro funktionen die man eigtl nicht braucht wenn man direkt auf die ursprüngliche zurückgreift und sich den umweg spart)

      aber das ging ja nirgends aus seinem post hervor wenn er isEqualTo schreibt dass er dann EQUAL meint

    • Natic
      Fortgeschrittener
      Reaktionen
      66
      Trophäen
      9
      Beiträge
      408
      • 29. Januar 2017 um 10:34
      • #16

      Bei dem Medics steht da ANY anstatt der Rang?

      Mit freundlichen Grüßen

      Natic

      --------------------------------------------------------------------------------------------------------------------------

      Kein direkten PN - Support

      --------------------------------------------------------------------------------------------------------------------------

      Programierung

      Wir lieben

      es

    • Tallion
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      37
      Bilder
      1
      • 30. Januar 2017 um 13:03
      • #17

      Ich denke du hast das in der initMedic.sqf vergessen:


      Code
      player setVariable["medrank",(FETCH_CONST(life_medicLevel)),true];

      über

      Code
      [] call life_fnc_spawnMenu;

    • br1zey
      Meister
      Reaktionen
      881
      Trophäen
      11
      Beiträge
      2.458
      Dateien
      2
      Bilder
      58
      • 30. Januar 2017 um 23:30
      • #18
      Zitat von Tallion

      Ich würde die Macros sowieso nicht nutzen da ist == bestimmt die einfachste Lösung.

      naja

      isEqualTo und == ist das selbe :D

      aber
      isEqualTo ist Etwas Schneller als == und hat auch so noch kleine vorteile

      ReallifeRPG Admin, Scripter, Technischer Helfer, und Manchmal auch Spieler

      realliferpg128x128.png?resize=128%2C128&ssl=1

    • Rom
      Kenner
      Reaktionen
      156
      Beiträge
      533
      • 31. Januar 2017 um 05:32
      • #19

      #senf

      isEqualTo: Vergleichen von Werten unabhängig vom Datentyp. Also Strings können mit Objekten bspw. abgeglichen werden - ohne dadurch resultierende Fehlermeldung. Bei String Vergleichung soll isEqualTo schneller sein als ==. Bei Strings case-SenSiTIVE: "Test" isEqualTo "TEST" => false. Also alles kann mit allem abgeglichen werden.

      ==: (Sieht falsch aus, sry ^^ ) Werte abgleichen, ähnlich bei isEqualTo, aber der meiner Meinung nach wichtigste Unterschied sind die Datentypen. Also "Test" == "TeST" => true, 1 == "String" => ERROR. Bei Strings erfolgt KEINE Überprüfung der Groß-/Kleinschreibung, case-InsENsitive.

      Wenn ich etwas missverstanden habe, hoppala

    • PoweredByte
      Amateur
      Reaktionen
      36
      Trophäen
      11
      Beiträge
      261
      • 26. März 2017 um 09:49
      • #20

      Kriege immer die Fehlermeldung

      Picture true not found

      Ich weiß das es an der switch:

      _text = switch (true) do {

      liegt. Hab jedoch keine Ahnung wie man das abändern könnte.

      Hat da jemand eine Idee?

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Ähnliche Themen

    • Cop Rang über Spieler anzeigen

      • Spiellpde
      • 11. März 2017 um 19:19
      • Hilfeforum

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™