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
Sa: 17 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][VERSION 4.4+] Notruf-Marker für Polizei & Medic

      • Altis Life
    • blackfisch
    • 28. September 2017 um 20:14
    • MxAlp
      Anfänger
      Reaktionen
      4
      Trophäen
      8
      Beiträge
      63
      • 20. Oktober 2017 um 14:10
      • #41

      Hallo


      Gibt es schon eine Lösung das mehr Marker angezeigt werden können

      Lg

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 20. Oktober 2017 um 14:26
      • #42

      Das sollte generell schon funktionieren

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • MxAlp
      Anfänger
      Reaktionen
      4
      Trophäen
      8
      Beiträge
      63
      • 20. Oktober 2017 um 14:28
      • #43

      Leider nicht hatten es gestern ausprobiert und es wird nur der Ältere angezeigt in den Logs steht auch nix drin

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 20. Oktober 2017 um 14:28
      • #44
      Zitat von blackfisch

      Das sollte generell schon funktionieren

      Leider funktioniert das mit dem SQL Smartphone nicht bei mehrern Notrufen also bei mir geht es auch noch nicht ;)

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • MxAlp
      Anfänger
      Reaktionen
      4
      Trophäen
      8
      Beiträge
      63
      • 20. Oktober 2017 um 14:30
      • #45

      Na Haben das alte drin

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 20. Oktober 2017 um 14:30
      • #46
      Zitat von Avirex

      Leider funktioniert das mit dem SQL Smartphone nicht bei mehrern Notrufen also bei mir geht es auch noch nicht ;)

      Mund auf machen Mädels xD

      Beim SQL musst der Aufruf wo anders hin glaube ich, musst du mal schauen...

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • Dukes
      Fortgeschrittener
      Reaktionen
      22
      Trophäen
      9
      Beiträge
      423
      • 20. Oktober 2017 um 16:45
      • #47

      Hi blackfisch ,

      gibt es mittlerweile eine Lösung fürs SQL Smartphone?


      Danke im voraus und freundliche Grüße,

      Dukes

      "Liegt der Camper tot im Keller,

      war der Rusher wieder schneller,

      liegt der Rusher tot daneben,

      hat der Camper nen Kollegen,

      sind sie beide noch am Leben,

      ging ne menge Blei vorbei,

      sind sie jedoch beide weg,

      cheatet einer - so ein Dreck!"


      ## -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- ##

      Tonnick Community

      TS³ : tonnickcommunity.de

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 20. Oktober 2017 um 17:01
      • #48
      Zitat von blackfisch

      Mund auf machen Mädels xD

      Beim SQL musst der Aufruf wo anders hin glaube ich, musst du mal schauen...

      Zitat von Dukes

      Hi blackfisch ,

      gibt es mittlerweile eine Lösung fürs SQL Smartphone?


      Danke im voraus und freundliche Grüße,

      Dukes

      lesen wäre von Vorteil...

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • Dukes
      Fortgeschrittener
      Reaktionen
      22
      Trophäen
      9
      Beiträge
      423
      • 20. Oktober 2017 um 18:01
      • #49

      Hi blackfisch ,

      genau das habe ich gelesen ich wollte mich nur erkundigen wo genau denn das jetzt hin muss.


      Entschuldige da habe ich mich wohl falsch ausgedrückt.


      Mit freundlichen Grüßen,

      Dukes

      "Liegt der Camper tot im Keller,

      war der Rusher wieder schneller,

      liegt der Rusher tot daneben,

      hat der Camper nen Kollegen,

      sind sie beide noch am Leben,

      ging ne menge Blei vorbei,

      sind sie jedoch beide weg,

      cheatet einer - so ein Dreck!"


      ## -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- ##

      Tonnick Community

      TS³ : tonnickcommunity.de

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 30. November 2017 um 16:09
      • #50

      Ich habe mich mal dazu entschieden, bei den vielen nachfragen hier eine kleine Ergänzung für das SQL Smartphone vorzunhemen.

      Es funktioniert zu 99% wenn ihr nach diesem Tutorial [TUTORIAL] SQL basiertes Smartphone vorgegangen seit:

      Ihr müsst bei diesem Tutorial Schritt 9 und 10 ändern.

      1.Geht in eure [mpmisson]* Fügt in der core\pmenu\fn_newMsg.sqf" folgendes ein:

      Sucht case2: heraus. Und fügt unter [ObjNull,_msg,player,1] remoteExec ["TON_fnc_handleMessages",2];

      CSS
      [getPosATL player,'cop',name player] remoteExecCall ['life_fnc_tempMapMarker',west];
      ['cop'] remoteExecCall ['TON_fnc_countDispatch',2];

      Es sollte dann so aussehen:

      CSS
      //copmessage
             case 2: { if(({side _x == west} count playableUnits) == 0) exitWith {
               hint format["Derzeit gibt es keinen Polizist im Dienst. Bitte versuchen Sie es später noch einmal."];
              };
               ctrlShow[888895,false];
               if(_msg == "") exitWith {
                 hint "Sie müssen eine Nachricht eingeben, die gesendet werden soll!";
                ctrlShow[888895,true];
              };
              [ObjNull,_msg,player,1] remoteExec ["TON_fnc_handleMessages",2];
               [getPosATL player,'cop',name player] remoteExecCall ['life_fnc_tempMapMarker',west];
               ['cop'] remoteExecCall ['TON_fnc_countDispatch',2];
               _to = "Police";
               hint format["Du hast eine Nachricht an alle Polizisten geschickt: %2",_to,_msg];
               ctrlShow[888895,true];
               closeDialog 887890;
             };
      Alles anzeigen

      Nun sucht ihr case4: heraus. Und fügt unter [ObjNull,_msg,player,3] remoteExec ["TON_fnc_handleMessages",2];

      CSS
      [getPosATL player,'med',name player] remoteExecCall ['life_fnc_tempMapMarker',independent];
      ['med'] remoteExecCall ['TON_fnc_countDispatch',2];

      Es sollte dann so aussehen:

      CSS
      //emsrequest
             case 4: { if(({side _x == independent} count playableUnits) == 0) exitWith {
               hint format["Derzeit gibt es keinen Medic im Dienst. Bitte versuchen Sie es später noch einmal."];
              };
               ctrlShow[888899,false];
               if(_msg == "") exitWith {
                 hint "Sie müssen eine Nachricht eingeben, die gesendet werden soll!";
                ctrlShow[888899,true];
              };
              [ObjNull,_msg,player,3] remoteExec ["TON_fnc_handleMessages",2];
               [getPosATL player,'med',name player] remoteExecCall ['life_fnc_tempMapMarker',independent];
               ['med'] remoteExecCall ['TON_fnc_countDispatch',2];
               hint format["Sie haben eine Nachricht an alle EMS-Einheiten gesendet.",_msg];
               ctrlShow[888899,true];
               closeDialog 887890;
             };
      Alles anzeigen

      Ist von mir selbst getestet unter der 5.0 ;)

      Ich hoffe ich konnte somit etwas weiterhelfen.

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 30. November 2017 um 16:14
      • #51

      Ich habe aber noch eine kleine Frage:

      Wenn ein Spieler mehrmals einen Notruf sendet bzw. er die Position ändert werden natürlich an den stellen neue Marker auf der Map gesetzt.

      Wäre es den nicht möglich den alten Marker sofort zu entfernen, sobald der Spieler einen neuen Notruf absendet. ?

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 30. November 2017 um 17:17
      • #52

      müsstest du halt entsprechend ändern, uid mitspeichern und dann löschen. An sich nichts allzu kompliziertes

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • TimWagner
      Schüler
      Reaktionen
      1
      Trophäen
      9
      Beiträge
      120
      • 20. Dezember 2017 um 15:46
      • #53

      Guten Nachmitag ich habe 2 Fragen die erste wäre bei mir verschwinden die Marker nicht und 2 wollte ich fragen ob mit eventuell jemand helfen könnte diese Script auszuweiten in dem man einen Monitor hat wo man diesen Auftrag annehmen kann oder Ablehnen

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 20. Dezember 2017 um 15:49
      • #54

      Dann einmal die: fn_survival.sqfund das besagte Script gibt es bereits hier: https://allianceapps.de/scripts/911callmanagement

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • TimWagner
      Schüler
      Reaktionen
      1
      Trophäen
      9
      Beiträge
      120
      • 20. Dezember 2017 um 15:55
      • #55
      fn_survial.sqf

      #include "..\script_macros.hpp"

      /*

      File: fn_survival.sqf

      Author: Bryan "Tonic" Boardwine

      Description:

      All survival? things merged into one thread.

      */

      private ["_fnc_food","_fnc_water","_foodTime","_waterTime","_bp","_walkDis","_lastPos","_curPos"];

      _fnc_food = {

      if (life_hunger < 2) then {player setDamage 1; hint localize "STR_NOTF_EatMSG_Death";}

      else

      {

      life_hunger = life_hunger - 10;

      [] call life_fnc_hudUpdate;

      if (life_hunger < 2) then {player setDamage 1; hint localize "STR_NOTF_EatMSG_Death";};

      switch (life_hunger) do {

      case 30: {hint localize "STR_NOTF_EatMSG_1";};

      case 20: {hint localize "STR_NOTF_EatMSG_2";};

      case 10: {

      hint localize "STR_NOTF_EatMSG_3";

      if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};

      };

      };

      };

      };

      _fnc_water = {

      if (life_thirst < 2) then {player setDamage 1; hint localize "STR_NOTF_DrinkMSG_Death";}

      else

      {

      life_thirst = life_thirst - 10;

      [] call life_fnc_hudUpdate;

      if (life_thirst < 2) then {player setDamage 1; hint localize "STR_NOTF_DrinkMSG_Death";};

      switch (life_thirst) do {

      case 30: {hint localize "STR_NOTF_DrinkMSG_1";};

      case 20: {

      hint localize "STR_NOTF_DrinkMSG_2";

      if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};

      };

      case 10: {

      hint localize "STR_NOTF_DrinkMSG_3";

      if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};

      };

      };

      };

      };

      //Setup the time-based variables.

      _foodTime = time;

      _waterTime = time;

      _walkDis = 0;

      _bp = "";

      _lastPos = visiblePosition player;

      _lastPos = (_lastPos select 0) + (_lastPos select 1);

      _lastState = vehicle player;

      for "_i" from 0 to 1 step 0 do {

      /* Thirst / Hunger adjustment that is time based */

      if ((time - _waterTime) > 600) then {[] call _fnc_water; _waterTime = time;};

      if ((time - _foodTime) > 850) then {[] call _fnc_food; _foodTime = time;};

      /* Adjustment of carrying capacity based on backpack changes */

      if (backpack player isEqualTo "") then {

      life_maxWeight = LIFE_SETTINGS(getNumber,"total_maxWeight");

      _bp = backpack player;

      } else {

      if (!(backpack player isEqualTo "") && {!(backpack player isEqualTo _bp)}) then {

      _bp = backpack player;

      life_maxWeight = LIFE_SETTINGS(getNumber,"total_maxWeight") + round(FETCH_CONFIG2(getNumber,"CfgVehicles",_bp,"maximumload") / 4);

      };

      };

      /* Check if the player's state changed? */

      if (!(vehicle player isEqualTo _lastState) || {!alive player}) then {

      [] call life_fnc_updateViewDistance;

      _lastState = vehicle player;

      };

      /* Check if the weight has changed and the player is carrying to much */

      if (life_carryWeight > life_maxWeight && {!isForcedWalk player}) then {

      player forceWalk true;

      if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};

      hint localize "STR_NOTF_MaxWeight";

      } else {

      if (isForcedWalk player) then {

      player forceWalk false;

      };

      };

      /* Travelling distance to decrease thirst/hunger which is captured every second so the distance is actually greater then 650 */

      if (!alive player) then {_walkDis = 0;} else {

      _curPos = visiblePosition player;

      _curPos = (_curPos select 0) + (_curPos select 1);

      if (!(_curPos isEqualTo _lastPos) && {(isNull objectParent player)}) then {

      _walkDis = _walkDis + 1;

      if (_walkDis isEqualTo 650) then {

      _walkDis = 0;

      life_thirst = life_thirst - 5;

      life_hunger = life_hunger - 5;

      [] call life_fnc_hudUpdate;

      };

      };

      _lastPos = visiblePosition player;

      _lastPos = (_lastPos select 0) + (_lastPos select 1);

      };

      uiSleep 1;

      };

      [] spawn

      {

      private["_bp","_load","_cfg"];

      while{true} do

      {

      waitUntil {backpack player != ""};

      _bp = backpack player;

      _cfg = getNumber(configFile >> "CfgVehicles" >> (backpack player) >> "maximumload");

      _load = round(_cfg / 8);

      life_maxWeight = life_maxWeightT + _load;

      if(playerSide == west) then {(unitBackpack player) setObjectTextureGlobal [0,""];}; // <---- Sac invisible chez les flics

      if(playerSide == independent) then {(unitBackpack player) setObjectTextureGlobal [0,""];}; // <----- Sac Invisible chez les Medics

      waitUntil {backpack player != _bp};

      if(backpack player == "") then

      {

      life_maxWeight = life_maxWeightT;

      };

      };

      {

      if ((time - (_x select 1)) >= (300)) then {

      deleteMarkerLocal (_x select 0);

      bf_localmarker deleteAt _forEachIndex;

      };

      } forEach bf_localmarker;

      };

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 20. Dezember 2017 um 16:04
      • #56

      Kannst du es auch per Dateianhang anhängen ?

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • TimWagner
      Schüler
      Reaktionen
      1
      Trophäen
      9
      Beiträge
      120
      • 20. Dezember 2017 um 16:07
      • #57

      Hier

      Dateien

      fn_survival.sqf 4,93 kB – 199 Downloads
    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 20. Dezember 2017 um 16:21
      • #58

      So habe es einmal alles richtig formatiert sollte nun gehen:

      if ((time - (_x select 1)) >= (300)) then {

      wenn du die 300 zu 30 änderst geht der Marker in 30 sec weg so kannst du es testen.;)

      300sec sind dann 5 min.

      Dateien

      fn_survival.sqf 4,96 kB – 158 Downloads

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    • TimWagner
      Schüler
      Reaktionen
      1
      Trophäen
      9
      Beiträge
      120
      • 20. Dezember 2017 um 17:40
      • #59

      danke

    • AvirexDE
      Meister
      Reaktionen
      784
      Beiträge
      1.917
      Dateien
      1
      Bilder
      39
      • 20. Dezember 2017 um 17:44
      • #60
      Zitat von TimWagner

      danke

      Kein problem dafür sind wir ja da ;)

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

      ▀ Freundliche Grüße ▀

      giphy.gif

      ●●●▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄●●●

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von Native-Servers.com? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Benutzerkonto erstellen

    Benutzer online in diesem Thema

    • 2 Besucher

    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™