Difference between revisions of "findDisplay"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "|gr1= GUI Control |GROUP1= |gr1= GUI Control |=GROUP1" to "|gr1= GUI Control |GROUP1=")
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Command|= Comments
+
{{Command|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| arma |= Game name
+
| arma |Game name=
  
|1.00|= Game version
+
|1.00|Game version=
 +
 
 +
|gr1= GUI Control |GROUP1=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Find display by its IDD (which is defined in the [[description.ext]] or config).<br>
+
| Finds a display by its IDD which can either be defined in [[missionConfigFile]] ([[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.)
+
If the specified display can't be found [[displayNull]] ("No display") is returned, which can be tested with the [[isNull]] command.<br><br>
  
The primary display uses IDD 46. (eg: findDisplay 46). This will return [[displayNull]] on a dedicated server (so be sure to check [[isDedicated]] if using this in a [[waitUntil]] condition). |= Description
+
{{ Important | Dedicated servers and [[Arma 3 Headless Client|headless clients]] don't have a primary display (e.g {{Inline code|findDisplay 46}} will return [[displayNull]]).<br>
 +
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]]. |DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[Display]] <nowiki>=</nowiki> '''findDisplay''' idd |= Syntax
+
| [[findDisplay]] idd |SYNTAX=
  
|p1= idd: [[Number]] |= Parameter 1
+
|p1= idd: [[Number]] |PARAMETER1=
  
| [[Display]] |= Return value
+
| [[Display]] |RETURNVALUE=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
 
+
 
|x1= <code>_display = [[findDisplay]] 1;</code> |= Example 1
+
|x1= <code>[] [[spawn]]
 +
{
 +
[[waitUntil]] { ![[isNull]] [[findDisplay]] 46 };
 +
[[hint]] "Mission Display is now available!";
 +
};</code> |EXAMPLE1=
 +
|x2= <code>_display = [[findDisplay]] 1;</code> |EXAMPLE2=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[displayCtrl]], [[createDisplay]], [[createDialog]], [[dialog]], [[displayNull]], [[controlNull]], [[isNull]], [[createDisplay]], [[ctrlCreate]], [[displayParent]] |= See also
+
| [[allDisplays]], [[displayCtrl]], [[createDisplay]], [[createDialog]], [[dialog]], [[displayNull]], [[controlNull]], [[isNull]], [[createDisplay]], [[ctrlCreate]], [[displayParent]] |SEEALSO=
 
 
 
}}
 
}}
  
Line 30: Line 39:
 
<dl class="command_description">
 
<dl class="command_description">
 
<!-- Note Section BEGIN -->
 
<!-- Note Section BEGIN -->
 +
 +
<dd class="notedate">Posted on July 07, 2019 - 12:20 (UTC)</dd>
 +
<dt class="note">[[User:Lou Montana|Lou Montana]]</dt>
 +
