Hi NN-Community,
ich möchte gerne, dass im Ladebildschirm bei unserem Fall jetzt nicht mehr die Map Altis angezeigt wird sondern ein Custom Bild, wisst ihr wie dass geht?
Hi NN-Community,
ich möchte gerne, dass im Ladebildschirm bei unserem Fall jetzt nicht mehr die Map Altis angezeigt wird sondern ein Custom Bild, wisst ihr wie dass geht?
Das UI modden geht durchaus.
Das UI modden geht durchaus.
Und wie?
So hatte Exile es mal gemacht:
Bevor du loslegst und selbst soetwas einbauen möchtest, lese dir bitte das Kommentar des Devs durch
/**
* Pre-Start
*
* Exile Mod
* www.exilemod.com
* © 2015 Exile Mod Team
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
*
* --------------------------
*
* Eichi:
* Do not use "with uiNameSpace do" here or you will collect mini dumps.
* Also, do not call or spawn shit here. Serialization does not work. FSMs
* are not executed at all. onEachFrame never fires. onDraw does not fire.
* onLoad fires for all, onUnload only fires for some. And CT_ANIMATED_TEXTURE
* looks ugly. If I ever have to touch this again, I will kill myself.
*
*/
if !(hasInterFace) exitWith {false};
///////////////////////////////////////////////////////////////////////////////
// Reset loading screen data
///////////////////////////////////////////////////////////////////////////////
uiNameSpace setVariable ["ExileClient_gui_loadingScreen_reset",
{
uiNameSpace setVariable ["ExileLoadingScreenBackgroundPicture", nil];
uiNameSpace setVariable ["ExileLoadingScreenMapData", nil];
uiNameSpace setVariable ["ExileLoadingScreenMissionData", nil];
uiNameSpace setVariable ["ExileClientLoadingScreenDisplays", nil];
uiNameSpace setVariable ["RscDisplayLoading_display", nil];
}];
///////////////////////////////////////////////////////////////////////////////
// Constructor of our loading screen
//
// Eichi: Careful! Passing the display to call or spawn DOES NOT WORK!
// I had this split into multiple functions, but serializing them is
// obivously not possible. Means we have a big booty functio now :(
///////////////////////////////////////////////////////////////////////////////
uiNameSpace setVariable ["ExileClient_gui_loadingScreen_load",
{
disableSerialization;
private ["_spinnerTextControl", "_newsControl", "_cookie", "_cookieAlphabet", "_loadingText"];
params ["_display", "_displayType"];
// Seems to be required so the core engine functions work
uiNameSpace setVariable ["RscDisplayLoading_display", _display];
// So BIS_fnc_progressLoadingScreen works
RscDisplayLoading_progress = (_display displayCtrl 104);
// Update the text to either loading map or mission
_spinnerTextControl = _display displayCtrl 66002;
switch (_displayType) do
{
case "RscDisplayMultiplayerSetup":
{
_spinnerTextControl ctrlSetStructuredText (parseText "<t>Joining...</t>");
};
case "RscDisplayClient":
{
_spinnerTextControl ctrlSetStructuredText (parseText "<t>Connecting...</t>");
};
default
{
_loadingText = selectRandom
[
"<t>Hiding treasures...</t>",
"<t>Shaving sheep...</t>",
"<t>Even more loading...</t>",
"<t>Still loading...</t>",
"<t>Ironing Bambi overalls...</t>",
"<t>And even more loading...</t>",
"<t>Loading something...</t>",
"<t>Counting pop tabs...</t>",
"<t>Spawning land fish...</t>",
"<t>Doing something...</t>",
"<t>Sprinkling salt...</t>",
"<t>Trying to not crash...</t>",
"<t>Booting 8G Network...</t>",
"<t>Forecasting weather...</t>",
"<t>Planting trees...</t>",
"<t>Planting shrubberies of death...",
"<t>Counting bugs...",
"<t>Sing me a song and I will load faster...</t>",
"<t>Hiding loot...</t>",
"<t>Blowing up vehicles...</t>",
"<t>Locating campers...</t>"
];
_spinnerTextControl ctrlSetStructuredText (parseText _loadingText);
};
};
///////////////////////////////////////////////////////////////////////////
private ["_backgroundPicture", "_backgroundPictureControl"];
// If we do not have a background image yet, choose a random one
_backgroundPicture = uiNameSpace getVariable ["ExileLoadingScreenBackgroundPicture", false];
// Update the background picture. This is not needed to be done
// in the loop below, since onLoad fires at least once for all
// of them and the background image does not depend on mission
// or map info
if (_backgroundPicture isEqualTo false) then
{
_backgroundPicture = selectRandom
[
"exile_assets\texture\loading\loading_axe_co.paa",
"exile_assets\texture\loading\loading_bigmomma_co.paa",
"exile_assets\texture\loading\loading_cement_co.paa",
"exile_assets\texture\loading\loading_cheathas_co.paa",
"exile_assets\texture\loading\loading_cockonut_co.paa",
"exile_assets\texture\loading\loading_codelock_co.paa",
"exile_assets\texture\loading\loading_concrete_mixer_co.paa",
"exile_assets\texture\loading\loading_dsnuts_co.paa",
"exile_assets\texture\loading\loading_emre_co.paa",
"exile_assets\texture\loading\loading_flag_co.paa",
"exile_assets\texture\loading\loading_foolbox_co.paa",
"exile_assets\texture\loading\loading_knife_co.paa",
"exile_assets\texture\loading\loading_laptop_co.paa",
"exile_assets\texture\loading\loading_metal_screws_co.paa",
"exile_assets\texture\loading\loading_moobar_co.paa",
"exile_assets\texture\loading\loading_pop_tabs_co.paa",
"exile_assets\texture\loading\loading_raisins_co.paa",
"exile_assets\texture\loading\loading_shovel_co.paa",
"exile_assets\texture\loading\loading_sledge_hammer_co.paa",
"exile_assets\texture\loading\loading_vishpirin_co.paa"
];
uiNameSpace setVariable ["ExileLoadingScreenBackgroundPicture", _backgroundPicture];
};
_backgroundPictureControl = _display displayCtrl 66000;
_backgroundPictureControl ctrlSetText _backgroundPicture;
///////////////////////////////////////////////////////////////////////////
private ["_mapData", "_mapConfig", "_mapName", "_mapAuthor", "_mapPicture"];
private ["_mapControl", "_mapNameControl", "_mapAuthorControl", "_mapPictureControl"];
// Do we have map data already?
_mapData = uiNameSpace getVariable ["ExileLoadingScreenMapData", false];
if (_mapData isEqualTo false) then
{
// Is a map there now?
if !(worldName in ["", "VR"]) then
{
// Do not save "VR" / background intro mission
if !(_displayType isEqualTo "RscMPSetupMessage") then
{
// Access the map config
_mapConfig = configFile >> "CfgWorlds" >> worldName;
// Get the map name
_mapName = getText (_mapConfig >> "description");
// Fall back to the config name of this map
if (_mapName isEqualTo "") then
{
_mapName = worldName;
};
// Extract the map author...
_mapAuthor = getText (_mapConfig >> "author");
// ...or default to "Unknown Community Author"
if (_mapAuthor isEqualTo "") then
{
_mapAuthor = localize "STR_AUTHOR_UNKNOWN";
};
// Update the map picture
_mapPicture = getText (_mapConfig >> "pictureShot");
// Because VR is utterly broken. It only has a white image
if (_mapPicture isEqualTo "A3\Map_VR\data\ui_VR_ca.paa") then
{
_mapPicture = "";
};
if (_mapPicture isEqualTo "") then
{
_mapPicture = getText (_mapConfig >> "pictureMap");
};
// Default to Arma 3 logo if there is no map picture
if (_mapPicture isEqualTo "") then
{
_mapPicture = "a3\ui_f\data\Logos\arma3_white_ca.paa"
};
// Tanoa does not have a good pictureMap
if (worldName isEqualTo "Tanoa") then
{
_mapPicture = "exile_assets\texture\map\tanoa_co.paa"
};
// Save the map data for later use
_mapData =
[
_mapName,
_mapAuthor,
_mapPicture
];
uiNameSpace setVariable ["ExileLoadingScreenMapData", _mapData];
};
};
};
///////////////////////////////////////////////////////////////////////////
private ["_missionData", "_missionName", "_missionAuthor", "_missionPicture"];
private ["_missionControl", "_missionPictureControl", "_missionNameControl", "_missionAuthorControl"];
_missionData = uiNameSpace getVariable ["ExileLoadingScreenMissionData", false];
// If we do not have a mission data, try to extract it
if (_missionData isEqualTo false) then
{
// Ignore these missions...
if !(missionName in ["", "tempMissionSP", "ExileIntro"]) then
{
// Get the defined mission name or briefing name
_missionName = getMissionConfigValue ["onLoadName", briefingName];
// If there is no mission name, use "Unnamed Mission"
if (_missionName isEqualTo "") then
{
_missionName = localize "STR_a3_rscdisplay_loading_noname";
};
// Get the defined mission author or "Unknown Community Author"
_missionAuthor = getMissionConfigValue ["author", localize "STR_AUTHOR_UNKNOWN"];
// Try to get a community logo first
_missionPicture = getText (missionConfigFile >> "loadScreen");
// If there is no community logo, try another, older property
if (_missionPicture isEqualTo "") then
{
_missionPicture = getText (missionConfigFile >> "overviewPicture");
};
// If that still is not defined, use our logo
if (_missionPicture isEqualTo "") then
{
_missionPicture = "exile_assets\texture\mod\logo.paa";
};
// Keep this in mind :D
_missionData =
[
_missionName,
_missionAuthor,
_missionPicture
];
// Store the data so we can access it later (where missionConfig is not there)
uiNameSpace setVariable ["ExileLoadingScreenMissionData", _missionData];
};
};
///////////////////////////////////////////////////////////////////////////
// Keep all involved displays in mind. onLoad does not fire
// for all of them. "Receiving data..." for example never has
// a onLoad...
_loadingDisplays = uiNameSpace getVariable ["ExileClientLoadingScreenDisplays", []];
_loadingDisplays pushBackUnique _display;
{
if !(isNull _x) then
{
// Update the map info
_mapControl = _x displayCtrl 66003;
if (_mapData isEqualTo false) then
{
// Hide the map, if we lack data
_mapControl ctrlShow false;
}
else
{
// Show the map data
_mapControl ctrlShow true;
// Update the map name
_mapNameControl = _x displayCtrl 66005;
_mapNameControl ctrlSetText (_mapData select 0);
// Update the map author
_mapAuthorControl = _x displayCtrl 66006;
_mapAuthorControl ctrlSetText (_mapData select 1);
// Update the map picture
_mapPictureControl = _x displayCtrl 66004;
_mapPictureControl ctrlSetText (_mapData select 2);
};
// Update the mission info
_missionControl = _x displayCtrl 66007;
// If we do not have mission data, hide the mission
if (_missionData isEqualTo false) then
{
_missionControl ctrlShow false;
}
else
{
// Ensure it is shown if we have data
_missionControl ctrlShow true;
// Update the name
_missionNameControl = _x displayCtrl 66009;
_missionNameControl ctrlSetText (_missionData select 0);
// Update the author
_missionAuthorControl = _x displayCtrl 66010;
_missionAuthorControl ctrlSetText (_missionData select 1);
// Update the picture
_missionPictureControl = _x displayCtrl 66008;
_missionPictureControl ctrlSetText (_missionData select 2);
};
};
}
forEach _loadingDisplays;
uiNameSpace setVariable ["ExileClientLoadingScreenDisplays", _loadingDisplays];
}];
///////////////////////////////////////////////////////////////////////////////
// A spawned thread to animate the spinning wheel of our loading screen
//
// -----
//
//_animationThread = uiNameSpace getVariable ["ExileLoadingScreenSpinnerThread", scriptNull];
//
// if (isNull _animationThread) then
// {
// // We cannot pass _spinner here :(
// _animationThread = [] spawn (uiNameSpace getVariable ["ExileClient_gui_animateLoadingScreen", scriptNull]);
//
// uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", _animationThread];
// };
//
// uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", _animationThread];
///////////////////////////////////////////////////////////////////////////////
uiNameSpace setVariable ["ExileClient_gui_loadingScreen_animate",
{
disableSerialization;
private ["_spinner", "_startTime"];
_spinner = (uiNameSpace getVariable ["RscExileLoadingScreen", controlNull]) displayCtrl 66001;
_startTime = diag_tickTime;
while {true} do // until terminate on unload fires
{
_spinner ctrlSetAngle [(diag_tickTime - _startTime) * 360, 0.5, 0.5];
// 1/60 results in underflow = the spinner lags
// minimum in Arma is 3ms, but this works:
uiSleep 0.016;
};
}];
///////////////////////////////////////////////////////////////////////////////
// Deconstruct the loading screen
///////////////////////////////////////////////////////////////////////////////
uiNameSpace setVariable ["ExileClient_gui_loadingScreen_unload",
{
disableSerialization;
private ["_animationThread"];
_animationThread = uiNameSpace getVariable ["ExileLoadingScreenSpinnerThread", scriptNull];
if !(isNull _animationThread) then
{
terminate _animationThread;
uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", scriptNull]
};
}];
true
Alles anzeigen
EDIT:
Das ganze muss als Funktion mit
in der Config eingetragen werden.
So hatte Exile es mal gemacht:
Bevor du loslegst und selbst soetwas einbauen möchtest, lese dir bitte das Kommentar des Devs durch
C: exile_client/bootstrap/fn_preStart.sqf Alles anzeigen/** * Pre-Start * * Exile Mod * www.exilemod.com * © 2015 Exile Mod Team * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. * * -------------------------- * * Eichi: * Do not use "with uiNameSpace do" here or you will collect mini dumps. * Also, do not call or spawn shit here. Serialization does not work. FSMs * are not executed at all. onEachFrame never fires. onDraw does not fire. * onLoad fires for all, onUnload only fires for some. And CT_ANIMATED_TEXTURE * looks ugly. If I ever have to touch this again, I will kill myself. * */ if !(hasInterFace) exitWith {false}; /////////////////////////////////////////////////////////////////////////////// // Reset loading screen data /////////////////////////////////////////////////////////////////////////////// uiNameSpace setVariable ["ExileClient_gui_loadingScreen_reset", { uiNameSpace setVariable ["ExileLoadingScreenBackgroundPicture", nil]; uiNameSpace setVariable ["ExileLoadingScreenMapData", nil]; uiNameSpace setVariable ["ExileLoadingScreenMissionData", nil]; uiNameSpace setVariable ["ExileClientLoadingScreenDisplays", nil]; uiNameSpace setVariable ["RscDisplayLoading_display", nil]; }]; /////////////////////////////////////////////////////////////////////////////// // Constructor of our loading screen // // Eichi: Careful! Passing the display to call or spawn DOES NOT WORK! // I had this split into multiple functions, but serializing them is // obivously not possible. Means we have a big booty functio now :( /////////////////////////////////////////////////////////////////////////////// uiNameSpace setVariable ["ExileClient_gui_loadingScreen_load", { disableSerialization; private ["_spinnerTextControl", "_newsControl", "_cookie", "_cookieAlphabet", "_loadingText"]; params ["_display", "_displayType"]; // Seems to be required so the core engine functions work uiNameSpace setVariable ["RscDisplayLoading_display", _display]; // So BIS_fnc_progressLoadingScreen works RscDisplayLoading_progress = (_display displayCtrl 104); // Update the text to either loading map or mission _spinnerTextControl = _display displayCtrl 66002; switch (_displayType) do { case "RscDisplayMultiplayerSetup": { _spinnerTextControl ctrlSetStructuredText (parseText "<t>Joining...</t>"); }; case "RscDisplayClient": { _spinnerTextControl ctrlSetStructuredText (parseText "<t>Connecting...</t>"); }; default { _loadingText = selectRandom [ "<t>Hiding treasures...</t>", "<t>Shaving sheep...</t>", "<t>Even more loading...</t>", "<t>Still loading...</t>", "<t>Ironing Bambi overalls...</t>", "<t>And even more loading...</t>", "<t>Loading something...</t>", "<t>Counting pop tabs...</t>", "<t>Spawning land fish...</t>", "<t>Doing something...</t>", "<t>Sprinkling salt...</t>", "<t>Trying to not crash...</t>", "<t>Booting 8G Network...</t>", "<t>Forecasting weather...</t>", "<t>Planting trees...</t>", "<t>Planting shrubberies of death...", "<t>Counting bugs...", "<t>Sing me a song and I will load faster...</t>", "<t>Hiding loot...</t>", "<t>Blowing up vehicles...</t>", "<t>Locating campers...</t>" ]; _spinnerTextControl ctrlSetStructuredText (parseText _loadingText); }; }; /////////////////////////////////////////////////////////////////////////// private ["_backgroundPicture", "_backgroundPictureControl"]; // If we do not have a background image yet, choose a random one _backgroundPicture = uiNameSpace getVariable ["ExileLoadingScreenBackgroundPicture", false]; // Update the background picture. This is not needed to be done // in the loop below, since onLoad fires at least once for all // of them and the background image does not depend on mission // or map info if (_backgroundPicture isEqualTo false) then { _backgroundPicture = selectRandom [ "exile_assets\texture\loading\loading_axe_co.paa", "exile_assets\texture\loading\loading_bigmomma_co.paa", "exile_assets\texture\loading\loading_cement_co.paa", "exile_assets\texture\loading\loading_cheathas_co.paa", "exile_assets\texture\loading\loading_cockonut_co.paa", "exile_assets\texture\loading\loading_codelock_co.paa", "exile_assets\texture\loading\loading_concrete_mixer_co.paa", "exile_assets\texture\loading\loading_dsnuts_co.paa", "exile_assets\texture\loading\loading_emre_co.paa", "exile_assets\texture\loading\loading_flag_co.paa", "exile_assets\texture\loading\loading_foolbox_co.paa", "exile_assets\texture\loading\loading_knife_co.paa", "exile_assets\texture\loading\loading_laptop_co.paa", "exile_assets\texture\loading\loading_metal_screws_co.paa", "exile_assets\texture\loading\loading_moobar_co.paa", "exile_assets\texture\loading\loading_pop_tabs_co.paa", "exile_assets\texture\loading\loading_raisins_co.paa", "exile_assets\texture\loading\loading_shovel_co.paa", "exile_assets\texture\loading\loading_sledge_hammer_co.paa", "exile_assets\texture\loading\loading_vishpirin_co.paa" ]; uiNameSpace setVariable ["ExileLoadingScreenBackgroundPicture", _backgroundPicture]; }; _backgroundPictureControl = _display displayCtrl 66000; _backgroundPictureControl ctrlSetText _backgroundPicture; /////////////////////////////////////////////////////////////////////////// private ["_mapData", "_mapConfig", "_mapName", "_mapAuthor", "_mapPicture"]; private ["_mapControl", "_mapNameControl", "_mapAuthorControl", "_mapPictureControl"]; // Do we have map data already? _mapData = uiNameSpace getVariable ["ExileLoadingScreenMapData", false]; if (_mapData isEqualTo false) then { // Is a map there now? if !(worldName in ["", "VR"]) then { // Do not save "VR" / background intro mission if !(_displayType isEqualTo "RscMPSetupMessage") then { // Access the map config _mapConfig = configFile >> "CfgWorlds" >> worldName; // Get the map name _mapName = getText (_mapConfig >> "description"); // Fall back to the config name of this map if (_mapName isEqualTo "") then { _mapName = worldName; }; // Extract the map author... _mapAuthor = getText (_mapConfig >> "author"); // ...or default to "Unknown Community Author" if (_mapAuthor isEqualTo "") then { _mapAuthor = localize "STR_AUTHOR_UNKNOWN"; }; // Update the map picture _mapPicture = getText (_mapConfig >> "pictureShot"); // Because VR is utterly broken. It only has a white image if (_mapPicture isEqualTo "A3\Map_VR\data\ui_VR_ca.paa") then { _mapPicture = ""; }; if (_mapPicture isEqualTo "") then { _mapPicture = getText (_mapConfig >> "pictureMap"); }; // Default to Arma 3 logo if there is no map picture if (_mapPicture isEqualTo "") then { _mapPicture = "a3\ui_f\data\Logos\arma3_white_ca.paa" }; // Tanoa does not have a good pictureMap if (worldName isEqualTo "Tanoa") then { _mapPicture = "exile_assets\texture\map\tanoa_co.paa" }; // Save the map data for later use _mapData = [ _mapName, _mapAuthor, _mapPicture ]; uiNameSpace setVariable ["ExileLoadingScreenMapData", _mapData]; }; }; }; /////////////////////////////////////////////////////////////////////////// private ["_missionData", "_missionName", "_missionAuthor", "_missionPicture"]; private ["_missionControl", "_missionPictureControl", "_missionNameControl", "_missionAuthorControl"]; _missionData = uiNameSpace getVariable ["ExileLoadingScreenMissionData", false]; // If we do not have a mission data, try to extract it if (_missionData isEqualTo false) then { // Ignore these missions... if !(missionName in ["", "tempMissionSP", "ExileIntro"]) then { // Get the defined mission name or briefing name _missionName = getMissionConfigValue ["onLoadName", briefingName]; // If there is no mission name, use "Unnamed Mission" if (_missionName isEqualTo "") then { _missionName = localize "STR_a3_rscdisplay_loading_noname"; }; // Get the defined mission author or "Unknown Community Author" _missionAuthor = getMissionConfigValue ["author", localize "STR_AUTHOR_UNKNOWN"]; // Try to get a community logo first _missionPicture = getText (missionConfigFile >> "loadScreen"); // If there is no community logo, try another, older property if (_missionPicture isEqualTo "") then { _missionPicture = getText (missionConfigFile >> "overviewPicture"); }; // If that still is not defined, use our logo if (_missionPicture isEqualTo "") then { _missionPicture = "exile_assets\texture\mod\logo.paa"; }; // Keep this in mind :D _missionData = [ _missionName, _missionAuthor, _missionPicture ]; // Store the data so we can access it later (where missionConfig is not there) uiNameSpace setVariable ["ExileLoadingScreenMissionData", _missionData]; }; }; /////////////////////////////////////////////////////////////////////////// // Keep all involved displays in mind. onLoad does not fire // for all of them. "Receiving data..." for example never has // a onLoad... _loadingDisplays = uiNameSpace getVariable ["ExileClientLoadingScreenDisplays", []]; _loadingDisplays pushBackUnique _display; { if !(isNull _x) then { // Update the map info _mapControl = _x displayCtrl 66003; if (_mapData isEqualTo false) then { // Hide the map, if we lack data _mapControl ctrlShow false; } else { // Show the map data _mapControl ctrlShow true; // Update the map name _mapNameControl = _x displayCtrl 66005; _mapNameControl ctrlSetText (_mapData select 0); // Update the map author _mapAuthorControl = _x displayCtrl 66006; _mapAuthorControl ctrlSetText (_mapData select 1); // Update the map picture _mapPictureControl = _x displayCtrl 66004; _mapPictureControl ctrlSetText (_mapData select 2); }; // Update the mission info _missionControl = _x displayCtrl 66007; // If we do not have mission data, hide the mission if (_missionData isEqualTo false) then { _missionControl ctrlShow false; } else { // Ensure it is shown if we have data _missionControl ctrlShow true; // Update the name _missionNameControl = _x displayCtrl 66009; _missionNameControl ctrlSetText (_missionData select 0); // Update the author _missionAuthorControl = _x displayCtrl 66010; _missionAuthorControl ctrlSetText (_missionData select 1); // Update the picture _missionPictureControl = _x displayCtrl 66008; _missionPictureControl ctrlSetText (_missionData select 2); }; }; } forEach _loadingDisplays; uiNameSpace setVariable ["ExileClientLoadingScreenDisplays", _loadingDisplays]; }]; /////////////////////////////////////////////////////////////////////////////// // A spawned thread to animate the spinning wheel of our loading screen // // ----- // //_animationThread = uiNameSpace getVariable ["ExileLoadingScreenSpinnerThread", scriptNull]; // // if (isNull _animationThread) then // { // // We cannot pass _spinner here :( // _animationThread = [] spawn (uiNameSpace getVariable ["ExileClient_gui_animateLoadingScreen", scriptNull]); // // uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", _animationThread]; // }; // // uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", _animationThread]; /////////////////////////////////////////////////////////////////////////////// uiNameSpace setVariable ["ExileClient_gui_loadingScreen_animate", { disableSerialization; private ["_spinner", "_startTime"]; _spinner = (uiNameSpace getVariable ["RscExileLoadingScreen", controlNull]) displayCtrl 66001; _startTime = diag_tickTime; while {true} do // until terminate on unload fires { _spinner ctrlSetAngle [(diag_tickTime - _startTime) * 360, 0.5, 0.5]; // 1/60 results in underflow = the spinner lags // minimum in Arma is 3ms, but this works: uiSleep 0.016; }; }]; /////////////////////////////////////////////////////////////////////////////// // Deconstruct the loading screen /////////////////////////////////////////////////////////////////////////////// uiNameSpace setVariable ["ExileClient_gui_loadingScreen_unload", { disableSerialization; private ["_animationThread"]; _animationThread = uiNameSpace getVariable ["ExileLoadingScreenSpinnerThread", scriptNull]; if !(isNull _animationThread) then { terminate _animationThread; uiNameSpace setVariable ["ExileLoadingScreenSpinnerThread", scriptNull] }; }]; true
EDIT:
Das ganze muss als Funktion mit
in der Config eingetragen werden.
Wo heißt die Datei bei Altis oder muss ich die fn_bootstrap.sqf selber erstellen in nem Ordner? 2. Frage muss ich alles von Exile zu Altis Life ändern?
Bei Altis Life gibt es noch keine preStart Funktion, dafür brauchst du einen Mod. Und logischerweise kannst du das Script so nicht nehmen da es mit Exile Sachen arbeitet.
Zero-One ist Vanilla und hat dass, müsste iwie gehen oder? ;/
Als ich mal drauf war, war auch nur der ganze normale Ladescreen und als der Fertig war kam nochmal ein gescripteter Ladescreen mit eigenem Bild hinterher. Wenn es anders sein sollte mach mal bitte ein Video davon und stell es hier rein.
Eigentlich dürfte es nicht gehen, weil man dazu Script Code während des Ladens ausführen müsste und Missionsscripte können erst nach dem Laden ausgeführt werden. Die dafür benötigten preStart Funktionen werden nur von Addons unterstützt laut Wiki.
Richtig, die haben die Altis Map durch ihr Bild ersetzt..
Finde dass so nice, deswegen möchte ich sowas auch
Haben die jetzt erst einen normalen "Altis" Loadingscreen und dann einen custom Loadingscreen oder haben die nur einen custom Loadingscreen, der direkt nach dem Herunterladen der Missionsdatei kommt?
Von Anfang an kommt der bin ich der Meinung..
Srryyyy :D, war anscheinend so fasziniert, aber der kommt dann danach oder?
Danach kommt dann ein normaler custom Dialog, in dem nochmal ewig irgendwelche Scripte im Hintergrund etwas "laden" -.-
Weißt du wie dass gehen würde?
Wie man Dialoge erstellt musst du selbst herausfinden.
Ok ich dank dir trotzdem
ich meine das geht nur beim modded server..bin mir aber nicht sicher:D
beim modded müsstes nur die .paa datei ändern inne pbo
Es geht aber erst nach dem man in der Lobby war, Deswegen suche ich den Code quasi