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
Do: 22 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

    [Codeschnipsel] Fade-IN Dialog by Lucian

      • Altis Life
    • Lucian
    • 29. Dezember 2016 um 12:40
    • Lucian
      Amateur
      Reaktionen
      172
      Trophäen
      11
      Beiträge
      204
      Bilder
      5
      • 29. Dezember 2016 um 12:40
      • #1

      Hallo NN,
      heute zeige ich euch meine neue Deathscreen GUI.
      Das Thema hier soll kein Tutorial werden, sondern euch nur zeigen, wie man eine GUI effektiv animieren kann und wie das dann aussehen kann.
      Aus diesem Zweck habe ich euch mal meinen Dialog und die dazugehörige Funktion mit in das Thema gepostet.
      Die fertige GUI sieht ungefähr so aus: ShadowOfKlon - DE100 NEW DEATH SCREEN IN ACTION V2 - Plays.tv
      Wichtig ist, dass es einige CTRLs gibt die man nicht animieren kann, bzw. die man nicht faden kann, wie z.B. die Map Ctrl.

      Mfg.
      Lucian

      PS:
      Das Thema habe ich in Alits Life/Tutorials erstellt, da die im Beitrag gepostete GUI sowie die Funktion für Altis Life entwickelt wurden. Sollte ein Moderator/Admin das Thema verschieben wollen, soll er das gerne machen.

      C: Dialog.hpp
      class Respawn_Screen
      {
      	idd = 7000;
      	movingEnabled = false;
      	enableSimulation = true;
      	onLoad = "(_this + [0,0]) spawn life_fnc_deathScreen;";
      	onKeyDown = "if((_this select 1) == 1) then {true;};";
      	class controlsBackground
      	{
      		class logo: RscPicture
      		{
      			idc = 1;
      			text = "images\ui\ui_logo_full.paa";
      			x = 0.412344 * safezoneW + safezoneX;
      			y = 0.181 * safezoneH + safezoneY;
      			w = 0.175313 * safezoneW;
      			h = 0.297 * safezoneH;
      		};
      		class BG: Life_RscText
      		{
      			idc = 2;
      			colorBackground[] = {0.9,0.9,0.9,0.85};
      			x = 0.386562 * safezoneW + safezoneX;
      			y = 0.412 * safezoneH + safezoneY;
      			w = 0.226875 * safezoneW;
      			h = 0.363 * safezoneH;
      		};
      	};
      	class Controls
      	{
      		class THR_COUNT: Life_RscText
      		{
      			idc = 3;
      			colorText[] = {0, 0, 0, 1};
      			colorShadow[] = {1, 1, 1, 0.2};
      			shadow = 1;
      			text = "THR-Mitglieder im Spiel: 1 Spieler"; //--- ToDo: Localize;
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.434 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.026 * safezoneH;
      			sizeEx = 0.026 * safeZoneH;
      		};
      		class THR_REQ: THR_COUNT
      		{
      			idc = 4;
      			text = "THR-Mitglied ist auf dem Weg: Nein"; //--- ToDo: Localize;
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.458 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.026 * safezoneH;
      		};
      		class RESPAWN_INFO: THR_COUNT
      		{
      			idc = 5;
      			style = 0x02;
      			text = "Respawn verfügbar in: 05:30"; //--- ToDo: Localize;
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.5 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.054 * safezoneH;
      			sizeEx = 0.033 * safeZoneH;
      		};
      		class RESPAWN_BTN: Life_RscButtonMenu
      		{
      			onButtonClick = "[findDisplay 7000,1,0] spawn life_fnc_deathScreen;";
      			idc = 6;
      			text = "Neues Leben"; //--- ToDo: Localize;
      			colorText[] = {0, 0, 0, 1};
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.566 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.055 * safezoneH;
      			size = 0.042 * safeZoneH;
      			colorBackground[] = {0,0,0,0};
      			colorBackgroundActive[] = {0,0,0,0};
      			colorDisabled[] = {0.5,0.5,0.5,1};
      			color[] = {0,0,0,1};
      			color2[] = {0,0,0,1};
      			colorFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])",1};
      			animTextureOver = "#(argb,8,8,3)color(0,0,0,0)";
      			animTextureFocused = "#(argb,8,8,3)color(0,0,0,0)";
      			animTexturePressed = "#(argb,8,8,3)color(0,0,0,0)";
      			animTextureDisabled = "#(argb,8,8,3)color(0.5,0.5,0.5,1)";
      			class Attributes : Attributes {
      				align = "center";
      			};
      		};
      		class THR_REQ_BTN: RESPAWN_BTN
      		{
      			idc = 7;
      			onButtonClick = "[0] call life_fnc_thrRequest;";
      			text = "THR rufen"; //--- ToDo: Localize;
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.632 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.055 * safezoneH;
      		};
      		class DISCONNECT: RESPAWN_BTN
      		{
      			idc = 8;
      			onButtonClick = "[findDisplay 7000,1,1] spawn life_fnc_deathScreen;";
      			text = "Verlassen"; //--- ToDo: Localize;
      			x = 0.391719 * safezoneW + safezoneX;
      			y = 0.698 * safezoneH + safezoneY;
      			w = 0.216563 * safezoneW;
      			h = 0.055 * safezoneH;
      		};
      	};
      };
      Alles anzeigen
      JavaScript: Funktion.sqf
      #include "..\..\script_macros.hpp"
      /*
      	File:	fn_deathScreen.sqf
      	Date:   2016-07-15 13:50:45
      	Author: Patrick "Lucian" Schmidt
      	Description:
      	Take a look for yourself.
      */
      
      
      
      
      #define FADEIN 0
      #define FADEOUT 1
      
      
      
      
      #define RESPAWN 0
      #define DISCONNECT 1
      #define REVIVED 2
      
      
      
      
      disableSerialization;
      params[
      	["_display", displayNull, [displayNull]],
      	["_mode", 0, [0]],
      	["_exit", 0, [0]],
      	"_ctrls",
      	"_handle",
      	"_confirm"
      ];
      if (_display getVariable ["exit",false]) exitwith {};
      _ctrls = allControls _display;
      switch (_mode) do { 
      	case FADEIN : {
      		life_deathScreen = true;
      		_handle = ppEffectCreate ["DynamicBlur", 401]; 
      		_handle ppEffectForceInNVG true;
      		_handle ppEffectEnable true; 
      		_handle ppEffectAdjust [4];
      		_handle ppEffectCommit 1.5;
      
      
      
      
      		_display setVariable ["Blur",_handle];
      
      
      
      
      		{
      			_x ctrlSetFade 1;
      			_x ctrlCommit 0;
      		} forEach _ctrls;
      
      
      
      
      		[] spawn {
      			disableSerialization;
      			private _display = findDisplay 7000;
      			private _time = time + (2 * 60);
      			private _called = false;
      			private _finished = false;
      			life_thr_request = false;
      			(_display displayCtrl 6) ctrlEnable false;
      			(_display displayCtrl 8) ctrlEnable false;
      			while {!isNull _display} do {
      				if (life_thr_request && !_called) then {
      					if (_time <= 0) then {
      						_time = time + (5*60);
      					} else {
      						_time = _time + (3*60);
      					};
      					_called = true;
      					_finished = false;
      				};
      				private _txt = if (!isNull (player getVariable ["thrClerk",objNull])) then {
      					"Ja";
      				} else {
      					"Nein";
      				};
      			  	(_display displayCtrl 3) ctrlSetText format["THR-Mitglieder im Spiel: %1 Spieler",{side _x isEqualTo independent && _x getVariable["isAlive",true]} count allPlayers];
      			  	(_display displayCtrl 4) ctrlSetText format["THR-Mitglied auf dem Weg: %1",_txt];
      			  	if (round(_time - time) > 0) then {
      			  		(_display displayCtrl 5) ctrlSetText format["Respawn verfügbar in: %1",[round(_time - time),"MM:SS"] call BIS_fnc_secondsToString];
      			  	} else {
      			  		if (!_finished) then {
      				  		(_display displayCtrl 5) ctrlSetText "Du kannst nun respawnen";
      						(_display displayCtrl 6) ctrlEnable true;
      						(_display displayCtrl 8) ctrlEnable true;
      						_finished = true;
      			  		};
      			  	};
      			  	if (!isNull ((missionNamespace getVariable["life_corpse",player]) getVariable ["reviver",objNull])) then {
      					(_display displayCtrl 5) ctrlSetText "Du wirst wiederbelebt...";
      					(_display displayCtrl 6) ctrlEnable false;
      					(_display displayCtrl 8) ctrlEnable false;
      					_finished = false;
      			  	};
      			  	uiSleep 1;
      			};
      		};
      		uiSleep 2;
      		{
      			_x ctrlSetFade 0;
      			_x ctrlCommit 1;
      			uiSleep 0.25;
      		} forEach _ctrls;
      	};
      	case FADEOUT : {
      		if (_display getVariable ["exit",false]) exitwith {};//DoubleCheck to be SURE that it cant be executed 2 times
      		_display setVariable ["exit",true];
      		reverse _ctrls;
      		{
      			_x ctrlSetFade 1;
      			_x ctrlCommit 1;
      			uiSleep 0.35;
      		} forEach _ctrls;
      		waitUntil {ctrlCommitted (_ctrls select (count _ctrls -1))};
      		uiSleep 0.3;
      		_handle = _display getVariable ["Blur",0];
      		_display closeDisplay 2;
      		switch (_exit) do {
      			case RESPAWN : {
      				life_respawned = true;
      				[] call life_fnc_spawnMenu;
      			}; 
      			case DISCONNECT : {
      				if (!isNil "_handle") then {
      					_handle ppEffectAdjust [0];
      					_handle ppEffectCommit 3;
      				};
      				life_firstSpawn = true;
      				bank_obj setVariable [(format["DE100_UID_%2_%1",(getPlayerUID player),playerSide]),nil,true];
      				if (!isNull (missionNamespace getVariable ["life_corpse",objNull])) then {
      					hideBody life_corpse;
      				};
      				[]spawn life_fnc_logout;
      				(findDisplay 49)closeDisplay 2;
      			};
      			case REVIVED : {
      				if (!isNil "_handle") then {
      					_handle ppEffectAdjust [0];
      					_handle ppEffectCommit 3;
      				};
      			};
      		};
      		life_deathScreen = false;
      		if (!isNil "_handle") then {
      			waitUntil {ppEffectCommitted _handle};
      			_handle ppEffectEnable false;
      			ppEffectDestroy _handle;
      		};
      	};
      };
      Alles anzeigen
    • Heinzelmaennchen
      Anfänger
      Reaktionen
      10
      Trophäen
      9
      Beiträge
      65
      • 29. Dezember 2016 um 13:36
      • #2

      Sehr schön!
      Deine Arbeit insgesamt gefällt mir und imponiert mir seit einiger Zeit! Scheint also, dass Ihr euch bei DE100 echt Mühe gebt!
      Aussagen beruhen sich nur auf das gesehene Video!

    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™