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
Fr: 18 Juli 2025
  • Anmelden oder registrieren
  • Suche
Alles
  • Alles
  • 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. Mitglieder
    3. sebel1

    Beiträge von sebel1

    • Medic System Erweiterung - mobile Sozialstation

      • sebel1
      • 21. Dezember 2015 um 13:30

      "Außerdem solltest du doch mal an deiner Kompetenz arbeiten"?

      Bitte? Ich glaube nicht, das Sie, dies beurteilen dürfen und können!

      Auch wenn Sie einiges an Wissen, in Sachen scripten haben, sollten Sie mit dieser Aussage vorsichtig umgehen.

      Da ich mich da persönlich angegriffen Fühle.

      Denkt dran, das ist ein Forum und sollte helfen.

    • Medic System Erweiterung - mobile Sozialstation

      • sebel1
      • 19. Dezember 2015 um 16:45

      Ich kann den Contianer kaufen, aber er ist nicht einsetzbar und der helicopter, keine kann nichts. Kann nicht drauf zugreifen.

    • Medic System Erweiterung - mobile Sozialstation

      • sebel1
      • 19. Dezember 2015 um 12:09

      So alles gemacht,

      natürlich nur um festzustellen, dass die Anleitung gut ist aber Fehler beinhaltet und nicht funktioniert. Sorry, aber keine Ahnung, warum das so ist. Bei mir geht diese Anleitung nicht. Und glaubt mir, ich bin nicht dumm oder versuche nur zu kopieren.

      Es funktioniert aber nicht.

    • [Tutorial] 2 Items zum Prozessen

      • sebel1
      • 17. Dezember 2015 um 18:39

      Hallo, ich habe es versucht einzubauen, aber bei 1% Verarbeiten bleibt er stehen und ich habe den Fehler leider nicht gefunden. Leider

    • [Tutorial] Drogeneffekte + Überdosis und Abhängig

      • sebel1
      • 12. Dezember 2015 um 13:28

      Sorry, falsches script, das ist das richtige.

      Code
      #include <macro.h>
      /*
      	File: fn_actionKeyHandler.sqf
      	Author: Bryan "Tonic" Boardwine
      
      	Description:
      	Master action key handler, handles requests for picking up various items and
      	interacting with other players (Cops = Cop Menu for unrestrain,escort,stop escort, arrest (if near cop hq), etc).
      */
      private["_curTarget","_isWater"];
      _curTarget = cursorTarget;
      if(life_action_inUse) exitWith {}; //Action is in use, exit to prevent spamming.
      if(life_action_gathering) exitWith {};
      if(life_interrupted) exitWith {life_interrupted = false;};
      _isWater = surfaceIsWater (visiblePositionASL player);
      
      
      
      
      //Check if the player is near an ATM.
      if((call life_fnc_nearATM) && {!dialog}) exitWith {
      	[] call life_fnc_atmMenu;
      };
      
      
      
      
      if(isNull _curTarget) exitWith {
      	if(_isWater) then {
      		private "_fish";
      		_fish = (nearestObjects[visiblePosition player,["Fish_Base_F"],3]) select 0;
      		if(!isNil "_fish") then {
      			[_fish] call life_fnc_catchFish;
      		};
      	} else {
      		if(playerSide == civilian && !life_action_gathering) then {
      			_handle = [] spawn life_fnc_gather;
      			waitUntil {scriptDone _handle};
      			life_action_gathering = false;
      		};
      	};
      };
      
      
      
      
      
      
      
      if(!alive _curTarget && _curTarget isKindOf "Animal" && !(EQUAL((typeOf _curTarget),"Turtle_F"))) exitWith {
      	[_curTarget] call life_fnc_gutAnimal;
      };
      
      
      
      
      if(_curTarget isKindOf "House_F" && {player distance _curTarget < 12} OR ((nearestObject [[16019.5,16952.9,0],"Land_Dome_Big_F"]) == _curTarget OR (nearestObject [[16019.5,16952.9,0],"Land_Research_house_V1_F"]) == _curTarget)) exitWith {
      	[_curTarget] call life_fnc_houseMenu;
      };
      
      
      
      
      if(dialog) exitWith {}; //Don't bother when a dialog is open.
      if(vehicle player != player) exitWith {}; //He's in a vehicle, cancel!
      life_action_inUse = true;
      
      
      
      
      //Temp fail safe.
      [] spawn {
      	sleep 60;
      	life_action_inUse = false;
      };
      
      
      
      
      //Check if it's a dead body.
      if(_curTarget isKindOf "Man" && {!alive _curTarget} && {playerSide in [west,independent]}) exitWith {
      	//Hotfix code by ins0
      	if(((playerSide == blufor && {(EQUAL(LIFE_SETTINGS(getNumber,"revive_cops"),1))}) || playerSide == independent) && {"Medikit" in (items player)}) then {
      		[_curTarget] call life_fnc_revivePlayer;
      	};
      };
      
      
      
      
      
      
      
      //If target is a player then check if we can use the cop menu.
      if(isPlayer _curTarget && _curTarget isKindOf "Man") then {
      	if((_curTarget GVAR ["restrained",false]) && !dialog && playerSide == west) then {
      		[_curTarget] call life_fnc_copInteractionMenu;
      	};
      } else {
      	//OK, it wasn't a player so what is it?
      	private["_isVehicle","_miscItems","_money","_list"];
      
      	_list = ["landVehicle","Ship","Air"];
      	_isVehicle = if(KINDOF_ARRAY(_curTarget,_list)) then {true} else {false};
      	_miscItems = ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F","Land_Suitcase_F"];
      	_animalTypes = ["Salema_F","Ornate_random_F","Mackerel_F","Tuna_F","Mullet_F","CatShark_F","Turtle_F"];
      	_money = "Land_Money_F";
      
      	//It's a vehicle! open the vehicle interaction key!
      	if(_isVehicle) then {
      		if(!dialog) then {
      			if(player distance _curTarget < SEL(SEL(boundingBox _curTarget,1),0)+2) then {
      				[_curTarget] call life_fnc_vInteractionMenu;
      			};
      		};
      	} else {
      		//Is it a animal type?
      		if((typeOf _curTarget) in _animalTypes) then {
      			if(EQUAL((typeOf _curTarget),"Turtle_F") && !alive _curTarget) then {
      				private "_handle";
      				_handle = [_curTarget] spawn life_fnc_catchTurtle;
      				waitUntil {scriptDone _handle};
      			} else {
      				private "_handle";
      				_handle = [_curTarget] spawn life_fnc_catchFish;
      				waitUntil {scriptDone _handle};
      			};
      		} else {
      			//OK, it wasn't a vehicle so let's see what else it could be?
      			if((typeOf _curTarget) in _miscItems) then {
      				[[_curTarget,player,false],"TON_fnc_pickupAction",false,false,true] call life_fnc_MP;
      			} else {
      				//It wasn't a misc item so is it money?
      				if(EQUAL((typeOf _curTarget),_money) && {!(_curTarget GVAR ["inUse",false])}) then {
      					[[_curTarget,player,true],"TON_fnc_pickupAction",false,false,true] call life_fnc_MP;
      				};
      
      			};
      		};
      	};
      };
      Alles anzeigen
    • [Tutorial] Drogeneffekte + Überdosis und Abhängig

      • sebel1
      • 12. Dezember 2015 um 13:10

      Ich habe es aber wieder rausgenommen, da es ja in dem Momemt keinen Sinn gemacht hat, wenn man andere Dinge dann nicht tätigen kann.

      Code
      #include <macro.h>
      /*
      	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 = SEL(_this,0);
      _code = SEL(_this,1);
      _shift = SEL(_this,2);
      _ctrlKey = SEL(_this,3);
      _alt = SEL(_this,4);
      _speed = speed cursorTarget;
      _handled = false;
      
      
      
      
      _interactionKey = if((EQUAL(count (actionKeys "User10"),0))) then {219} else {(actionKeys "User10") select 0};
      _mapKey = SEL(actionKeys "ShowMap",0);
      //hint str _code;
      _interruptionKeys = [17,30,31,32]; //A,S,W,D
      
      
      
      
      //Vault handling...
      if((_code in (actionKeys "GetOver") || _code in (actionKeys "salute")) && {(player GVAR ["restrained",false])}) 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(!(EQUAL(count (actionKeys "User10"),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;
      };
      
      
      
      
      switch (_code) do {
      	//Space key for Jumping
      	case 57: {
      		if(isNil "jumpActionTime") then {jumpActionTime = 0;};
      		if(_shift && {!(EQUAL(animationState player,"AovrPercMrunSrasWrflDf"))} && {isTouchingGround player} && {EQUAL(stance player,"STAND")} && {speed player > 2} && {!life_is_arrested} && {SEL((velocity player),2) < 2.5} && {time - jumpActionTime > 1.5}) then {
      			jumpActionTime = time; //Update the time.
      			[player,true] spawn life_fnc_jumpFnc; //Local execution
      			[[player,false],"life_fnc_jumpFnc",nil,FALSE] call life_fnc_MP; //Global execution 
      			_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;}};
      		};
      	};
      
      	//Holster / recall weapon.
      	case 35: {
      		if(_shift && !_ctrlKey && !(EQUAL(currentWeapon player,""))) then {
      			life_curWep_h = currentWeapon player;
      			player action ["SwitchWeapon", player, player, 100];
      			player switchCamera cameraView;
      		};
      
      		if(!_shift && _ctrlKey && !isNil "life_curWep_h" && {!(EQUAL(life_curWep_h,""))}) then {
      			if(life_curWep_h in [RIFLE,LAUNCHER,PISTOL]) 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 or robbing (Shift + R)
      	case 19:
      	{
      		if(_shift) then {_handled = true;};
      		if(_shift && playerSide == west && !isNull cursorTarget && cursorTarget isKindOf "Man" && (isPlayer cursorTarget) && (side cursorTarget == civilian) && alive cursorTarget && cursorTarget distance player < 3.5 && !(cursorTarget GVAR "Escorting") && !(cursorTarget GVAR "restrained") && speed cursorTarget < 1) then
      		{
      			[] call life_fnc_restrainAction;
      		};
      
      		//Robbing
      		if(_shift && playerSide == civilian && !isNull cursorTarget && cursorTarget isKindOf "Man" && isPlayer cursorTarget && alive cursorTarget && cursorTarget distance player < 4 && speed cursorTarget < 1) then
      		{
      			if((animationState cursorTarget) != "Incapacitated" && (currentWeapon player == RIFLE OR currentWeapon player == PISTOL) && currentWeapon player != "" && !life_knockout && !(player GVAR["restrained",false]) && !life_istazed && !(player GVAR["surrender",false])) then
      			{
      				[cursorTarget] spawn life_fnc_knockoutAction;
      			};
      			_handled = true;
      		};
      	};
      
      	//Shift + G (surrender)
      	case 34:
      	{
      		if(_shift) then {_handled = true;};
      
      
      
      
      		if (_shift) then
      		{
      			if (vehicle player == player && !(player GVAR ["restrained", false]) && (animationState player) != "Incapacitated" && !life_istazed) then
      			{
      				if (player GVAR ["surrender", false]) then
      				{
      					player SVAR ["surrender", false, true];
      				} else
      				{
      					[] spawn life_fnc_surrender;
      				};
      			};
      		};
      	};
      
      	case 20:
      	{
      		if(!_alt && !_ctrlKey) then
      		{
      			if(vehicle player != player && alive vehicle player) then
      			{
      				if((vehicle player) in life_vehicles) then
      				{
      					[vehicle player] spawn life_fnc_openInventory;
      				};
      			}
      				else
      			{
      				if((cursorTarget isKindOf "Land_Wreck_Traw_F" OR cursorTarget isKindOf "Land_Wreck_Traw2_F" OR cursorTarget isKindOf "Car" OR cursorTarget isKindOf "Air" OR cursorTarget isKindOf "Ship" OR cursorTarget isKindOf "House_F") && player distance cursorTarget < 10 && vehicle player == player && alive cursorTarget) then
      				{
      					if(cursorTarget in life_vehicles OR {!(cursorTarget getVariable ["locked",true])}) then
      					{
      						[cursorTarget] spawn life_fnc_openInventory;
      					};
      					if (cursorTarget isKindOf "Land_Wreck_Traw_F" OR cursorTarget isKindOf "Land_Wreck_Traw2_F") then {
      						[cursorTarget] spawn life_fnc_openInventory;
      					};
      				};
      			};
      		};
      	};
      
      	//L Key?
      	case 38: {
      		//If cop run checks for turning lights on.
      		if(_shift && playerSide in [west,independent]) then {
      			if(vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F"]) then {
      				if(!isNil {vehicle player GVAR "lights"}) then {
      					if(playerSide == 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; };
      	};
      
      	//Shift+O = Faded Sound
      	case 24:
      	{
      		if(_shift) then
      		{
      			[] call life_fnc_fadeSound;
      			_handled = true;
      		};
      	};
      
      	//Y Player Menu
      	case 21: {
      		if(!_alt && !_ctrlKey && !dialog && !life_is_processing) 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 GVAR "siren"}) then {_veh SVAR ["siren",false,true];};
      			if((_veh GVAR "siren")) then {
      				titleText [localize "STR_MISC_SirensOFF","PLAIN"];
      				_veh SVAR ["siren",false,true];
      			} else {
      				titleText [localize "STR_MISC_SirensON","PLAIN"];
      				_veh SVAR ["siren",true,true];
      				if(playerSide == west) then {
      					[[_veh],"life_fnc_copSiren",nil,true] call life_fnc_MP;
      				} else {
      					//I do not have a custom sound for this and I really don't want to go digging for one, when you have a sound uncomment this and change medicSiren.sqf in the medical folder.
      					//[[_veh],"life_fnc_medicSiren",nil,true] call life_fnc_MP;
      				};
      			};
      		};
      	};
      
      	//U Key
      	case 22: {
      		if(!_alt && !_ctrlKey) then {
      			if(vehicle player == player) then {
      				_veh = cursorTarget;
      			} else {
      				_veh = vehicle player;
      			};
      
      			if(_veh isKindOf "House_F" && (playerSide == civilian || playerSide == east)) then {
      				if(_veh in life_vehicles && player distance _veh < 8) then {
      					_door = [_veh] call life_fnc_nearestDoor;
      					if(EQUAL(_door,0)) exitWith {hint localize "STR_House_Door_NotNear"};
      					_locked = _veh GVAR [format["bis_disabled_Door_%1",_door],0];
      
      					if(EQUAL(_locked,0)) then {
      						_veh SVAR [format["bis_disabled_Door_%1",_door],1,true];
      						_veh animate [format["door_%1_rot",_door],0];
      						systemChat localize "STR_House_Door_Lock";
      					} else {
      						_veh SVAR [format["bis_disabled_Door_%1",_door],0,true];
      						_veh animate [format["door_%1_rot",_door],1];
      						systemChat localize "STR_House_Door_Unlock";
      					};
      				};
      			} else {
      				_locked = locked _veh;
      				if(_veh in life_vehicles && player distance _veh < 8) then {
      					if(_locked == 2) then {
      						if(local _veh) then {
      							_veh lock 0;
      							_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_rear',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];
      						} else {
      							[[_veh,0],"life_fnc_lockVehicle",_veh,false] spawn life_fnc_MP;
      							_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_rear',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];
      						};
      						hint composeText [ image "icons\unlock.paa", "  Fahrzeug aufgeschlossen" ];
      						player say3D "unlock";
      						systemChat localize "STR_MISC_VehUnlock";
      					} 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_rear',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];
      						} else {
      							[[_veh,2],"life_fnc_lockVehicle",_veh,false] spawn life_fnc_MP;
      							_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_rear',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];
      						};	
      						hint composeText [ image "icons\lock.paa", "  Fahrzeug abgeschlossen" ];
      						player say3D "car_lock";
      						systemChat localize "STR_MISC_VehLock";
      					};
      				};
      			};
      		};
      	};
      };
      _handled;
      Alles anzeigen
    • [Tutorial] Drogeneffekte + Überdosis und Abhängig

      • sebel1
      • 12. Dezember 2015 um 12:11

      Hallo, sobald ich dies im Keyhandler eintrage, kann ich nichts mehr mit der Win Taste machen, Reparieren usw,

      Code
      else
          {
              if(playerSide == independent) then
              {
                  if(_curTarget getVariable["restrained",false]&& (!(player getVariable "restrained"))) then
                  {
                      if(!dialog) then
                      {
                          [_curTarget] call life_fnc_pInteraction_med;
                      }
                      else
                      {
                          hint "Es wird bereits ein Dialog angezeigt.";
                      };
                  }
                  else
                  {
                      hint "Der andere Spieler muss gefesselt sein.";
                      sleep 3;
                      hint "Oder Sie sind gefesselt!";
                  };
          };
      Alles anzeigen


      Warum ist dies so? Wo liegt mein Fehler. Altis 4.0

    • Update 3.1.4.7 auf 3.1.4.8

      • sebel1
      • 16. November 2015 um 17:44

      Hallo, ich versuche einen weg zu finden, so das ich Altis auf 3.1.4.8 bekomme.
      Leider ist mir dies noch nicht gelungen, weis da jemand was oder sehe ich das falsch.
      Weis nicht, wie dies geht. Bitte um Hilfe.

      Danke

    Registrieren oder Einloggen

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

    Registrieren

    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™