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
Mo: 16 Juni 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. Hilfeforum

    Arma 3 Altis Life 5.0 Windowsmenu öffnet nicht

    • Fabi4976
    • 26. Januar 2019 um 00:06
    • Geschlossen
    • Erledigt
    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 00:06
      • #1

      Hey ich habe ein Problem, undzwar auf manchen Servern geht mein Windowsmenu nicht, also das Interaktionmenu öffnet sich erst gar nicht. Die Clientlogs sind im Anhang[ attach=17675]Logs[/attach].

      Wäre echt sehr nett, wenn mir wer helfen kann :D

      Dateien

      Arma3_x64_2019-01-25_23-07-01.rpt 123,6 kB – 205 Downloads

      Einmal editiert, zuletzt von Fabi4976 (26. Januar 2019 um 09:47)

    • Rene Lerchberg
      Nerd
      Reaktionen
      167
      Trophäen
      8
      Beiträge
      562
      Dateien
      2
      Bilder
      82
      • 26. Januar 2019 um 08:59
      • #2
      Zitat von Fabi4976

      Hey ich habe ein Problem, undzwar auf manchen Servern geht mein Windowsmenu nicht, also das Interaktionmenu öffnet sich erst gar nicht. Die Clientlogs sind im Anhang[ attach=17675][/attach].

      Wäre echt sehr nett, wenn mir wer helfen kann :D

      Du hast win paar fehler wie die hint ausgaben send mal bitte die datei rein wo das drinne steht.(Die hints „willkommen im Dienst“)

      Weiteres kann ich dir nur am pc sagen da ich herade am handy bin

      Mit Freundlichen Grüßen

      Rene Lerchberg

      "Einzigartigkeit entsteht durch Perfektion"

      The-Programmer.com (Support & Translation)

    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 09:47
      • #3

      Die hab ich im Editor in einem Trigger eingefügt. Aber das ist nicht das Problem. Das war auch einfach nur ein Test.

    • Rene Lerchberg
      Nerd
      Reaktionen
      167
      Trophäen
      8
      Beiträge
      562
      Dateien
      2
      Bilder
      82
      • 26. Januar 2019 um 09:55
      • #4

      sen ma bitte deine keyhandler rein

      Mit Freundlichen Grüßen

      Rene Lerchberg

      "Einzigartigkeit entsteht durch Perfektion"

      The-Programmer.com (Support & Translation)

    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 10:31
      • #5

      weiter unten ist die datei selbst.


      #include "..\..\script_macros.hpp"

      /*

      * File: fn_keyHandler.sqf

      * Author: Bryan "Tonic" Boardwine

      *

      * Description:

      * Main key handler for event 'keyDown'.

      */

      private ["_handled","_shift","_alt","_code","_ctrl","_alt","_ctrlKey","_veh","_locked","_interactionKey","_mapKey","_interruptionKeys"];

      _ctrl = _this select 0;

      _code = _this select 1;

      _shift = _this select 2;

      _ctrlKey = _this select 3;

      _alt = _this select 4;

      _speed = speed cursorObject;

      _handled = false;

      _interactionKey = if (count (actionKeys "User10") isEqualTo 0) then {219} else {(actionKeys "User10") select 0};

      _mapKey = (actionKeys "ShowMap" select 0);

      //hint str _code;

      _interruptionKeys = [17,30,31,32]; //A,S,W,D

      //Vault handling...

      if ((_code in (actionKeys "GetOver") || _code in (actionKeys "salute") || _code in (actionKeys "SitDown") || _code in (actionKeys "Throw") || _code in (actionKeys "GetIn") || _code in (actionKeys "GetOut") || _code in (actionKeys "Fire") || _code in (actionKeys "ReloadMagazine") || _code in [16,18]) && ((player getVariable ["restrained",false]) || (player getVariable ["playerSurrender",false]) || life_isknocked || life_istazed)) exitWith {

      true;

      };

      if (life_action_inUse) exitWith {

      if (!life_interrupted && _code in _interruptionKeys) then {life_interrupted = true;};

      _handled;

      };

      //Hotfix for Interaction key not being able to be bound on some operation systems.

      if (!(count (actionKeys "User10") isEqualTo 0) && {(inputAction "User10" > 0)}) exitWith {

      //Interaction key (default is Left Windows, can be mapped via Controls -> Custom -> User Action 10)

      if (!life_action_inUse) then {

      [] spawn {

      private "_handle";

      _handle = [] spawn life_fnc_actionKeyHandler;

      waitUntil {scriptDone _handle};

      life_action_inUse = false;

      };

      };

      true;

      };

      if (life_container_active) exitwith {

      //ignore movement actions

      private _allowedMoves = [

      "MoveForward",

      "MoveBack",

      "TurnLeft",

      "TurnRight",

      "MoveFastForward",

      "MoveSlowForward",

      "turbo",

      "TurboToggle",

      "MoveLeft",

      "MoveRight",

      "WalkRunTemp",

      "WalkRunToggle",

      "AdjustUp",

      "AdjustDown",

      "AdjustLeft",

      "AdjustRight",

      "Stand",

      "Crouch",

      "Prone",

      "MoveUp",

      "MoveDown",

      "LeanLeft",

      "LeanLeftToggle",

      "LeanRight",

      "LeanRightToggle"

      ];

      if (({_code in (actionKeys _x)} count _allowedMoves) > 0) exitwith {

      false;

      };

      //handle other keys

      if (_code isEqualTo 57) then {//space key -> place

      life_storagePlacing = 0 spawn life_fnc_placestorage;

      } else { //other keys -> abort

      if (!isNull life_storagePlacing) exitWith {}; //already placing down a box

      if (!isNull life_container_activeObj) then {

      deleteVehicle life_container_activeObj;

      titleText [localize "STR_NOTF_PlaceContainerAbort", "PLAIN"];

      };

      life_container_active = false;

      };

      true;

      };

      switch (_code) do {

      // -- Disable commander/tactical view

      if (LIFE_SETTINGS(getNumber,"disableCommanderView") isEqualTo 1) then {

      private _CommandMode = actionKeys "tacticalView";

      if (_code in _CommandMode) then {

      hint localize "STR_NOTF_CommanderView";

      _handled = true;

      };

      };

      //Space key for Jumping

      case 57: {

      if (isNil "jumpActionTime") then {jumpActionTime = 0;};

      if (_shift && {!(animationState player isEqualTo "AovrPercMrunSrasWrflDf")} && {isTouchingGround player} && {stance player isEqualTo "STAND"} && {speed player > 2} && {!life_is_arrested} && {((velocity player) select 2) < 2.5} && {time - jumpActionTime > 1.5}) then {

      jumpActionTime = time; //Update the time.

      [player] remoteExec ["life_fnc_jumpFnc",RANY]; //Global execution

      _handled = true;

      };

      };

      //Surrender (Shift + B)

      case 48: {

      if (_shift) then {

      if (player getVariable ["playerSurrender",false]) then {

      player setVariable ["playerSurrender",false,true];

      } else {

      [] spawn life_fnc_surrender;

      };

      _handled = true;

      };

      };

      //Map Key

      case _mapKey: {

      switch (playerSide) do {

      case west: {if (!visibleMap) then {[] spawn life_fnc_copMarkers;}};

      case independent: {if (!visibleMap) then {[] spawn life_fnc_medicMarkers;}};

      case civilian: {if (!visibleMap) then {[] spawn life_fnc_civMarkers;}};

      };

      };

      //Holster / recall weapon. (Shift + H)

      case 35: {

      if (_shift && !_ctrlKey && !(currentWeapon player isEqualTo "")) then {

      life_curWep_h = currentWeapon player;

      player action ["SwitchWeapon", player, player, 100];

      player switchCamera cameraView;

      };

      if (!_shift && _ctrlKey && !isNil "life_curWep_h" && {!(life_curWep_h isEqualTo "")}) then {

      if (life_curWep_h in [primaryWeapon player,secondaryWeapon player,handgunWeapon player]) then {

      player selectWeapon life_curWep_h;

      };

      };

      };

      //Interaction key (default is Left Windows, can be mapped via Controls -> Custom -> User Action 10)

      case _interactionKey: {

      if (!life_action_inUse) then {

      [] spawn {

      private "_handle";

      _handle = [] spawn life_fnc_actionKeyHandler;

      waitUntil {scriptDone _handle};

      life_action_inUse = false;

      };

      };

      };

      //Restraining (Shift + R)

      case 19: {

      if (_shift) then {_handled = true;};

      if (_shift && playerSide isEqualTo west && {!isNull cursorObject} && {cursorObject isKindOf "Man"} && {(isPlayer cursorObject)} && {(side cursorObject in [civilian,independent])} && {alive cursorObject} && {cursorObject distance player < 3.5} && {!(cursorObject getVariable "Escorting")} && {!(cursorObject getVariable "restrained")} && {speed cursorObject < 1}) then {

      [] call life_fnc_restrainAction;

      };

      };

      //Knock out, this is experimental and yeah... (Shift + G)

      case 34: {

      if (_shift) then {_handled = true;};

      if (_shift && playerSide isEqualTo civilian && !isNull cursorObject && cursorObject isKindOf "Man" && isPlayer cursorObject && alive cursorObject && cursorObject distance player < 4 && speed cursorObject < 1) then {

      if ((animationState cursorObject) != "Incapacitated" && (currentWeapon player == primaryWeapon player || currentWeapon player == handgunWeapon player) && currentWeapon player != "" && !life_knockout && !(player getVariable ["restrained",false]) && !life_istazed && !life_isknocked) then {

      [cursorObject] spawn life_fnc_knockoutAction;

      };

      };

      };

      //T Key (Trunk)

      case 20: {

      if (!_alt && {!_ctrlKey} && {!dialog} && {!life_action_inUse} && {!(player getVariable ["playerSurrender",false])} && {!(player getVariable ["restrained",false])} && {!life_isknocked} && {!life_istazed}) then {

      if (!(isNull objectParent player) && alive vehicle player) then {

      if ((vehicle player) in life_vehicles) then {

      [vehicle player] spawn life_fnc_openInventory;

      };

      } else {

      private "_list";

      _list = ((ASLtoATL (getPosASL player)) nearEntities [["Box_IND_Grenades_F","B_supplyCrate_F"], 2.5]) select 0;

      if (!(isNil "_list")) then {

      _house = nearestObject [(ASLtoATL (getPosASL _list)), "House"];

      if (_house getVariable ["locked", false]) then {

      hint localize "STR_House_ContainerDeny";

      } else {

      [_list] spawn life_fnc_openInventory;

      };

      } else {

      _list = ["landVehicle","Air","Ship"];

      if (KINDOF_ARRAY(cursorObject,_list) && {player distance cursorObject < 7} && {isNull objectParent player} && {alive cursorObject} && {!life_action_inUse}) then {

      if (cursorObject in life_vehicles || {locked cursorObject isEqualTo 0}) then {

      [cursorObject] spawn life_fnc_openInventory;

      };

      };

      };

      };

      };

      };

      //L Key?

      case 38: {

      //If cop run checks for turning lights on.

      if (_shift && playerSide in [west,independent]) then {

      if (!(isNull objectParent player) && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {

      if (!isNil {vehicle player getVariable "lights"}) then {

      if (playerSide isEqualTo west) then {

      [vehicle player] call life_fnc_sirenLights;

      } else {

      [vehicle player] call life_fnc_medicSirenLights;

      };

      _handled = true;

      };

      };

      };

      if (!_alt && !_ctrlKey) then { [] call life_fnc_radar; };

      };

      //Y Player Menu

      case 21: {

      if (!_alt && !_ctrlKey && !dialog && !(player getVariable ["restrained",false]) && {!life_action_inUse}) then {

      [] call life_fnc_p_openMenu;

      };

      };

      //F Key

      case 33: {

      if (playerSide in [west,independent] && {vehicle player != player} && {!life_siren_active} && {((driver vehicle player) == player)}) then {

      [] spawn {

      life_siren_active = true;

      sleep 4.7;

      life_siren_active = false;

      };

      _veh = vehicle player;

      if (isNil {_veh getVariable "siren"}) then {_veh setVariable ["siren",false,true];};

      if ((_veh getVariable "siren")) then {

      titleText [localize "STR_MISC_SirensOFF","PLAIN"];

      _veh setVariable ["siren",false,true];

      } else {

      titleText [localize "STR_MISC_SirensON","PLAIN"];

      _veh setVariable ["siren",true,true];

      if (playerSide isEqualTo west) then {

      [_veh] remoteExec ["life_fnc_copSiren",RCLIENT];

      } else {

      [_veh] remoteExec ["life_fnc_medicSiren",RCLIENT];

      };

      };

      };

      };

      //O Key

      case 24: {

      if (_shift) then {

      if !(soundVolume isEqualTo 1) then {

      1 fadeSound 1;

      systemChat localize "STR_MISC_soundnormal";

      } else {

      1 fadeSound 0.1;

      systemChat localize "STR_MISC_soundfade";

      };

      };

      };

      //U Key

      case 22: {

      if (!_alt && !_ctrlKey) then {

      if (isNull objectParent player) then {

      _veh = cursorObject;

      } else {

      _veh = vehicle player;

      };

      if (_veh isKindOf "House_F" && {playerSide isEqualTo civilian}) then {

      if (_veh in life_vehicles && {player distance _veh < 20}) then {

      _door = [_veh] call life_fnc_nearestDoor;

      if (_door isEqualTo 0) exitWith {hint localize "STR_House_Door_NotNear"};

      _locked = _veh getVariable [format ["bis_disabled_Door_%1",_door],0];

      if (_locked isEqualTo 0) then {

      _veh setVariable [format ["bis_disabled_Door_%1",_door],1,true];

      _veh animateSource [format ["Door_%1_source", _door], 0];

      systemChat localize "STR_House_Door_Lock";

      } else {

      _veh setVariable [format ["bis_disabled_Door_%1",_door],0,true];

      _veh animateSource [format ["Door_%1_source", _door], 1];

      systemChat localize "STR_House_Door_Unlock";

      };

      };

      } else {

      _locked = locked _veh;

      if (_veh in life_vehicles && {player distance _veh < 20}) then {

      if (_locked isEqualTo 2) then {

      if (local _veh) then {

      _veh lock 0;

      // BI

      _veh animateDoor ["door_back_R",1];

      _veh animateDoor ["door_back_L",1];

      _veh animateDoor ['door_R',1];

      _veh animateDoor ['door_L',1];

      _veh animateDoor ['Door_L_source',1];

      _veh animateDoor ['Door_rear',1];

      _veh animateDoor ['Door_rear_source',1];

      _veh animateDoor ['Door_1_source',1];

      _veh animateDoor ['Door_2_source',1];

      _veh animateDoor ['Door_3_source',1];

      _veh animateDoor ['Door_LM',1];

      _veh animateDoor ['Door_RM',1];

      _veh animateDoor ['Door_LF',1];

      _veh animateDoor ['Door_RF',1];

      _veh animateDoor ['Door_LB',1];

      _veh animateDoor ['Door_RB',1];

      _veh animateDoor ['DoorL_Front_Open',1];

      _veh animateDoor ['DoorR_Front_Open',1];

      _veh animateDoor ['DoorL_Back_Open',1];

      _veh animateDoor ['DoorR_Back_Open ',1];

      } else {

      [_veh,0] remoteExecCall ["life_fnc_lockVehicle",_veh];

      _veh animateDoor ["door_back_R",1];

      _veh animateDoor ["door_back_L",1];

      _veh animateDoor ['door_R',1];

      _veh animateDoor ['door_L',1];

      _veh animateDoor ['Door_L_source',1];

      _veh animateDoor ['Door_rear',1];

      _veh animateDoor ['Door_rear_source',1];

      _veh animateDoor ['Door_1_source',1];

      _veh animateDoor ['Door_2_source',1];

      _veh animateDoor ['Door_3_source',1];

      _veh animateDoor ['Door_LM',1];

      _veh animateDoor ['Door_RM',1];

      _veh animateDoor ['Door_LF',1];

      _veh animateDoor ['Door_RF',1];

      _veh animateDoor ['Door_LB',1];

      _veh animateDoor ['Door_RB',1];

      _veh animateDoor ['DoorL_Front_Open',1];

      _veh animateDoor ['DoorR_Front_Open',1];

      _veh animateDoor ['DoorL_Back_Open',1];

      _veh animateDoor ['DoorR_Back_Open ',1];

      };

      systemChat localize "STR_MISC_VehUnlock";

      [_veh,"unlockCarSound"] remoteExec ["life_fnc_say3D",RANY];

      } else {

      if (local _veh) then {

      _veh lock 2;

      _veh animateDoor ["door_back_R",0];

      _veh animateDoor ["door_back_L",0];

      _veh animateDoor ['door_R',0];

      _veh animateDoor ['door_L',0];

      _veh animateDoor ['Door_L_source',0];

      _veh animateDoor ['Door_rear',0];

      _veh animateDoor ['Door_rear_source',0];

      _veh animateDoor ['Door_1_source',0];

      _veh animateDoor ['Door_2_source',0];

      _veh animateDoor ['Door_3_source',0];

      _veh animateDoor ['Door_LM',0];

      _veh animateDoor ['Door_RM',0];

      _veh animateDoor ['Door_LF',0];

      _veh animateDoor ['Door_RF',0];

      _veh animateDoor ['Door_LB',0];

      _veh animateDoor ['Door_RB',0];

      _veh animateDoor ['DoorL_Front_Open',0];

      _veh animateDoor ['DoorR_Front_Open',0];

      _veh animateDoor ['DoorL_Back_Open',0];

      _veh animateDoor ['DoorR_Back_Open ',0];

      } else {

      [_veh,2] remoteExecCall ["life_fnc_lockVehicle",_veh];

      _veh animateDoor ["door_back_R",0];

      _veh animateDoor ["door_back_L",0];

      _veh animateDoor ['door_R',0];

      _veh animateDoor ['door_L',0];

      _veh animateDoor ['Door_L_source',0];

      _veh animateDoor ['Door_rear',0];

      _veh animateDoor ['Door_rear_source',0];

      _veh animateDoor ['Door_1_source',0];

      _veh animateDoor ['Door_2_source',0];

      _veh animateDoor ['Door_3_source',0];

      _veh animateDoor ['Door_LM',0];

      _veh animateDoor ['Door_RM',0];

      _veh animateDoor ['Door_LF',0];

      _veh animateDoor ['Door_RF',0];

      _veh animateDoor ['Door_LB',0];

      _veh animateDoor ['Door_RB',0];

      _veh animateDoor ['DoorL_Front_Open',0];

      _veh animateDoor ['DoorR_Front_Open',0];

      _veh animateDoor ['DoorL_Back_Open',0];

      _veh animateDoor ['DoorR_Back_Open ',0];

      };

      systemChat localize "STR_MISC_VehLock";

      [_veh,"lockCarSound"] remoteExec ["life_fnc_say3D",RANY];

      };

      };

      };

      };

      };

      };


      _handled;

      fn_keyHandler.sqf

    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 10:37
      • #6

      lad sie dir bitte einfach runter dieses textgedöns ist für sowas nicht geeignet :D

    • Rene Lerchberg
      Nerd
      Reaktionen
      167
      Trophäen
      8
      Beiträge
      562
      Dateien
      2
      Bilder
      82
      • 26. Januar 2019 um 10:37
      • #7

      bitte nächste mal die spoiler oder code funktion benutzen hm okay da scheint alles in ordnung

      Mit Freundlichen Grüßen

      Rene Lerchberg

      "Einzigartigkeit entsteht durch Perfektion"

      The-Programmer.com (Support & Translation)

    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 10:41
      • #8

      Okay ja sorry ist mein erster beitrag?

    • BlueType
      Nerd
      Reaktionen
      190
      Trophäen
      8
      Beiträge
      735
      Bilder
      27
      • 26. Januar 2019 um 11:09
      • #9

      actionkeyhandler bidde. Danke:)

      MFG ƁLƱΣƬΨƤΣ™

      :!:Hinweis:!:

      :!:Ich bin zwar erfahren mit der Sprache SQF, lerne trotzdem noch, definitiv kein Profi:!:

      Discord : ╲⎝⧹⎝ƁLƱΣƬΨƤΣ™⎠⧸⎠╱#0448

      Discord Server : https://discord.gg/K8KhAnE

      Teamspeak : ts.Endless-Net.de

    • Fabi4976
      Schüler
      Reaktionen
      6
      Trophäen
      7
      Beiträge
      133
      Dateien
      2
      • 26. Januar 2019 um 11:16
      • #10

      ich habs gefixt. hatte nur was falsch eingestellt.

      SORRY für die störung und noch danke an alle

      Einmal editiert, zuletzt von Fabi4976 (26. Januar 2019 um 12:22)

    Registrieren oder Einloggen

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

    Registrieren

    Tags

    • Arma3
    • Altis 5.0
    • windowsmenu
    • interaktion

    Benutzer online in diesem Thema

    • 3 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™