Extended Eventhandlers

Version 12 (killswitch, 08/07/2009 14:31)

1 7 killswitch
{{>toc}}
2 4 killswitch
3 4 killswitch
h1. Extended Event Handlers (XEH) by Solus and Killswitch
4 4 killswitch
5 11 killswitch
Version:  2.03
6 11 killswitch
Released: 2009-08-07
7 4 killswitch
8 4 killswitch
9 4 killswitch
Creator:      Solus
10 4 killswitch
Maintainer:   Killswitch
11 11 killswitch
Contributors: Sickboy, Spooner
12 4 killswitch
13 4 killswitch
14 4 killswitch
h1. Introduction
15 4 killswitch
16 4 killswitch
This addon allows a virtually infinite amount of event handlers to be used together from different addons. The event handlers are executed for the matching class and all inheriting classes. The event handler init line also contains the extended event handler class to look for, so you can have a custom inheritance for custom units.
17 4 killswitch
18 4 killswitch
Normally event handlers can only be added in configs, and trying to add a new event handler caused all previous event handlers to be overwritten. This addon allows that limitation to be overcome. This is mostly useful for having addons that can add different functionality, for example in OFP addons that had their own event handlers wouldn't inherit default event handlers, such as a custom unit with EHs being used with ECP or FFUR wouldn't have the ECP or FFUR effects.
19 4 killswitch
20 4 killswitch
21 4 killswitch
h2. "Other" extended event handlers by Killswitch
22 4 killswitch
23 4 killswitch
This adds support for using extended event handlers for all Arma event types
24 4 killswitch
25 4 killswitch
26 4 killswitch
h2. Extended fired event handler
27 4 killswitch
28 4 killswitch
This allows a virtually infinite amount of fired event handlers to be used together from different addons.
29 4 killswitch
30 4 killswitch
The extended fired event handler has several different parts:
31 4 killswitch
32 4 killswitch
First the extended init EH is run for all units to add together and compile all of the inherited fired event handlers and use setVariable to attach those to the unit.
33 4 killswitch
34 4 killswitch
The extended fired event handler is added to the base class called Extended_EventHandlers so that all the CfgVehicles class EventHandlers
35 4 killswitch
inherit it. When a unit fires and sets off the event handler the shot is immediately captured in the same game state cycle. Then the compiled
36 4 killswitch
extended fired events are called by using getVariable to retrieve them from the unit.
37 4 killswitch
38 4 killswitch
The fired event handler init line contains the extended event handler class to look for, so you can have a custom inheritance for custom units. The event handlers are executed for the matching class and all inheriting classes.
39 4 killswitch
40 4 killswitch
It allows more fired events to be used together, for example a script that makes shots affected by wind and a tracer script could be used together.
41 4 killswitch
42 4 killswitch
43 4 killswitch
44 4 killswitch
h1. Examples
45 4 killswitch
46 4 killswitch
There are two example Extended Init addons included to demonstrate how to assign new event handlers and the event handler inheritance. The example pbos should not be installed except for testing.
47 4 killswitch
48 4 killswitch
There is an example addon included to demonstrate how to assign new fired event handlers and the event handler inheritance. The example also has a quickly called function that is able to capture information on the shot in the same game state cycle before the shot is updated and moves away from it's starting position and changes it's status. The example pbo should not be installed except for testing.
49 4 killswitch
50 4 killswitch
The addon "SightAdjustment_AutoInit.pbo" is an addon that makes gmJamez' "GMJ_SightAdjustment" addon compatible with XEH.
51 4 killswitch
52 4 killswitch
Note to addon makers: Before XEH 1.1, you had to make sure to add a ";" at the end of your extended init line to separate it from other extended inits. This is no longer necessary - the Extended Init EH will separate them automatically, so ending without one won't cause a problem.
53 4 killswitch
54 4 killswitch
h1. New features
55 4 killswitch
56 4 killswitch
h2. New in 1.3: Limiting certain event handler to a specific vehicle class
57 4 killswitch
58 4 killswitch
The example addon "SLX_Advanced_Init_Example" shows how to create an XEH init EH that will only be used on units that are of the class SoldierWB,
59 4 killswitch
ie the West "Rifleman". Units that inherit from "SoldierWB", eg the Grenadier, won't run the init EH. 
60 4 killswitch
61 4 killswitch
One can do the same thing for the other XEH event types. For example, to add a "GetIn" event handler that works only on the the vehicle XYZ_BRDM2, but not on the XYZ_BRDM2_ATGM variant you would do something like this:
62 4 killswitch
63 4 killswitch
<pre>
64 4 killswitch
...
65 4 killswitch
class Extended_GetIn_Eventhandlers
66 4 killswitch
{
67 4 killswitch
    class XYZ_BRDM2
68 4 killswitch
    {
69 4 killswitch
        class XYZ_BRDM2_GetIn
70 4 killswitch
        {
71 4 killswitch
            scope = 0;
72 4 killswitch
            getin = "[] exec '\xyz_brdm2\getin.sqf'";
73 4 killswitch
        };
74 4 killswitch
    };
75 4 killswitch
};
76 4 killswitch
77 4 killswitch
78 4 killswitch
class Vehicles
79 4 killswitch
{
80 4 killswitch
    ...
81 4 killswitch
    class XYZ_BRDM2: BRDM2
82 4 killswitch
    {
83 4 killswitch
        ...
84 4 killswitch
    };
85 4 killswitch
    class XYZ_BRDM2_ATGM: XYZ_BRDM2
86 4 killswitch
    {
87 4 killswitch
        ...
88 4 killswitch
    };
89 4 killswitch
};
90 4 killswitch
</pre>
91 4 killswitch
Note that within that innermost XEH class, you have to put a string value with the same name as the desired event handler. In the above example it was "getin". For the "fired" event handler, you would use
92 4 killswitch
<pre>
93 4 killswitch
...
94 4 killswitch
class Extended_Fired_Eventhandlers
95 4 killswitch
{
96 4 killswitch
    class SoldierEB
97 4 killswitch
    {
98 4 killswitch
        class XYZ_SoldierEB_fired
99 4 killswitch
        {
100 4 killswitch
            scope=0;
101 4 killswitch
            // We wish to make a SoldierEB-specific *Fired* EH, so the
102 4 killswitch
            // property name should be "fired"
103 4 killswitch
            //
104 4 killswitch
            fired = "_this call XYZ_SoldierEB_fired";
105 4 killswitch
        };
106 4 killswitch
    };
107 4 killswitch
};
108 4 killswitch
...
109 4 killswitch
</pre>
110 4 killswitch
111 4 killswitch
h2. New in 1.5: Excluding certain descendant vehicle types
112 4 killswitch
113 4 killswitch
With XEH 1.5, you can exclude one or more subtypes of a vehicle from getting a certain XEH event handler. To do this, you add a directive,
114 4 killswitch
exclude, in an inner, "composite" XEH class (introduced in 1.3).
115 4 killswitch
116 4 killswitch
Here's an example of how to exclude the west pilot class from running the basic Man class XEH init event handler. Instead, there's a special
117 4 killswitch
init for the pilot ("SoldierWPilot"). Note that all subclasses of "SoldierWPilot" will be excluded from using the basic class Man XEH init too.
118 4 killswitch
<pre>
119 4 killswitch
/*
120 4 killswitch
 *   Init XEH exclusion example 1
121 4 killswitch
 */
