findDisplay: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "description.ext" to "description.ext")
m (Some wiki formatting)
Line 19: Line 19:


|descr= Finds a display by its IDD which can either be defined in [[missionConfigFile]] ([[Description.ext|description.ext]]) or [[configFile]] ([[config.cpp]])<br>
|descr= Finds a display by its IDD which can either be defined in [[missionConfigFile]] ([[Description.ext|description.ext]]) or [[configFile]] ([[config.cpp]])<br>
If the specified display can't be found [[displayNull]] ("No display") is returned, which can be tested with the [[isNull]] command.<br><br>
If the specified display cannot be found, [[displayNull]] is returned.
{{Feature|important|Dedicated servers and [[Arma 3 Headless Client|headless clients]] don't have a primary display (e.g {{ic|findDisplay 46}} will return [[displayNull]]).<br>
Detect both with the [[hasInterface]] command.}}


{{ Feature | important | Dedicated servers and [[Arma 3 Headless Client|headless clients]] don't have a primary display (e.g {{ic|findDisplay 46}} will return [[displayNull]]).<br>
{{Feature|informative|For a list of (almost) all {{arma3}}'s IDDs, see [[Arma 3: IDD List]].}}
Detect both with the [[hasInterface]] command. }}
 
A list of common displays can be found in the notes below; for a full list, see [[findDisplay/Arma 3 IDD list]].


|s1= [[findDisplay]] idd
|s1= [[findDisplay]] idd
Line 42: Line 41:
}}
}}


<dl class="command_description">
{{Note
|user= Lou Montana
|timestamp= 20190707122000
|text= Common IDDs:
* 46: Mission display
* 312: Zeus display
* 49: Pause menu
* 602: Inventory
* 24: Chat box
* 300: Weapon state
* 12: Map
* 160: UAV Terminal
}}


