findDisplay: Difference between revisions
Jump to navigation
Jump to search
SilentSpike (talk | contribs) m (Made description.ext a link) |
Lou Montana (talk | contribs) |
||
(36 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{RV|type=command | ||
| | | arma1 | ||
|1.00 | |1.00 | ||
| | |gr1= GUI Control | ||
| 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.<br><br> | |||
| [[ | {{ Feature | 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]]. | |||
| [[ | | [[findDisplay]] idd | ||
| [[ | |p1= idd: [[Number]] | ||
| [[Display]] | |||
|x1= <code>[] [[spawn]] | |||
{ | |||
[[waitUntil]] { ![[isNull]] [[findDisplay]] 46 }; | |||
[[hint]] "Mission Display is now available!"; | |||
};</code> | |||
|x2= <code>_display = [[findDisplay]] 1;</code> | |||
|seealso= [[allDisplays]], [[displayCtrl]], [[createDisplay]], [[createDialog]], [[dialog]], [[displayNull]], [[controlNull]], [[isNull]], [[createDisplay]], [[ctrlCreate]], [[displayParent]] | |||
}} | }} | ||
<dl class="command_description"> | <dl class="command_description"> | ||
<!-- Note Section BEGIN --> | <!-- Note Section BEGIN --> | ||
<dd class="notedate">Posted on 15 June 2008 | <dd class="notedate">Posted on July 07, 2019 - 12:20 (UTC)</dd> | ||
<dt class="note> | <dt class="note">[[User:Lou Montana|Lou Montana]]</dt> | ||
<dd class="note"> | |||
{|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]]. | |||
<dd class="notedate">Posted on 15 June 2008</dd> | |||
<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 [[Magic Variables#this_2|this]] value to a script, during the onLoad event: | ||
e.g. < | e.g. <syntaxhighlight lang="cpp">class RscTitles { | ||
class MyRsc { | class MyRsc { | ||
onLoad = "myDisplay = (_this select 0)"; // or | |||
// onLoad = "_this execVM 'myDialog.sqf'"; | |||
... | |||
</ | </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> | |||
<dd class="notedate">Posted on | <dd class="notedate">Posted on June 25, 2017 - 09:32 (UTC)</dd> | ||
<dt class="note> | <dt class="note">[[User:IT07|IT07]]</dt> | ||
<dd class="note"> | <dd class="note"> | ||
I | 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 | <dd class="notedate">Posted on August 14, 2017 - 12:22 (UTC)</dd> | ||
<dt class="note> | <dt class="note">[[User:Demellion|Demellion]]</dt> | ||
<dd class="note"> | <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 | |||
{ | |||
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> | ||
[[Category:Scripting Commands | [[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]] | ||
{{GameCategory|arma1|Scripting Commands}} | |||
{{GameCategory|arma2|Scripting Commands}} | |||
{{GameCategory|tkoh|Scripting Commands}} | |||
{{GameCategory|arma3|Scripting Commands}} | |||
Revision as of 14:07, 25 February 2021
Description
- Description:
- Description needed
- Groups:
- GUI Control
Syntax
- Syntax:
- Syntax needed
- Parameters:
- idd: Number
- Return Value:
- Return value needed
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
- 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 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 { ... };
- 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. - 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.
- 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: