disableSerialization: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Some wiki formatting) |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
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: | ||
Line 39: | Line 41: | ||
}} | }} | ||
{{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> | |||
_loaded = [] spawn { disableSerialization; waitUntil { false }; }; | |||
Can be used to detecting load. Scope with disabled serialization is discontinued after load, even if there's endless loop inside. | |||
<sqf>_loaded = [] spawn { disableSerialization; waitUntil { false }; }; | |||
waitUntil { scriptDone _loaded; }; | waitUntil { scriptDone _loaded; }; | ||
hint "Game was loaded!";</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 handles two threads in memory, having impact at overall [[Code_Optimisation#Threads|scripting time]]. | Use with caution, as it handles two threads in memory, 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]]: | ||
Line 68: | Line 69: | ||
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= IT07 | |||
|timestamp= 20170625181500 | |||
|text= In {{arma3}} 1.74, a scripted FSM does somehow not work with [[disableSerialization]]. As a workaround, store a display inside an array. | |||
In | |||
Example: | Example: | ||
<sqf>_display = [findDisplay idd];</sqf> | <sqf>_display = [findDisplay idd];</sqf> | ||
}} |
Revision as of 15:54, 20 March 2023
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 handles two threads in memory, 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 does somehow not work with disableSerialization. As a workaround, store a display inside an array.
Example: