Solus 1 Posted December 31, 2007 Latest version: 1.7 @ Mar. 16 2008 Extended Event Handlers (XEH) by Solus and Killswitch Combines Extended Init, Fired, and other event handlers into a single addon. Thanks to Killswitch for combining them and adding the ability to use extended event handlers for all events! Includes working signature and key. The cfgPatch names are backwards compatible with addons made for the Extended Init and Fired EH addons. The previous addons should be removed, but shouldn't have any problems if present. Downloads: XEH Version 1.7: Extended EventHandlers 1.7 @ ArmedAssault.info Extended EventHandlers 1.7 @ Armaholic.com Extended EventHandlers 1.7 @ ofp-zeus.com Change log: 1.7 Fixed: Removed XEH from class Static, which stops ArmA from crashing to desktop when resuming saved games. 1.6 Fixed: The "exclude" property will apply to the specified class(es) and all subclasses thereof. 1.5 Added: Composite ("inner") XEH classes can have an extra property, "exclude" which is either a string or an array of strings with the class name(s) of vehicles that should *not* get a particular XEH event handler. 1.4 Added: "Static" class vehicles can now have XEH event handlers. Added: A respawn monitor that restores non-init XEH event handlers after the player respawns. Many thanks to Sickboy, LoyalGuard and ViperMaul for the initial research and suggestions! Version 1.3 Added: The ability to use "nested" XEH classes with a "scope" feature to limit certain event handlers to objects of specific classes. 1.2 Fixed: SightAdjustment_AutoInit. Fixed: Extended Dammaged EventHandler. 1.1 Fixed: XEH can now handle extended event handlers that are missing a trailing semicolon. Fixed: the example addons now require the Extended_Eventhandlers addon instead of the two older ones. Also, the debug sideChats are now guaranteed to be seen when previewing a mission with the example addons loaded. Fixed: XEH init EH:s are now actually being called on units inside vehicles. Description: 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. 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. Other Extended Event Handlers by Killswitch Adds extended event handlers for all events. Extended Fired Event Handler This allows a virtually infinite amount of fired event handlers to be used together from different addons. The extended fired event handler has several different parts: 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. The extended fired event handler is added to the base class Extended_EventHandlers so that all of the cfgVehicles class EventHandlers 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 extended fired events are called by using getVariable to retrieve them from the unit. 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. 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. More can be read at the previous thread: http://www.flashpoint1985.com/cgi-bin....89;st=0 Thanks to Mr Groch for testing! Thanks to ofp-zeus.com, Armaholic.com, AssaultMissionStudio.de, Combat-Prison.net, and ArmedAssault.info for hosting! License: XEH can be included in other releases either as the original archive or as the extracted files, preferably with the readme to help explain things. Modified versions can be released to add features or fix bugs or compatibility issues, but it should be signed and should retain backwards compatibility. Killswitch handles the SLX_XEH key and can check the code and sign new versions, although a new key can be used if necessary. Share this post Link to post Share on other sites
dmarkwick 261 Posted December 31, 2007 Aha, a final event handling solution thanks very much to all involved. So this works right off the bat, no changes needed to any existing addons right? Share this post Link to post Share on other sites
Pillage 0 Posted December 31, 2007 I'm not an addon maker but I am aware of the benefit this addon is to the community. Good work Solus & Killswitch. Share this post Link to post Share on other sites
big 0 Posted December 31, 2007 Armaholic.com mirror: Extended eventhandlers (xeh) Share this post Link to post Share on other sites
Deadeye 1 Posted December 31, 2007 ArmedAssault.info Mirror : http://www.armedassault.info/index.p....lang=en Share this post Link to post Share on other sites
Dwarden 1125 Posted December 31, 2007 Fantastico ... Share this post Link to post Share on other sites
VictorFarbau 0 Posted December 31, 2007 @Solus, a quick note. The examples include config.cpp files that still state <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> requiredAddons[] = {"Extended_Init_EventHandlers","Extended_Fired_EventHandlers"}; I changed that to just "Extended_EventHandlers" in my config.cpp which works fine. Cheers, VictorFarbau Share this post Link to post Share on other sites
william1 0 Posted December 31, 2007 will there be conflict if i put this PBO along with the version 1.26 ? many addons require to have the anterior version in their requiredaddons line Share this post Link to post Share on other sites
VictorFarbau 0 Posted December 31, 2007 @william1 - I guess you should not keep the old versions. XEH also defines the required classes so "old" addons should work. At least it worked in a quick test for me (VFAI requiring "Extended_Init_Eventhandlers" still worked fine). It's apparently more a cosmetic matter in the examples of XEH. Cheers, VictorFarbau Share this post Link to post Share on other sites
Q1184 0 Posted December 31, 2007 Yes, from my tests it works fine with addons that require Extended_Init_Eventhandlers and Extended_Fired_Eventhandlers. Thanks Solus for including backwards compatibility. Share this post Link to post Share on other sites
lee_h._oswald 0 Posted December 31, 2007 A final version, great! I was a bit confused by all the eventhandler addons with different names/etc. Thanks! MfG Lee Share this post Link to post Share on other sites
.kju 3244 Posted December 31, 2007 Sincere thanks to Solus and especially Killswitch to sort that one out. Top notch stuff! Share this post Link to post Share on other sites
Dwarden 1125 Posted December 31, 2007 (edited) Warning Message: Script Extended_Init_EventHandlers\Init.sqf not foundseems like some addon(s) got issue vs backward compatibilityguess this should fix it (it was one from Examples ) from examples SightAdjustment_AutoInit.pbo\config.cpp init="[_this select 0,""Extended_Init_EventHandlers""] execVM ""\Extended_Init_EventHandlers\Init.sqf"""; to init="[_this select 0,""Extended_Init_EventHandlers""] execVM ""\Extended_EventHandlers\Init.sqf"""; Edited April 16, 2009 by W0lle Share this post Link to post Share on other sites
Pillage 0 Posted December 31, 2007 After d/loading this I removed v1.26 and replaced with this version but it results in the error Dwarden posted constantly after every mission load/unload. Warning Message: Script Extended_Init_EventHandlers\Init.sqf not found However by replacing the v1.26 files the error no longer occurs, which I can only assume has something to do with what VictorFarbau posted... <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> requiredAddons[] = {"Extended_Init_EventHandlers","Extended_Fired_EventHandlers"}; I'm happy just to leave these additional files in my addons folder if it fixes this error but if they're meant to have been superseded I'd prefer to be able to get rid of them. Share this post Link to post Share on other sites
Dwarden 1125 Posted December 31, 2007 tried my fix ? Share this post Link to post Share on other sites
Pillage 0 Posted January 1, 2008 No... ...Tried and fixed, thanks Dwarden. Share this post Link to post Share on other sites
Solus 1 Posted January 1, 2008 Here's a fixed SightAdjustment bridge addon: http://files.filefront.com/SightAd....fo.html There were some other problems that were fixed too- the fired and other EH events weren't used for people. Share this post Link to post Share on other sites
Dwarden 1125 Posted January 1, 2008 i'm unable to download from filefront ... constant Quote[/b] ]There was an error processing your request; it appears to be invalid or there was an error with your conection. Please wait while your request is retried... or file key error or else ... in past 3 months FileFront service turned to be absolutely useless (it's getting worse and worse) can someone host it on different mirror ? File Factory ? Media Fire ? whatever else Share this post Link to post Share on other sites
william1 0 Posted January 1, 2008 here you have it http://rapidshare.com/files/80517492/SightAdjustment_AutoInit.pbo.html or http://qshare.com/get/117807/SightAdjustment_AutoInit.pbo.html Share this post Link to post Share on other sites
Wolfrug 0 Posted January 3, 2008 (edited) Hm. I can't get my RUG_DSAI addon to work with this version. When only these are loaded, the init scripts aren't run at all. When the old version is in, they work. I don't get any other errors like people have listed above, and for instance MaddMatt's Effects work like advertised, no problem. So I'm guessing there's a problem in my setup of the addon. Here's the config.cpp (conspiciously similar to the example configs...): class CfgPatches { class RUG_DSAI { units[] = {}; weapons[] = {}; requiredVersion = 1.08; requiredAddons[] = {"CAData","CASounds", "Extended_Init_Eventhandlers"}; RUG_DSAI_WantedSide[] = {"WEST", "GUER"}; }; }; class Extended_Init_EventHandlers { class Man { RUG_DSAI_InitMan ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class Car { RUG_DSAI_InitCar ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class Tank { RUG_DSAI_InitTank ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class Plane { RUG_DSAI_InitPlane ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class Helicopter { RUG_DSAI_InitHelo ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class Ship { RUG_DSAI_InitShip ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; class StaticWeapon { RUG_DSAI_InitWeapon ="if (leader (_this select 0) == (_this select 0)) then {[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf""};"; }; }; #define GENERAL_SPEECH_SOUND_LEVEL db-0 #define GENERAL_SPEECH_SOUND_LEVEL2 db+5 #define GENERAL_SPEECH_SOUND_LEVEL3 db-10 class CfgSounds { // RUG_DSAI sounds #include "RUG_DSAI\DSAI_BehaviourSounds.h" #include "RUG_DSAI\DSAI_FleeingSounds.h" #include "RUG_DSAI\DSAI_WoundedSounds.h" #include "RUG_DSAI\DSAI_OwnKilledSounds.h" #include "RUG_DSAI\DSAI_EnemyKilledSounds.h" #include "RUG_DSAI\DSAI_MiscSounds.h" #include "RUG_DSAI\DSAI_GenericSounds.h" #include "RUG_DSAI\DSAI_ContactSounds.h" #include "RUG_DSAI\DSAI_UnderFireSounds.h" }; Any help much appreciated Regards, Wolfrug Edited April 16, 2009 by W0lle Share this post Link to post Share on other sites
gL33k 0 Posted January 3, 2008 i tried to get DSAI working. after a long time of addons sorting , i tested -openal in start parameter. and now, it works. i don't know more... edit: na, forget, i have the old EH too. Share this post Link to post Share on other sites
Dwarden 1125 Posted January 3, 2008 (edited) tried ? .. requiredAddons[] = {"CAData","CASounds", "Extended_EventHandlers"}; RUG_DSAI_WantedSide[] = {"WEST", "GUER"}; }; }; class Extended_EventHandlers {}; class Extended_Init_EventHandlers { ... ? Edited April 16, 2009 by W0lle Share this post Link to post Share on other sites
sickboy 13 Posted January 3, 2008 (edited) The problem seems to be as following: The init eventhandlers are ran earlier than before. Therefor at the moment of running (_this select 0) equals something like 0: No group. 1 second later, the object is fully initialized and everything is normal. This means you will have to make it like: RUG_DSAI_InitMan ="[_this select 0, ""RUG_DSAI""] execVM ""\RUG_DSAI\RUG_DSAISelfInit.sqf"""; then in RUG_DSAISelfInit.sqf make sure there's a sleep 1; and then a: if (leader (_this select 0) != (_this select 0)) exitWith {}; I'll send you a fixed version aswell as a multiplayer compatible version (where the server decides what is being said so it's synchronised on all clients, normal operations happen when playing Single Player) Edited April 16, 2009 by W0lle Share this post Link to post Share on other sites