vaultbait Posted July 31, 2022 Share Posted July 31, 2022 24 minutes ago, madeyoulook said: Hi, I'm getting the "[061] no available actors in scan range" error whenever I open AAF and it stays like that no matter what I do. I've tried reinstalling, uninstalling and deleting everything AAF related to no avail. However, animations do work when I initiate them through SEU, the catch here is though that they get cut off short (last like 10 seconds) and I get error codes "[028] actor failed to lock in, cancelling animation" and [032] Actor: PCNAME :20] lock timed out. I don't really know what to do to fix this but any help will be appreciated! Address that missing furniture definition error first. You clearly have some incompatible animation data (most commonly an animation pack and an animation patch altering it but built for a different version). For faster assistance, check into the help channels on the AAF Discord. 1 Link to comment
madeyoulook Posted July 31, 2022 Share Posted July 31, 2022 14 minutes ago, vaultbait said: Address that missing furniture definition error first. You clearly have some incompatible animation data (most commonly an animation pack and an animation patch altering it but built for a different version). For faster assistance, check into the help channels on the AAF Discord. Ok I'll check in with discord. Thank you! Link to comment
TheZomby Posted August 3, 2022 Share Posted August 3, 2022 How one would add custom race using existing skeletons to AAF ? I've just found GO4 Dogmeat Changer XB by sp0ckrates that creates a bunch of custom races so that you can switch Dogmeat into different existing creatures, but they all default to "Human" in AAF. I've tried to add one of the race to the "AAF_raceData_Fallout4.xml" so that it would use the animations made for that squeleton, but without any results so far (it looks like this, I've added a line before the </raceData> and put it there) <race id="Deathclaw" source="GO4_Dogmeat_Changer_XB_sp0ckrates.esp" form="13006AE1" skeleton="Deathclaw" requiresAnimationReset="true"/> I pulled the form ID with a console commands, I've checked other existing race and the numbers match with what is in the xml so I believe I put in the right numbers. Does the "id" needs to be something specific or is it only to help you know what it is supposed to be in the xml ? Link to comment
serhiodrubuzan Posted August 3, 2022 Share Posted August 3, 2022 Tell me where to download AAF XML 1. 0. 3. ? Link to comment
vaultbait Posted August 3, 2022 Share Posted August 3, 2022 11 hours ago, serhiodrubuzan said: Tell me where to download AAF XML 1. 0. 3. ? Are you talking about AJ's Various AAF XML Files from years ago? If so, I don't think 1.0.3 of that is compatible with anything these days. Where did you find "AAF XML 1.0.3" mentioned? Link to comment
serhiodrubuzan Posted August 4, 2022 Share Posted August 4, 2022 10 hours ago, vaultbait said: Are you talking about AJ's Various AAF XML Files from years ago? If so, I don't think 1.0.3 of that is compatible with anything these days. Where did you find "AAF XML 1.0.3" mentioned? It was on Loverslab and i accidentary deleted it . It worked great with Viodoe dick for femele servitron Link to comment
Indarello Posted August 4, 2022 Share Posted August 4, 2022 On 8/3/2022 at 7:24 AM, TheZomby said: How one would add custom race using existing skeletons to AAF ? I've just found GO4 Dogmeat Changer XB by sp0ckrates that creates a bunch of custom races so that you can switch Dogmeat into different existing creatures, but they all default to "Human" in AAF. I've tried to add one of the race to the "AAF_raceData_Fallout4.xml" so that it would use the animations made for that squeleton, but without any results so far (it looks like this, I've added a line before the </raceData> and put it there) <race id="Deathclaw" source="GO4_Dogmeat_Changer_XB_sp0ckrates.esp" form="13006AE1" skeleton="Deathclaw" requiresAnimationReset="true"/> I pulled the form ID with a console commands, I've checked other existing race and the numbers match with what is in the xml so I believe I put in the right numbers. Does the "id" needs to be something specific or is it only to help you know what it is supposed to be in the xml ? Id is specific reference to race in .esp Link to comment
TheZomby Posted August 5, 2022 Share Posted August 5, 2022 9 hours ago, Indarello said: Id is specific reference to race in .esp Thanks, I went to check it in FO4Edit and it is working now, it recognise the race as Deathclaw. Next problem now is there is no penis on the deathclaw, need to find what file I need to add to it next. Link to comment
maddadicusrex Posted August 5, 2022 Share Posted August 5, 2022 10 hours ago, TheZomby said: Thanks, I went to check it in FO4Edit and it is working now, it recognise the race as Deathclaw. Next problem now is there is no penis on the deathclaw, need to find what file I need to add to it next. AAF Creature Resources has penises for most critters. Link to comment
TheZomby Posted August 7, 2022 Share Posted August 7, 2022 On 8/5/2022 at 11:27 AM, maddadicusrex said: AAF Creature Resources has penises for most critters. I have them installed, they show on regular Deathclaws, but not on the custom race that uses the same skeleton. Link to comment
Cannaisseur Posted August 8, 2022 Share Posted August 8, 2022 On 2/18/2021 at 12:25 AM, dagobaking said: AAF includes the API needed for knockout framework to avoid this (putting a keyword on knocked out characters so that AAF ignores them). This could even just be a simple patch that someone makes. How would I go about doing this? Link to comment
dagobaking Posted August 8, 2022 Author Share Posted August 8, 2022 34 minutes ago, Cannaisseur said: How would I go about doing this? https://bitbucket.org/dagobaking/aaf-framework/wiki/API/AAF_ActorBlocked.md#!keyword-aaf_actorblocked Link to comment
vaultbait Posted August 8, 2022 Share Posted August 8, 2022 Toying with doing a soft AAF integration in a Papyrus script, and am running up against a wall. I've had luck relying on ScriptObject.CallFunction elsewhere, including calling AAF's GetProtectedEquipmentKeywords() to optionally identify items AAF wouldn't strip from a character. Unfortunately, one thing I need in order to use it to call StartScene() is the ability to pass Actor[] in, but CallFunction needs the called function's parameters supplied in a variant array already, and arrays in arrays aren't a thing. I tried packing my actors array with VarArrayToVar() but continue to get a type mismatch logged, probably because CallFunction is extremely picky about matching object types exactly, and the packed array won't be type Actor[]. Has anyone had any luck writing something along these lines, or am I trying to do the impossible? Should I be creating a proxy script which calls the AAF API normally so I can implement serialization/deserialization which CallFunction won't choke on? Link to comment
Cannaisseur Posted August 9, 2022 Share Posted August 9, 2022 10 hours ago, dagobaking said: https://bitbucket.org/dagobaking/aaf-framework/wiki/API/AAF_ActorBlocked.md#!keyword-aaf_actorblocked I'm not quite sure what I'm doing with the keyword. Do I just need to create a plugin to remove it? I thought there'd be more to it. Link to comment
dagobaking Posted August 9, 2022 Author Share Posted August 9, 2022 On 8/8/2022 at 4:13 PM, vaultbait said: Toying with doing a soft AAF integration in a Papyrus script, and am running up against a wall. I've had luck relying on ScriptObject.CallFunction elsewhere, including calling AAF's GetProtectedEquipmentKeywords() to optionally identify items AAF wouldn't strip from a character. Unfortunately, one thing I need in order to use it to call StartScene() is the ability to pass Actor[] in, but CallFunction needs the called function's parameters supplied in a variant array already, and arrays in arrays aren't a thing. I tried packing my actors array with VarArrayToVar() but continue to get a type mismatch logged, probably because CallFunction is extremely picky about matching object types exactly, and the packed array won't be type Actor[]. Has anyone had any luck writing something along these lines, or am I trying to do the impossible? Should I be creating a proxy script which calls the AAF API normally so I can implement serialization/deserialization which CallFunction won't choke on? I'm not sure myself. Not clear what you are trying to do. But, @EgoBallistic might have a better idea for Papyrus issues like this. 19 hours ago, Cannaisseur said: I'm not quite sure what I'm doing with the keyword. Do I just need to create a plugin to remove it? I thought there'd be more to it. You put the keyword onto actors that you want AAF to ignore. Yes. This would be done by creating a separate mod. Link to comment
vaultbait Posted August 10, 2022 Share Posted August 10, 2022 1 hour ago, dagobaking said: I'm not sure myself. Not clear what you are trying to do. But, @EgoBallistic might have a better idea for Papyrus issues like this. Thanks. To restate, I'm trying to conditionally call AAF's StartScene() function from a Papyrus script in my mod attached to an Actor reference as a makeshift activator, but only when AAF.esm is actually installed/enabled (as a so-called "soft dependency"). Creating a ScriptObject from the soft-depended plugin and then passing the name of the desired function and a variant array of its parameters to the CallFunction() method is how this is usually done, since the indirection makes it possible to still execute the script and optionally resolve that dependency at execution time. The closest I've gotten is this, which compiles but results in a type mismatch at runtime: Spoiler Scriptname ExampleScene extends Actor Const Event OnActivate(ObjectReference akActionRef) If (akActionRef == Game.GetPlayer() as ObjectReference) If Game.IsPluginInstalled("AAF.esm") ; soft integration Quest AAF_MainQuest = Game.GetFormFromFile(0x00000F99, "AAF.esm") as Quest ScriptObject AAF_API = AAF_MainQuest.CastAs("AAF:AAF_API") var[] Parameters = new var[0] ; this will hold parameters passed to StartScene var[] Actors = new var[0] ; our actorlist will be the first parameter Actors.Add(Game.GetPlayer()) Actors.Add(Self as Actor) Parameters.Add(Utility.VarArrayToVar(Actors)) ; pack the actors array Parameters.Add(None) ; pass an empty SceneSettings for now AAF_API.CallFunction("StartScene", Parameters) Else ; consolation prize EndIf EndIf EndEvent Link to comment
Cannaisseur Posted August 10, 2022 Share Posted August 10, 2022 3 hours ago, dagobaking said: I'm not sure myself. Not clear what you are trying to do. But, @EgoBallistic might have a better idea for Papyrus issues like this. You put the keyword onto actors that you want AAF to ignore. Yes. This would be done by creating a separate mod. I want to create a plugin to make knocked out actors NOT ignore AAF. I'm trying to stop them from being ignored. Link to comment
LooksKeen Posted August 10, 2022 Share Posted August 10, 2022 On 7/31/2022 at 4:30 PM, madeyoulook said: Hi, I'm getting the "[061] no available actors in scan range" error whenever I open AAF and it stays like that no matter what I do. I've tried reinstalling, uninstalling and deleting everything AAF related to no avail. However, animations do work when I initiate them through SEU, the catch here is though that they get cut off short (last like 10 seconds) and I get error codes "[028] actor failed to lock in, cancelling animation" and [032] Actor: PCNAME :20] lock timed out. I don't really know what to do to fix this but any help will be appreciated! Reveal hidden contents I'm having the same problem. If you got a fix, I and anyone else with the issue would appreciate posting it here. Link to comment
EgoBallistic Posted August 10, 2022 Share Posted August 10, 2022 (edited) 9 hours ago, vaultbait said: Thanks. To restate, I'm trying to conditionally call AAF's StartScene() function from a Papyrus script in my mod attached to an Actor reference as a makeshift activator, but only when AAF.esm is actually installed/enabled (as a so-called "soft dependency"). Creating a ScriptObject from the soft-depended plugin and then passing the name of the desired function and a variant array of its parameters to the CallFunction() method is how this is usually done, since the indirection makes it possible to still execute the script and optionally resolve that dependency at execution time. The closest I've gotten is this, which compiles but results in a type mismatch at runtime: The runtime type mismatch is because StartScene() expects the first parameter to be Actor[] and not a Var which it then expands with VarToVarArray(). It will be much less painful to write a proxy quest that makes the AAF calls for you. How I do this: Make a new standalone quest AAF_ProxyQuest, and give it a script AAF_ProxyScript. You can make AAF_ProxyScript assume that AAF is available, and make it fully dependent on AAF. You can use the SceneSettings struct, use the AAF keywords as Properties, call functions without using CallFunction(), and listen for AAF events. AAF_ProxyScript can also depend on your mod's scripts, it doesn't need to use CallFunction to interact with your other scripts. In AAF_ProxyQuest's settings, make sure "Run Once" and "Start Game Enabled" are turned OFF. Now, in AAF_ProxyScript, you need to make a wrapper function for StartScene that can be called via CallFunction(). Make the first parameter a Var which will contain the Actors array packed by VarArrayToVar(). Make the other parameters whatever you need, e.g. includeTags, excludeTags, skipWalk, etc. Then the wrapper function unpacks the Actors and puts the various other parameters into SceneSettings, and calls AAF. In your mod's main quest, you need to check whether AAF is loaded, and start the proxy quest if it is: GlobalVariable Property AAF_Available Auto Const Function LoadAAF Quest AAF_ProxyQuest = Game.GetFormFromFile(0x000123, "MyMod.esp") as Quest AAF_ProxyQuest.Stop() If Game.IsPluginInstalled("AAF.esm") AAF_Available.SetValue(1) AAF_ProxyQuest.Start() Else AAF_Available.SetValue(0) EndIf EndFunction You can then use the GlobalVariable to let other scripts know whether they can use the proxy. If AAF_Available.GetValue() == 1 Quest AAF_ProxyQuest = Game.GetFormFromFile(0x000123, "MyMod.esp") as Quest ScriptObject AAFProxy = AAF_ProxyQuest.CastAs("AAF_ProxyScript") ; set up your AAF variables AAFProxy.CallFunction(...) Else ; AAF not available EndIf Your other scripts must not have any script dependencies on AAF_ProxyScript, i.e. they can only access it via GetFormFromFile() and CallFunction(). This is so that if AAF is not installed, the AAF_ProxyScript will fail due to incomplete types, but the other scripts will be protected because they don't in turn depend on AAF_ProxyScript. Edited August 10, 2022 by EgoBallistic 3 Link to comment
vaultbait Posted August 10, 2022 Share Posted August 10, 2022 (edited) 4 hours ago, EgoBallistic said: Your other scripts must not have any script dependencies on AAF_ProxyScript, i.e. they can only access it via GetFormFromFile() and CallFunction(). This is so that if AAF is not installed, the AAF_ProxyScript will fail due to incomplete types, but the other scripts will be protected because they don't in turn depend on AAF_ProxyScript. This was my fallback plan, so glad to know that it should work at least. I didn't know if there might be more direct serialization options for packing array type parameters into the CallFunction parameters array such that they'd come out usable at the other end, but it sounds like my suspicions were, unfortunately, correct. Thanks for confirming! Edit: Yep, this approach worked perfectly. I'm able to walk up to an NPC who has the activator script bound to them, click on them as if to talk, and AAF fires up a scene as intended, all via a soft dependency on the proxy script so that AAF remains functionally optional. Edited August 10, 2022 by vaultbait 1 Link to comment
lee3310 Posted August 11, 2022 Share Posted August 11, 2022 (edited) 21 hours ago, Cannaisseur said: I want to create a plugin to make knocked out actors NOT ignore AAF. I'm trying to stop them from being ignored. I'm pretty sure they aren't ignored by AAF cause i remember starting a scene with a knocked out NPC but If you are making a patch, you need to wake them first otherwise they will stay laying on the ground like dead bodies during the scene. Download ko Framework API files (very helpful) and start from there. Edited August 11, 2022 by lee3310 Link to comment
Cannaisseur Posted August 11, 2022 Share Posted August 11, 2022 5 hours ago, lee3310 said: I'm pretty sure they aren't ignored by AAF cause i remember starting a scene with a knocked out NPC but If you are making a patch, you need to wake them first otherwise they will stay laying on the ground like dead bodies during the scene. Download ko Framework API files (very helpful) and start from there. Yes, this is what I'm trying to do. Link to comment
dagobaking Posted August 11, 2022 Author Share Posted August 11, 2022 12 hours ago, Cannaisseur said: Yes, this is what I'm trying to do. Let us know if you have questions about AAF functionality. But, it sounds like you may need to look more into how KO framework works (I have no idea) or even just general how-to-make-a-mod type tutorials. Link to comment
EgoBallistic Posted August 11, 2022 Share Posted August 11, 2022 15 hours ago, Cannaisseur said: Yes, this is what I'm trying to do. If you just want to pop them out of bleedout you can do it quick and dirty with akActor.PlayIdle(InitializeMTGraphInstant). 1 Link to comment
LynErso666 Posted August 13, 2022 Share Posted August 13, 2022 Peeps keep telling me about this, and I'm finally checking it out. Worried me when it redirected me to some other site, but it literally only took like 30 seconds to create an account, so that's cool, and it downloaded instantly. Thanks a million. I really don't have any clue what in the world to download with this though. Maybe you could tell me what you like to use with it? Link to comment
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