<dd class="note">
 +
{|class="bikitable 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]].
  
 
<dd class="notedate">Posted on 15 June 2008
 
<dd class="notedate">Posted on 15 June 2008
<dt class="note>'''[[User:Kronzky|Kronzky]]'''
+
<dt class="note>[[User:Kronzky|Kronzky]]
 
<dd class="note">
 
<dd class="note">
 
findDisplay does ''not'' find displays defined under RscTitles (even when they are visible).<br>
 
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 [[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 [[this]] value to a script, during the onLoad event:
e.g. <pre>class RscTitles {
+
e.g. <syntaxhighlight lang="cpp">class RscTitles {
 
   class MyRsc {
 
   class MyRsc {
    onLoad = "myDisplay = (_this select 0)"; // or
+
onLoad = "myDisplay = (_this select 0)"; // or
    // onLoad = "_this execVM 'myDialog.sqf'";
+
// onLoad = "_this execVM 'myDialog.sqf'";
    ...
+
...
</pre>
+
</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>
 +
  
 
<dd class="notedate">Posted on 17 March 2010
 
<dd class="notedate">Posted on 17 March 2010
<dt class="note>'''[[User:Hendo|Hendo]]'''
+
<dt class="note>[[User:Hendo|Hendo]]
 
<dd class="note">
 
<dd class="note">
 
I posted a tutorial on finding and using displays [[User:Hendo:Tutorials:Display|here.]]
 
I posted a tutorial on finding and using displays [[User:Hendo:Tutorials:Display|here.]]
  
<dd class="notedate">Posted on 07 March 2014
+
<dd class="notedate">Posted on June 25, 2017 - 09:32 (UTC)
<dt class="note>'''[[User:EUTWtrnapster|EUTWtrnapster]]'''
+
<dt class="note">[[User:IT07|IT07]]
 +
<dd class="note">
 +
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.
 +
 
 +
<dd class="notedate">Posted on August 14, 2017 - 12:22 (UTC)
 +
<dt class="note">[[User:Demellion|Demellion]]
 
<dd class="note">
 
<dd class="note">
The Zeus Display uses IDD 312
+
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
 +
{
 +
idd = -1;
 +
scriptName = "RscDisplayNew";
 +
...
 +
};</syntaxhighlight>
 +
<syntaxhighlight lang="cpp">// Your display doesn't have IDD
 +
class RscDisplayNew
 +
{
 +
scriptName = "RscDisplayNew";
 +
...
 +
};</syntaxhighlight>
 +
<syntaxhighlight lang="cpp">// Your display doesn't have scriptname with IDD = -1
 +
class RscDisplayNew
 +
{
 +
idd = -1;
 +
...
 +
};</syntaxhighlight>
 +
<syntaxhighlight lang="cpp">// Your display doesn't have scriptname, neither IDD
 +
class RscDisplayNew
 +
{
 +
...
 +
};</syntaxhighlight>
 +
 
 +
# 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]]:<!--
 +
--><code>(uiNamespace getVariable "RscDisplayNew")</code><!--
 +
-->'''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.
 +
# Displays without IDD's can actually exist. They can be manipulated only in a way described in the first case using [[uiNamespace]].
 +
# 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.
 +
</dd>
 +
</dl>
 +
 
 
<!-- Note Section END -->
 
<!-- Note Section END -->
 
</dl>
 
</dl>
Line 59: Line 143:
 
<h3 style="display:none">Bottom Section</h3>
 
<h3 style="display:none">Bottom Section</h3>
  
[[Category:Scripting Commands|FINDDISPLAY]]
+
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA|FINDDISPLAY]]
+
[[Category:Scripting Commands Armed Assault|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_GUI_Control|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_System_Commands|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
 
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 
 
<!-- CONTINUE Notes -->
 
<dl class="command_description">
 
<dd class="notedate">Posted on March 25, 2015 - 22:04 (UTC)</dd>
 
<dt class="note">[[User:Austin medic|Austin medic]]</dt>
 
<dd class="note">
 
Display 12 is map<br>
 
</dd>
 
</dl>
 
<!-- DISCONTINUE Notes -->
 
 
<!-- CONTINUE Notes -->
 
<dl class="command_description">
 
<dd class="notedate">Posted on June 25, 2017 - 09:32 (UTC)</dd>
 
<dt class="note">[[User:IT07|IT07]]</dt>
 
<dd class="note">
 
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. 
 
</dd>
 
</dl>
 
<!-- DISCONTINUE Notes -->
 

Latest revision as of 19:37, 24 September 2020

Introduced with Armed Assault version 1.001.00
Hover & click on the images for descriptions

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 can't be found displayNull ("No display") is returned, which can be tested with the isNull command.

Dedicated servers and headless clients don't have a primary display (e.g findDisplay 46 will return displayNull).
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.

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
Groups:
GUI Control

Notes

i
Only post proven facts here. Report bugs on the Feedback Tracker and discuss on the Arma Discord or on the Forums.

Notes

Posted on July 07, 2019 - 12:20 (UTC)
Lou Montana
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.

Posted on 15 June 2008
Kronzky
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");


Posted on 17 March 2010
Hendo
I posted a tutorial on finding and using displays here.
Posted on June 25, 2017 - 09:32 (UTC)
IT07
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.
Posted on August 14, 2017 - 12:22 (UTC)
Demellion
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.

Bottom Section