122 4 killswitch
class CfgPatches
123 4 killswitch
{
124 4 killswitch
   class xeh_exclusion_example1
125 4 killswitch
   {
126 4 killswitch
       units[]={};
127 4 killswitch
       weapons[]={};
128 4 killswitch
       requiredVersion=0.1;
129 4 killswitch
       requiredAddons[]={"Extended_Eventhandlers"};
130 4 killswitch
   };
131 4 killswitch
};
132 4 killswitch
133 4 killswitch
class Extended_Init_Eventhandlers
134 4 killswitch
{
135 4 killswitch
    class Man
136 4 killswitch
    {
137 4 killswitch
        // To use the exclude directive, we'll have to make this an
138 4 killswitch
        // "inner" (composite) XEH init EH class
139 4 killswitch
        class XEH_Exclusion1_Man
140 4 killswitch
        {
141 4 killswitch
            exclude="SoldierWPilot";
142 4 killswitch
            init = "[] execVM '\xeh_exclusion_example1\init_man.sqf'";
143 4 killswitch
        };
144 4 killswitch
    };
145 4 killswitch
146 4 killswitch
    class SoldierWPilot
147 4 killswitch
    {
148 4 killswitch
        xeh_init = "[] execVM '\xeh_exclusion_example1\init_west_pilot.sqf'";
149 4 killswitch
    };
150 4 killswitch
};
151 4 killswitch
</pre>
152 4 killswitch
153 4 killswitch
In the second example, we'll exclude both the standard west and east pilots and add unique init EH:S to them and the BIS Camel pilot. To do so, use the exclude[] directive in array form:
154 4 killswitch
<pre>
155 4 killswitch
/*
156 4 killswitch
 *   Init XEH exclusion example 2
157 4 killswitch
 */
