Dlinny_Lag Posted August 20, 2021 Posted August 20, 2021 (edited) AAF Informer (Beta) View File AAF Informer is the F4SE plugin to simplify obtaining of AAF scenes information in Papyrus scripts.   AAF Informer consist of 3 parts:  - AAFInformer.dll - F4SE plugin  - AAFCollector.exe - service executable to parse AAF XML files  - Info.pex/Info.psc - Papyrus script to access AAFInformer.dll API  How it works:  At the game start up AAFCollector.exe is started to parse AAF XML files. When it finishes all collected information memorised in F4SE plugin and later this information can be accessed via API calls from Papyrus script.  Following information is available:  - For scenes (actually, positions in AAF terminology) that you can see in AAF UI - see SceneInfo structure in Info.psc  - For scene participant(s) - see ActorInfo in Info.psc  Most information is obtained from tags defined by animation authors or by themes. Themes are essential to get information from AAF scenes. Without themes installed, most likely your script will not receive usefull information. Tags that defines types of actors (like F_F or F_M) are ignored. Actor types retrieved from animation definitions. Tags that defines furniture are ignored. Furniture information retrived from positionData XMLs   Note: animation author's XML files and themes XML files contains a lot of mistakes. Fixing them is out of scope of this tool, but I hope all mistakes will be elimenated sooner or later. To simplify mistakes detection usefull logs could be found in %userprofile%\documents\My Games\Fallout4\F4SE\AAFInformer.log Also this log contains error messages generated by AAFCollector.exe   Implementation details:  What tags are supported? All tags falls into several categories:  Spoiler For scene: Actor type (ignored) Animation author Scene type Scene narrative Scene attributes Scene service attributes Used furniture (ignored) Unrecognozed  For participant: Actor Type Actor position Actors contact Numeric values   How values are applied to actors?  Spoiler  The tags systems to define actor's values like stimulation level or held level seems novice. So some assumptions are made to calculate final values for actors Also tag system to define contact between actors is very scarce and much more assumptions are used. Calculation details could be found in processor   Example of script  Spoiler  function PrintActorInfo(AAF:Info:ActorInfo ai) if !ai Debug.Notification("No actor info") return endif   string report = "" + ai.Index + ". " + ai.Participant.GetDisplayName() + " (" + ai.Type +"): "   if ai.IsAggressor     report += "/Aggr"   endif   if ai.IsVictim     report += "/Vict"   endif   if ai.IsHandGiver     report += "/HG:" + ai.IsHandGiver   endif   if ai.IsHandTaker     report += "/HT:" + ai.IsHandTaker   endif   if ai.IsLegGiver     report += "/LG:" + ai.IsLegGiver   endif   if ai.IsLegTaker     report += "/LT:" + ai.IsLegTaker   endif   if ai.IsOralGiver     report += "/OG:" + ai.IsOralGiver   endif   if ai.IsOralTaker     report += "/OT:" + ai.IsOralTaker   endif   if ai.IsGenitalTaker     report += "/GT:" + ai.IsGenitalTaker   endif   if ai.IsGenitalGiver     report += "/GG:" + ai.IsGenitalGiver   endif   if ai.IsAnalTaker     report += "/AT:" + ai.IsAnalTaker   endif   if ai.IsButtTaker     report += "/BT:" + ai.IsButtTaker   endif   if ai.IsNippleTaker     report += "/NT:" + ai.IsNippleTaker   endif if ai.IsOtherGiver report += "/OtG:" + ai.IsOtherGiver endif report += ", Held=" + ai.HeldLevel + ", Stim=" + ai.StimLevel + ", Love=" + ai.LoveLevel + ", Dom=" + ai.DomLevel Debug.Notification(report) endfunction function PrintActorsInfo(AAF:Info:ActorInfo[] ais) if !ais Debug.Notification("No data") return endif int i = 0 while i < ais.Length PrintActorInfo(ais[i]) i += 1 endwhile endfunction function Report(var[] args) Actor[] actors = Utility.VarToVarArray(args[1]) as Actor[] AAF:Info:ActorInfo[] ais = new AAF:Info:ActorInfo[actors.Length] int i =0 while i < ais.Length ais[i] = new AAF:Info:ActorInfo i += 1 endwhile AAF:Info:SceneInfo s = AAF:Info.GetSceneAndActors(args[2] as string, actors, ais) Debug.Notification("[" + s.Name + "] by [" + s.Author + "] started! " + " Furn="+s.FurnGroup) PrintActorsInfo(ais) endfunction Event AAF:AAF_API.OnAnimationStart(AAF:AAF_API sender, var[] args) if args[0] as int == 0 Report(args) else Debug.Notification("Failed to start AAF scene") endif Endevent Event AAF:AAF_API.OnAnimationChange(AAF:AAF_API sender, var[] args) if args[0] as int == 0 Report(args) endif Endevent    Known issues: 1. Some positions contains location attribute that has multiple furniture groups separated by comma. Such locations are handled, but I can't test it as such position does not appear AAF UI. Probably defining multiple furniture groups is invalid location definition, but without original AAF source code it hard to say definitely. 2. I had no chances to test AAF sex overriding with keywords. So not sure is it even working. 3. With current system of tags it is not possible to recognize how actors are contacted with each other, so all contacts for actors with index greater than 0 are applied to actor with index 0. So scenes like "BP70 Lesbian Threesome..." might have irrelevant contact information. See below.   Next steps: - try to introduce new tags system to allow definition of actors contacts exacly. This plugin will be updated on succees. - try to introduce new tags system to allow definition of Held/Love/Dom/Stim values for each actor. This plugin will be updated on succees. - try to introduce new tags system to allow definition of actor position for actors with index greater than 0. This plugin will be updated on succees.   New system to define contacts beween actors in scenes. Spoiler It is a problem to understand how actors are contacted in scene when tag for it is defined like HandToMouth or PenisToEither in case where more than 2 actors participate in scene.  To solve this problem new format of contacts definitions is introduced. The base is same, as introduced in AAF Themes, but extra data is necessary to difine actors that related to the contact definition.  An example of tag: PenisToEither:1-0 1-0 is the definition of contact direction. From actor with index 1 to actor with index 0. So actor 1 uses Penis to contact with actor 0, and actor 0 is contacted by Either (Genital+Anal) This tag works exactly as PenisToEither when 2 actors are defined for scene where actor 0 is receiver, and actor 1 is giver. But it can be used for scenes with more than 2 actors.  More complex example: <tag position="BP70 Lesbian Threesome 6" animation="rxl_bp70_lesbianthreesome06" tags="BP70,F_F_F,NoFurn,Cunnilingus,FromFront,Neutral,Climax,Held1,Love5,Stim3,Dom3,MouthToVagina:1-0,MouthToVagina:2-1,MouthToVagina:0-2"/> 3 tags defines 3 contacts between 3 actors - MouthToVagina:1-0,MouthToVagina:2-1,MouthToVagina:0-2 In this case it is not a problem to understand how actors contacted with other.  Additional benefit- tags like TongueToAnus can be correctly supported. Usually, actor 0 is the victim in agressive scenes. And tags like PenisToAnus should means that agreessor (actor 1) uses Penis, and victim (actor 0) - Anus. I.e. direction is defined from agressor to victim. And this is ok for most of contacts definitions. But for TongueToAnus direction should be defined from victim to agressor. It can be solved by changing order of actors in scene definition, but this will mean that actor 0 should not be treated as victim. New system allows to define correct direction by TongueToAnus:0-1. I.e, from actor 0 (victim, Tongue) to actor 1 (agressor, Anus) but keep actor 0 as a victim without scenes alteration.  Also, it is not a problem to define contact from actor to the same actor. Like HandToStick:0-0 or HandToFeet:5-5    Sample file with contacts that handles tentacles made by Snapdragon_  Feel free to request new features.    Submitter Dlinny_Lag Submitted 08/21/2021 Category Framework & Resources Requirements AAF, F4SE Edited August 22, 2021 by Dlinny_Lag 3
kziitd Posted August 23, 2021 Posted August 23, 2021 don't understand , but support your participating in Fo4 modification
RawThunderHustle Posted March 22, 2022 Posted March 22, 2022 I downloaded it but it's not showing in my download folder
Dlinny_Lag Posted March 22, 2022 Author Posted March 22, 2022 5 hours ago, RawThunderHustle said: I downloaded it but it's not showing in my download folder There are multiple options  - File downloaded to another folder. Try to open folder from browser immediately after downloading and search for the file  - File downloading was interrupted due to network failure. Try to download it once again  - File downloading interrupted by antivirus software or downloaded file removed by antivirus software. Exact steps depends on your antivirus software. Try to instruct your antivirus software to allow file downloading and saving  - File actually downloaded but you just overlooked it. Try to sort files in folder by date or try to search file by name 1
krlll Posted April 17, 2022 Posted April 17, 2022 (edited) Tried this but get this error in AAFInformer.log: Executing "E:\Steam\steamapps\common\Fallout 4\Data\F4SE\Plugins\AAFCollector.exe" "C:\Users\USERNAME\Documents\My Games\Fallout4\F4SE\__AAF_XML_DATA.bin" C:\Users\USERNAME\Documents\My Games\Fallout4\F4SE\__AAF_XML_DATA.bin failed with error -1073741571. Done  -- UPDATE -- Ran AAFCollector.exe as Admin. Got a different error: Failed to execute XML Collector with error = 740  Edited April 17, 2022 by krlll
Dlinny_Lag Posted April 17, 2022 Author Posted April 17, 2022 4 hours ago, krlll said: failed with error -1073741571. Stack overflow error. If you could compress to zip your E:\Steam\steamapps\common\Fallout 4\Data\AAF\ folder and share it then I will have a chance to investigate the problem. Â 4 hours ago, krlll said: Failed to execute XML Collector with error = 740 You shouldn't run it as Administrator. Please revert back compatibility settings.
ookkerpak Posted December 6, 2022 Posted December 6, 2022 I made a mod that applies SAM adjustments to AAF animations. It uses SAMFormer. I make adjustments, add tags to positiondata.xml and then SAMFormer automatically applies the adjustments to animations when they play. The SAMFormer tags look something like this: "SF:F=female adjustment:M=male adjustment" One user told me that our mods appear to conflict, he wrote that he gets CTD even before fallout is launched if both are enabled. Could it be because of this different kind of tag format? 1
Dlinny_Lag Posted December 6, 2022 Author Posted December 6, 2022 (edited) 2 hours ago, ookkerpak said: he wrote that he gets CTD even before fallout is launched if both are enabled. Could it be because of this different kind of tag format? Thanks a lot for notice. I will investigate. I saw your mod, just had no time to try it. Edited December 6, 2022 by Dlinny_Lag 1
Dlinny_Lag Posted February 4, 2023 Author Posted February 4, 2023 Sample tags file for supporting @Snapdragon_Â 's Animated Tentacles AnimTentacle_Contacts_tagData.xml
LynErso666 Posted December 1, 2023 Posted December 1, 2023 This is super awesome! What is it tho? lol I read the desc but what exactly is this for?Â
Dlinny_Lag Posted December 1, 2023 Author Posted December 1, 2023 (edited) 1 hour ago, LynErso666 said: but what exactly is this for? It is my first attempt to introduce the "custom" attributes (not just tags) for animations. This mod analyses tags associated with AAF's positions (tags are defined in AAF related XML files) and generates some meaningful values (custom attributes) available for the Papyrus scripts. I use this mod in my LiP Framework to simplify AAF integration.  Currently I'm working on much more comprehensive solution to attach "metadata" to AAF/NAF positions (animation scenes) and the new solution will supersede this mod. So this mod will be a subject of deprecation soon.  Edited December 1, 2023 by Dlinny_Lag 1
LynErso666 Posted December 1, 2023 Posted December 1, 2023 9 minutes ago, Dlinny_Lag said: It is my first attempt to allow definition of the "custom" attributes (not just tags) for animations. This mod analyses tags associated with AAF's positions (tags are defined in AAF related XML files) and generates some meaningful values (custom attributes) available for the Papyrus scripts. I use this mod in my LiP Framework to simplify AAF integration.  Currently I'm working on much more comprehensive solution to attach "metadata" to AAF/NAF positions (animation scenes) and the new solution will supersede this mod. So this mod will be a subject of deprecation soon.  Ohhhh wow, so wait a minute, does this mean animation packs whose tags are a mess will still be read fine with AAF using this new advancement?
Dlinny_Lag Posted December 1, 2023 Author Posted December 1, 2023 (edited) 27 minutes ago, LynErso666 said: Ohhhh wow, so wait a minute, does this mean animation packs whose tags are a mess will still be read fine with AAF using this new advancement? This mod doesn't alter any AAF functionality. So, XML "files reading" remain untouched. This mod just adds a new option to get information from existing XML files in a more structured way. Edited December 1, 2023 by Dlinny_Lag
LynErso666 Posted December 1, 2023 Posted December 1, 2023 38 minutes ago, Dlinny_Lag said: This mod doesn't alter any AAF functionality. So, XML "files reading" remain untouched. This mod just adds a new option to get information from existing XML files in a more structured way. Ohhh that IS awesome! Thank you so much for your work, Dlinny_Lag! 1
Mikochi35p Posted January 10 Posted January 10 hello! I just downgraded to the .163 version, because most of the mods are incompatible or still not updated yet, can i still use this mod? and if yes what version should I download? ty!
Dlinny_Lag Posted January 10 Author Posted January 10 2 hours ago, Mikochi35p said: what version should I download? Use AAFInformer-0.8.0.zip It contains all files to use in old gen (1.10.163) and next gen (1.10.984) 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now