<dt><dt>
{{Note
<dd class="notedate">Posted on July 07, 2019 - 12:20 (UTC)</dd>
|user= Kronzky
<dt class="note">[[User:Lou Montana|Lou Montana]]</dt>
|timestamp= 20090615191000
<dd class="note">
|text= [[findDisplay]] does ''not'' find displays defined under RscTitles (even when they are visible).<br>
{| class="wikitable sortable"
|+ Common IDDs
! Display
! IDD
|-
| Mission display
| 46
|-
| Zeus display
| 312
|-
| Pause menu
| 49
|-
| Inventory
| 602
|-
| Chat box
| 24
|-
| Weapon state
| 300
|-
| Map
| 12
|-
| UAV Terminal
| 160
|}
For a full list, see [[findDisplay/Arma 3 IDD list]].
<dt><dt>
<dd class="notedate">Posted on 15 June 2008</dd>
<dt class="note">[[User:Kronzky|Kronzky]]</dt>
<dd class="note">
findDisplay does ''not'' find displays defined under RscTitles (even when they are visible).<br>
To access those types of displays, either assign the resource to a global variable, or pass its [[Magic Variables#this_2|this]] value to a script, during the onLoad event:
To access those types of displays, either assign the resource to a global variable, or pass its [[Magic Variables#this_2|this]] value to a script, during the onLoad event:
e.g. <syntaxhighlight lang="cpp">
e.g. <syntaxhighlight lang="cpp">
class RscTitles {
class RscTitles
  class MyRsc {
{
onLoad = "myDisplay = (_this select 0)"; // or
class MyRsc
// onLoad = "_this execVM 'myDialog.sqf'";
{
...
onLoad = "myDisplay = (_this select 0)";
// or
// onLoad = "_this execVM 'myDialog.sqf'";
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
You can then use the stored value as you would for regular dialogs:
You can then use the stored value as you would for regular dialogs:
<code>(myDisplay [[displayCtrl]] 1111) [[ctrlSetText]] "hello there");</code>
<code>(myDisplay [[displayCtrl]] 1111) [[ctrlSetText]] "hello there");</code>
}}
{{Note
|user= IT07
|timestamp= 20170625093200
|text= I have tested the behavior of this command and I found out that it [ findDisplay ] appears to only return the display AFTER any onLoad event handler of that display is done. So, using findDisplay inside an onLoad event handler is useless.
}}


<dt><dt>
{{Note
<dd class="notedate">Posted on June 25, 2017 - 09:32 (UTC)</dd>
|user= Demellion
<dt class="note">[[User:IT07|IT07]]</dt>
|timestamp= 20170814122200
<dd class="note">
|text= There are some specific cases, where [[findDisplay]] will not be able to find an existing display. Here's the cases and how to act on them:<br>
I have tested the behavior of this command and I found out that it [ findDisplay ] appears to only return the display AFTER any onLoad event handler of that display is done. So, using findDisplay inside an onLoad event handler is useless.
<syntaxhighlight lang="cpp">
<dt><dt>
// Your display has IDD= -1.
<dd class="notedate">Posted on August 14, 2017 - 12:22 (UTC)</dd>
<dt class="note">[[User:Demellion|Demellion]]</dt>
<dd class="note">
There are some specific cases, where '''findDisplay''' will not be able to find an existing display. Here's the cases and how to act on them:<br>
<syntaxhighlight lang="cpp">// Your display has IDD= -1.
class RscDisplayNew
class RscDisplayNew
{
{
idd = -1;
idd = -1;
scriptName = "RscDisplayNew";
scriptName = "RscDisplayNew";
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="cpp">// Your display doesn't have IDD
<syntaxhighlight lang="cpp">
// Your display doesn't have IDD
class RscDisplayNew
class RscDisplayNew
{
{
scriptName = "RscDisplayNew";
scriptName = "RscDisplayNew";
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="cpp">// Your display doesn't have scriptname with IDD = -1
<syntaxhighlight lang="cpp">
// Your display doesn't have scriptname with IDD = -1
class RscDisplayNew
class RscDisplayNew
{
{
idd = -1;
idd = -1;
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="cpp">// Your display doesn't have scriptname, neither IDD
<syntaxhighlight lang="cpp">
// Your display doesn't have scriptname, neither IDD
class RscDisplayNew
class RscDisplayNew
{
{
...
// ...
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 140: Line 126:
# You can really have this display seeking it manually in a [[allDisplays]] return. This is experimental, but working option.
# You can really have this display seeking it manually in a [[allDisplays]] return. This is experimental, but working option.
# You will have a problem finding this display, since this display doesn't exist even in [[allDisplays]](?) return. Behaviour unknown.
# You will have a problem finding this display, since this display doesn't exist even in [[allDisplays]](?) return. Behaviour unknown.
</dd>
}}
 
</dl>
 
</dl>

Revision as of 19:11, 22 November 2021

Hover & click on the images for description

Description

Description:
Finds a display by its IDD which can either be defined in missionConfigFile (description.ext) or configFile (config.cpp)
If the specified display cannot be found, displayNull is returned.
Dedicated servers and headless clients don't have a primary display (e.g findDisplay 46 will return displayNull).
Detect both with the hasInterface command.
For a list of (almost) all Arma 3's IDDs, see Arma 3: IDD List.
Groups:
GUI Control

Syntax

Syntax:
findDisplay idd
Parameters:
idd: Number
Return Value:
Display

Examples

Example 1:
[] spawn { waitUntil { !isNull findDisplay 46 }; hint "Mission Display is now available!"; };
Example 2:
_display = findDisplay 1;

Additional Information

See also:
allDisplaysdisplayCtrlcreateDisplaycreateDialogdialogdisplayNullcontrolNullisNullcreateDisplayctrlCreatedisplayParent

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Lou Montana - c
Posted on Jul 07, 2019 - 12:20 (UTC)
Common IDDs:
  • 46: Mission display
  • 312: Zeus display
  • 49: Pause menu
  • 602: Inventory
  • 24: Chat box
  • 300: Weapon state
  • 12: Map
  • 160: UAV Terminal
Kronzky - c
Posted on Jun 15, 2009 - 19:10 (UTC)
findDisplay does not find displays defined under RscTitles (even when they are visible).
To access those types of displays, either assign the resource to a global variable, or pass its this value to a script, during the onLoad event: e.g.
class RscTitles
{
	class MyRsc
	{
		onLoad = "myDisplay = (_this select 0)";
		// or
		// onLoad = "_this execVM 'myDialog.sqf'";
		// ...
	};
};

You can then use the stored value as you would for regular dialogs: (myDisplay displayCtrl 1111) ctrlSetText "hello there");

IT07 - c
Posted on Jun 25, 2017 - 09:32 (UTC)
I have tested the behavior of this command and I found out that it [ findDisplay ] appears to only return the display AFTER any onLoad event handler of that display is done. So, using findDisplay inside an onLoad event handler is useless.
Demellion - c
Posted on Aug 14, 2017 - 12:22 (UTC)
There are some specific cases, where findDisplay will not be able to find an existing display. Here's the cases and how to act on them:
// Your display has IDD= -1.
class RscDisplayNew
{
	idd = -1;
	scriptName = "RscDisplayNew";
	// ...
};
// Your display doesn't have IDD
class RscDisplayNew
{
	scriptName = "RscDisplayNew";
	// ...
};
// Your display doesn't have scriptname with IDD = -1
class RscDisplayNew
{
	idd = -1;
	// ...
};
// Your display doesn't have scriptname, neither IDD
class RscDisplayNew
{
	// ...
};
  1. You actually can find a -1 display, but this means finding a display with this IDD might be a problem, when there are a few displays marked as -1.So as you can see, theres an entry called scriptName. You can get a reference to this display by using uiNamespace:(uiNamespace getVariable "RscDisplayNew")NOTE: Variables are overwritten with a reference of the last declared display under the same scriptName entry. Take a look at case 3 for solution.
  2. Displays without IDD's can actually exist. They can be manipulated only in a way described in the first case using uiNamespace.
  3. You can really have this display seeking it manually in a allDisplays return. This is experimental, but working option.
  4. You will have a problem finding this display, since this display doesn't exist even in allDisplays(?) return. Behaviour unknown.