158 4 killswitch
class CfgPatches
159 4 killswitch
{
160 4 killswitch
   class xeh_exclusion_example2
161 4 killswitch
   {
162 4 killswitch
       units[]={};
163 4 killswitch
       weapons[]={};
164 4 killswitch
       requiredVersion=0.1;
165 4 killswitch
       requiredAddons[]={"Extended_Eventhandlers"};
166 4 killswitch
   };
167 4 killswitch
};
168 4 killswitch
169 4 killswitch
class Extended_Init_Eventhandlers
170 4 killswitch
{
171 4 killswitch
    class Man
172 4 killswitch
    {
173 4 killswitch
        // To use the exclude directive, we'll have to make this an
174 4 killswitch
        // "inner" (composite) XEH init EH class
175 4 killswitch
        class XEH_Exclusion2_Man
176 4 killswitch
        {
177 4 killswitch
            exclude[] = {"SoldierWPilot", "SoldierEPilot"};
178 4 killswitch
            init = "[] execVM '\xeh_exclusion_example2\init_man.sqf'";
179 4 killswitch
        };
180 4 killswitch
    };
181 4 killswitch
182 4 killswitch
    // All descendants of SoldierEPilot will use this XEH init EH
183 4 killswitch
    class SoldierEPilot
184 4 killswitch
    {
185 4 killswitch
        xeh_init = "[] execVM '\xeh_exclusion_example2\init_east_pilot.sqf'";
186 4 killswitch
    };
187 4 killswitch
188 4 killswitch
    // Using scope=0, only SoldierWPilot will get this particular XEH init
189 4 killswitch
    class SoldierWPilot
190 4 killswitch
    {
191 4 killswitch
        scope=0;
192 4 killswitch
        xeh_init = "[] execVM '\xeh_exclusion_example2\init_west_pilot.sqf'";
193 4 killswitch
    };
194 4 killswitch
195 4 killswitch
    // Here, we add an event handler for the BIS Camel Pilot (which is a
196 4 killswitch
    // descendant of "SoldierWPilot". It won't run "init_west_pilot.sqf" though
197 4 killswitch
    // since we used "scope=0" above.
198 4 killswitch
    class BISCamelPilot
199 4 killswitch
    {
200 4 killswitch
        xeh_init="[] execVM'\xeh_exclusion_example2\init_west_camel_pilot.sqf'";
201 4 killswitch
    };
202 4 killswitch
};
203 4 killswitch
</pre>
204 4 killswitch
You can do the same thing with the other XEH event types (fired, hit and so on).
205 4 killswitch
206 4 killswitch
207 4 killswitch
h2. New in 1.8: making XEH init event handlers run when a unit respawns
208 4 killswitch
209 4 killswitch
Normally, when a player respawns into a new unit (object), the init event handler is not executed again. However, with XEH 1.8, you can make an XEH init event handler be rerun when the new unit spawns. To do so, declare your init EH as a "composite EH class" (described above). Then, add a property to it called "onRespawn" and set it to true (the number 1). 
210 4 killswitch
211 4 killswitch
Here's an example that shows how to do it:
212 4 killswitch
<pre>
213 4 killswitch
#define false 0
214 4 killswitch
#define true  1
215 4 killswitch
216 4 killswitch
class Extended_Init_Eventhandlers
217 4 killswitch
{
218 4 killswitch
    class Man
219 4 killswitch
    {
220 4 killswitch
        class SLX_XEH_RespawnInitMan
221 4 killswitch
        {
222 4 killswitch
            onRespawn = true;                    // Run this even after respawn
223 4 killswitch
            init      = "_this call My_Respawn_InitEH";
224 4 killswitch
        };
225 4 killswitch
    };
226 4 killswitch
};
227 4 killswitch
</pre>
228 4 killswitch
The example above will cause all classes that are descendants of class "Man" to have the function "My_Respawn_InitEH" called both when the unit is created and after a player has respawned into a new unit.
229 4 killswitch
230 4 killswitch
Note that unless you have "onRespawn=true" like above, XEH will use the default ArmA behaviour which is to NOT run the init EH when a unit respawns.
231 4 killswitch
232 4 killswitch
IMPORTANT: This feature will only work on the player's unit - AI units that respawn won't have their XEH init EH:s re-executed. (If someone can figure out a trick to identify playable units in a MP mission, this limitation could be removed)
233 4 killswitch
234 4 killswitch
h2. New in 1.9: version stringtable and "pre-init EH" code
235 4 killswitch
236 4 killswitch
You can get a string with the version of Extended_Eventhandlers using the "localize" command. Here's an example function which will return the
237 4 killswitch
version as a decimal number or "0" if XEH isn't installed:
238 4 killswitch
<pre>
239 4 killswitch
/*
240 4 killswitch
    Return the version of Extended_Eventhandlers, or 0 if the addon
241 4 killswitch
    isn't installed.
242 4 killswitch
*/
243 4 killswitch
_fXEHversion = {
244 4 killswitch
    private ["_str", "_cfg", "_ver"];
245 4 killswitch
    _cfg=(configFile/"CfgPatches"/"Extended_Eventhandlers"/"SLX_XEH2_Version");
246 4 killswitch
    _ver=0;
247 4 killswitch
248 4 killswitch
    _str=localize "STR_SLX_XEH_VERSION";
249 4 killswitch
    if !(_str == "") then {
250 4 killswitch
        _ver=call compile _str;
251 4 killswitch
    } else {
252 4 killswitch
        // XEH version 1.8 and earlier lacks the stringtable version
253 4 killswitch
        if (isNumber _cfg) then {
254 4 killswitch
            _ver=getNumber _cfg;
255 4 killswitch
        };
256 4 killswitch
    };
257 4 killswitch
    _ver
258 4 killswitch
};
259 4 killswitch
</pre>
260 4 killswitch
Another addition is a way to put code that you want to run only once in a new class, Extended_PreInit_EventHandlers. Anything in that class will
261 4 killswitch
be called early and before any of the normal extended init event handlers have run. 
262 4 killswitch
263 4 killswitch
Here's an example: let's say there's an addon with the following XEH init:
264 4 killswitch
<pre>
265 4 killswitch
// Addon: SLX_MyAddon (old)
266 4 killswitch
class Extended_Init_EventHandlers
267 4 killswitch
{
268 4 killswitch
    class Man
269 4 killswitch
    {
270 4 killswitch
        SLX_Man_init="_this call compile preprocessFile'\SLX_MyAddon\init.sqf'";
271 4 killswitch
    };
272 4 killswitch
};
273 4 killswitch
</pre>
274 4 killswitch
275 4 killswitch
Using the "pre-init" system, that can be rewritten as:
276 4 killswitch
<pre>
277 4 killswitch
// Addon: SLX_MyAddon (new)
278 4 killswitch
class Extended_PreInit_EventHandlers
279 4 killswitch
{
280 4 killswitch
    // The name "SLX_MyAddon_init" needs to be unique
281 4 killswitch
    SLX_MyAddon_init="SLX_fInit=compile preprocessFile'\SLX_MyAddon\init.sqf'";
282 4 killswitch
};
283 4 killswitch
class Extended_Init_EventHandlers
284 4 killswitch
{
285 4 killswitch
    class Man
286 4 killswitch
    {
287 4 killswitch
        // Call the function we loaded in the PreInit class
288 4 killswitch
        SLX_Man_init="_this call SLX_fInit";
289 4 killswitch
    };
290 4 killswitch
};
291 4 killswitch
</pre>
292 4 killswitch
Warning: if you write your addon using this new "pre-init" system, keep in mind that it won't work with XEH versions older than 1.9.
293 4 killswitch
294 4 killswitch
295 4 killswitch
h2. New in 1.91: PostInit and InitPost
296 4 killswitch
297 4 killswitch
Two new event handler types can be used to execute things at a later stage, when all XEH init EH:s have run *and* all mission.sqm init lines have been processed by ArmA. It happens just before the mission's "init.sqf" is executed.
298 4 killswitch
299 4 killswitch
The PostInit handler mirrors the pre-init event handler introduced in 1.9 and will make a code snippet run *once* per mission. Example:
300 4 killswitch
<pre>
301 4 killswitch
class Extended_PostInit_EventHandlers
302 4 killswitch
{
303 4 killswitch
    // Run "late_init.sqf" just before the mission's init.sqf and after
304 4 killswitch
    // all other init EH:s and mission editor init lines have been processed
305 4 killswitch
    SLX_MyAddon_postinit="[] execVM 'SLX_MyAddon\late_init.sqf";
306 4 killswitch
};
307 4 killswitch
</pre>
308 4 killswitch
The other event handler, InitPost type mimics the mission editor init lines in that it will be run once on *every* unit and vehicle in the mission. You write the InitPost EH just like you would the normal XEH init, fired etc handlers. That means you have to wrap the handler in the desired vehicle/unit class for which you want the InitPost EH applied. As an example, you could use this to set a per-unit variable that's needed for your addon. It needs to be done for all units that are derived from the CAManBase class. Here's how it would look:
309 4 killswitch
<pre>
310 4 killswitch
class Extended_InitPost_EventHandlers
311 4 killswitch
{
312 4 killswitch
    class CAManBase
313 4 killswitch
    {
314 4 killswitch
        // Make sure everyone is happy when the mission starts
315 4 killswitch
        SLX_MyAddon_init="_this setVariable ['slx_myaddon_ishappy', true]";
316 4 killswitch
    };
317 4 killswitch
};
318 4 killswitch
</pre>
319 4 killswitch
320 5 killswitch
h2. New in 2.00: Support for ArmA II, serverInit and clientInit entries
321 4 killswitch
322 1 Sickboy
XEH is now useable in ArmA II and adds support for a new ArmA II event - the "firedNear" event.
323 4 killswitch
324 5 killswitch
Furthermore, one can limit a certain init EH to just clients or just servers by placing it in a @serverInit@ or @clientInit@ entry within one of the Init EH classes (ie within @Extended_PreInit_EventHandlers@, @Extended_Init_EventHandlers@ or @Extended_PostInit_EventHandlers@)
325 1 Sickboy
326 1 Sickboy
TODO: add examples of using @serverInit@ and @clientInit@
327 1 Sickboy
328 1 Sickboy
h1. XEH Change log
329 11 killswitch
330 11 killswitch
2.03 (Aug 07, 2009)
331 11 killswitch
Fixed: Steam ArmA2: Addon 'Extended_EventHandlers' requires addon 'CA_Editor'. (#2987)
332 11 killswitch
Fixed: XEH disables pop-up targets. (#2935)
333 11 killswitch
Fixed: XEH init event handlers are re-run after respawn by default. (#3396)
334 12 killswitch
Added: The respawn monitor is able to make use of the @playableUnits@ command to track all playable units, not just the player. (#2647)
335 10 killswitch
336 10 killswitch
2.02 (Jul 13, 2009)
337 10 killswitch
Added: support for AnimStateChanged event handlers. (#2808)
338 8 killswitch
339 8 killswitch
2.01 (Jul 08, 2009)
340 9 killswitch
Fixed: performance drop issue. (#2663)
341 8 killswitch
Fixed: keep the stock BIS event handlers for the A10, Su34, camp fires,
342 8 killswitch
       burning barrels, cruise missile, flag poles, popup targets,
343 8 killswitch
       certain buildings, graves. (#2674)
344 8 killswitch
Fixed: restore the default EH:s for Team Razor units. (#2665)
345 4 killswitch
346 6 killswitch
2.00 (Jun 25, 2009)
347 1 Sickboy
New:   XEH ported to ArmA II with the help of Sickboy.
348 1 Sickboy
Added: support for the new "firedNear" event
349 5 killswitch
Added: @serverInit@ and @clientInit@ can be used along with
350 5 killswitch
       or instead of the normal @init@ snippet to limit initialisation
351 5 killswitch
       to certain types of machines.
352 5 killswitch
353 4 killswitch
354 4 killswitch
1.93 (Feb 16, 2009)
355 4 killswitch
Fixed: empty vehicles created after the mission started did not get their
356 4 killswitch
       InitPost handlers called.
357 4 killswitch
358 4 killswitch
1.92 (Feb 09, 2009)
359 4 killswitch
Changed: Some optimizations made (eg use pre-compiled XEH init functions).
360 4 killswitch
361 4 killswitch
1.91 (Dec 20, 2008) (Unofficial, for use with the ACE mod)
362 4 killswitch
Added: New "post-init" feature that can be used to have a script run once
363 4 killswitch
       at the end of mission initialisation, after all init EH:s and mission
364 4 killswitch
       init lines have executed, but before the mission's init.{sqs,sqf}
365 4 killswitch
       is processed.
366 4 killswitch
Added: There's also a per-unit, "InitPost" XEH framework which lets you run
367 4 killswitch
       scripts at the end of mission init. Unlike the PostInit event handlers
368 4 killswitch
       described above, these snippets run once for every unit in the mission.
369 4 killswitch
       (The name of this framework may change in the future to avoid confusion
370 4 killswitch
       with "PostInit")
371 4 killswitch
372 4 killswitch
1.9  (Sep 21, 2008)
373 4 killswitch
Fixed: before, vehicle crews would not have their XEH init EH:s run until just
374 4 killswitch
       after the mission started. Now they are run before mission start.
375 4 killswitch
Added: A stringtable with the version of XEH in STR_SLX_XEH_VERSION and
376 4 killswitch
       STR_SLX_XEH2_VERSION for use with the "localize" command.
377 4 killswitch
Added: a way to have run-once, "pre-init" code run using the new
378 4 killswitch
       Extended_PreInit_EventHandlers class.
379 4 killswitch
380 4 killswitch
1.8  (Sep 7, 2008)
381 4 killswitch
Fixed: game logics inside vehicles would cause a performance drop due to a
382 4 killswitch
       infinite recursion in the code that handles initialisation of
383 4 killswitch
       vehicle crews. Thanks to UNN for the bug report!
384 4 killswitch
Added: you can make XEH init event handlers execute when players respawn by
385 4 killswitch
       using an inner XEH class and the "onRespawn" boolean property.
386 4 killswitch
387 4 killswitch
1.7  (Mar 16, 2008)
388 4 killswitch
Fixed: Removed XEH from class Static, which stops ArmA from crashing to desktop
389 4 killswitch
       when resuming saved games.
390 4 killswitch
391 4 killswitch
1.6  (Mar 15, 2008)
392 4 killswitch
Fixed: The "exclude" property will apply to the specified class(es) and all
393 4 killswitch
       subclasses thereof.
394 4 killswitch
395 4 killswitch
1.5  (Mar 15, 2008)
396 4 killswitch
Added: Composite ("inner") XEH classes can have an extra property, "exclude"
397 4 killswitch
       which is either a string or an array of strings with the class name(s)
398 4 killswitch
       of vehicles that should *not* get a particular XEH event handler.
399 4 killswitch
400 4 killswitch
1.4  (Mar 15, 2008)
401 4 killswitch
Added: "Static" class vehicles can now have XEH event handlers.
402 4 killswitch
Added: A respawn monitor that restores non-init XEH event handlers after
403 4 killswitch
       the player respawns. Many thanks to Sickboy, LoyalGuard, ViperMaul for
404 4 killswitch
       the initial research and suggestions!
405 4 killswitch
406 4 killswitch
1.3  (Feb 9, 2008)
407 4 killswitch
Added: The ability to use "nested" XEH classes with a "scope" feature
408 4 killswitch
       to limit certain event handlers to objects of specific classes.
409 4 killswitch
410 4 killswitch
1.2  (Jan 29, 2008)
411 4 killswitch
Fixed: SightAdjustment_AutoInit.
412 4 killswitch
Fixed: Extended Dammaged EventHandler.
413 4 killswitch
414 4 killswitch
1.1  (Jan 26, 2008)
415 4 killswitch
Fixed: XEH can now handle extended event handlers that are missing a trailing
416 4 killswitch
       semicolon.
417 4 killswitch
Fixed: the example addons now require the Extended_Eventhandlers addon instead
418 4 killswitch
       of the two older ones. Also, the debug sideChats are now guaranteed to
419 4 killswitch
       be seen when previewing a mission with the example addons loaded.
420 4 killswitch
Fixed: XEH init EH:s are now actually being called on units inside vehicles.
421 4 killswitch
422 4 killswitch
1.0 Initial Release (Dec 31, 2007)
423 4 killswitch
Combined Extended Init, Fired, and Other event handlers. Thanks to Killswitch
424 4 killswitch
for combining them and adding the other extended event handlers!
425 4 killswitch
Added signature and bikey.
426 4 killswitch
427 4 killswitch
428 4 killswitch
h2. Init EH Change log:
429 4 killswitch
430 4 killswitch
1.26
431 4 killswitch
Fixed signature files, bikey, and .pbos.
432 4 killswitch
433 4 killswitch
1.25
434 4 killswitch
Fixed signature files and added bikey.
435 4 killswitch
436 4 killswitch
1.2
437 4 killswitch
Added signature file.
438 4 killswitch
Fixed a bug that caused crashes on some missions. Thanks to LCD344!
439 4 killswitch
Changed ExecVM to Call Compile. Thanks to UNN!
440 4 killswitch
441 4 killswitch
1.1
442 4 killswitch
Fixed people in vehicles having no inits.
443 4 killswitch
Included SightAdjustment example "bridge" addon that allows the GMJ_SightAdjustment
444 4 killswitch
addon to be used with other extended init event handler addons.
445 4 killswitch
446 4 killswitch
1.0 Initial Release
447 4 killswitch
448 4 killswitch
449 4 killswitch
h2. Fired EH Change log
450 4 killswitch
451 4 killswitch
1.0 @ 12-09-07 Initial release
452 4 killswitch
453 4 killswitch
454 4 killswitch
455 4 killswitch
h1. References
456 4 killswitch
457 4 killswitch
XEH for ArmA II is part of the Community Base Addons project:
458 4 killswitch
459 4 killswitch
    http://dev-heaven.net/projects/show/cca
460 4 killswitch
461 4 killswitch
462 4 killswitch
The old XEH, for Armed Assault (ArmA) is hosted here:
463 4 killswitch
464 4 killswitch
    http://dev-heaven.net/projects/show/xeh
465 4 killswitch
466 4 killswitch
467 4 killswitch
BI forums: http://forums.bistudio.com/
468 4 killswitch
469 4 killswitch
gmJamez Sight adjustment addon thread: http://www.flashpoint1985.com/cgi-bin/ikonboard311/ikonboard.cgi?s=60ba6482bbaa47a50e83f8ae5674bdd8;act=ST;f=70;t=65706