disableSerialization: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "<dd class="note">([^}]*)<code>([^<]*)<\/code>" to "<dd class="note">$1<sqf>$2</sqf>") |
Lou Montana (talk | contribs) m (Text replacement - "[] spawn" to "0 spawn") |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 16: | Line 16: | ||
|gr2= GUI Control | |gr2= GUI Control | ||
|descr= Disable saving of script containing this command. After this, the script can work with data types which do not support serialization (UI types). See [[Namespace#Namespace serialization|Namespace serialization]] for more information. | |descr= Disable saving of script containing this command. After this, the script can work with data types which do not support serialization (UI types). | ||
{{Feature|informative|See [[Namespace#Namespace serialization|Namespace serialization]] for more information.}} | |||
{{Feature | important | '''In {{arma2}}''' and up to a certain version of {{arma3}}, <!-- | {{Feature|important| | ||
'''In {{arma2}}''' and up to a certain version of {{arma3}}, <!-- | |||
-->giving a [[Display]] or [[Control]] to [[spawn]]ed code would raise an error due to the usage of the then non-serializable {{hl|[[Magic Variables#this|_this]]}} variable. <!-- | -->giving a [[Display]] or [[Control]] to [[spawn]]ed code would raise an error due to the usage of the then non-serializable {{hl|[[Magic Variables#this|_this]]}} variable. <!-- | ||
-->Using [[disableSerialization]] or [[uiNamespace]] wouldn't help; the trick here is to pass the argument inside an array: | -->Using [[disableSerialization]] or [[uiNamespace]] wouldn't help; the trick here is to pass the argument inside an array: | ||
< | <sqf> | ||
_display = findDisplay 46; | |||
_display spawn { hint str _this; }; // would raise a serialization error | |||
[_display] spawn { hint str (_this select 0); }; // OK</sqf> | |||
}} | |||
|s1= [[disableSerialization]] | |s1= [[disableSerialization]] | ||
Line 29: | Line 33: | ||
|r1= [[Nothing]] | |r1= [[Nothing]] | ||
|x1= <sqf>disableSerialization; | |x1= <sqf> | ||
private _display = findDisplay 46;</sqf> | disableSerialization; | ||
private _display = findDisplay 46; | |||
</sqf> | |||
|seealso= [[Display]] [[displayAddEventHandler]] [[displayRemoveAllEventHandlers]] [[displayRemoveEventHandler]] [[uiSleep]] | |seealso= [[Display]] [[displayAddEventHandler]] [[displayRemoveAllEventHandlers]] [[displayRemoveEventHandler]] [[uiSleep]] | ||
}} | }} | ||
{{Note | |||
|user= Str | |||
|timestamp= 20100619102600 | |||
|text= Can be used to detecting load. Scope with disabled serialization is discontinued after load, even if there's endless loop inside. | |||
<sqf> | |||
0 spawn { disableSerialization; waitUntil { false }; hint "Game was loaded!";}; | |||
Can be used to detecting load. Scope with disabled serialization is discontinued after load, even if there's endless loop inside. | </sqf> | ||
<sqf> | |||
hint "Game was loaded!";</sqf> | |||
Works for all possible load types - loading user save, loading autosave and resuming mission from main menu. | Works for all possible load types - loading user save, loading autosave and resuming mission from main menu. | ||
Use with caution, as it | Use with caution, as it creates an infinite loop, having impact at overall [[Code_Optimisation#Threads|scripting time]]. | ||
}} | |||
If you do not store UI elements ([[Display]], [[Control]]) in variables, you do not need [[disableSerialization]]; UI elements are usually returned by scripting commands such as [[findDisplay]] or passed as params in UI event handler scripts ([[displayAddEventHandler]], [[ctrlAddEventHandler]]). | {{Note | ||
|user= Killzone_Kid | |||
|timestamp= 20131023025700 | |||
|text= If you do not store UI elements ([[Display]], [[Control]]) in variables, you do not need [[disableSerialization]]; UI elements are usually returned by scripting commands such as [[findDisplay]] or passed as params in UI event handler scripts ([[displayAddEventHandler]], [[ctrlAddEventHandler]]). | |||
This code will require [[disableSerialization]]: | This code will require [[disableSerialization]]: | ||
<sqf>disableSerialization; | <sqf> | ||
disableSerialization; | |||
_display = findDisplay 123; | _display = findDisplay 123; | ||
_ctrl = _display displayCtrl -1; | _ctrl = _display displayCtrl -1; | ||
_ctrl ctrlSetText "LOL";</sqf> | _ctrl ctrlSetText "LOL"; | ||
</sqf> | |||
This code will not: | This code will not: | ||
<sqf>findDisplay 123 displayCtrl -1 ctrlSetText "LOL";</sqf> | <sqf>findDisplay 123 displayCtrl -1 ctrlSetText "LOL";</sqf> | ||
}} | |||
{{Note | |||
|user= Nelis75733126 | |||
In | |timestamp= 20170625181500 | ||
Example: | |text= In {{arma3}} 1.74, a scripted FSM is somehow incompatible with <sqf inline>disableSerialization</sqf>.<br> | ||
< | As a workaround, store a display inside an array. Example: | ||
<sqf>_display = [findDisplay idd];</sqf> | |||
}} |
Latest revision as of 21:24, 2 September 2024
Description
- Description:
- Disable saving of script containing this command. After this, the script can work with data types which do not support serialization (UI types).
- Groups:
- NamespacesGUI Control
Syntax
- Syntax:
- disableSerialization
- Return Value:
- Nothing
Examples
- Example 1:
Additional Information
- See also:
- Display displayAddEventHandler displayRemoveAllEventHandlers displayRemoveEventHandler uiSleep
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 Jun 19, 2010 - 10:26 (UTC)
- Can be used to detecting load. Scope with disabled serialization is discontinued after load, even if there's endless loop inside. Works for all possible load types - loading user save, loading autosave and resuming mission from main menu. Use with caution, as it creates an infinite loop, having impact at overall scripting time.
- Posted on Oct 23, 2013 - 02:57 (UTC)
-
If you do not store UI elements (Display, Control) in variables, you do not need disableSerialization; UI elements are usually returned by scripting commands such as findDisplay or passed as params in UI event handler scripts (displayAddEventHandler, ctrlAddEventHandler).
This code will require disableSerialization:
This code will not:disableSerialization; _display = findDisplay 123; _ctrl = _display displayCtrl -1; _ctrl ctrlSetText "LOL";
- Posted on Jun 25, 2017 - 18:15 (UTC)
-
In Arma 3 1.74, a scripted FSM is somehow incompatible with disableSerialization.
As a workaround, store a display inside an array. Example: