Cicada3301 Posted August 27 Share Posted August 27 Hello, I'm trying to make NPC to wipe counter while in dialogue with player, there is one idle called 'BarCounterWipe', but PlayIdle() returns false, if NPC is or isn't leaning on counter I saw innkeepers do that sometimes, but rare, so is there a way to make NPC playing barkeep role wipe counter by demand in the script? Link to comment Share on other sites More sharing options...
xkkmEl Posted August 27 Share Posted August 27 On LE, I have no such animation installed, I believe.... or it is called something else. It does not appear in the CK's "animations" menu, nor in the topic response speaker animations drop down, nor in my data/meshes/actors/character/animation directory, nor in my FNIS-generated behavior files. Link to comment Share on other sites More sharing options...
Cicada3301 Posted August 28 Author Share Posted August 28 I'm doing it for SE, this idle is in script properties in Idle type (on screenshot), base game without installed/enabled any mods on MO2, no DLC choosen in CK I could be wrong about this particular idle, but also could swear innkeeper (I believe Keerava) used it in front of me, perhaps it was added by some mod, because it appeared on modded game Edit: LE removed from title because not the target version Link to comment Share on other sites More sharing options...
xkkmEl Posted August 28 Share Posted August 28 You're right. It's there, in LE as well. It's listed under "ActionIdle" in the animations menu, not under "loose" idles. Don't know how to access those. The CK records this ominous sentence: "LOOSE: This section holds Idles that are not associated with any specific Actor Action. Instead, Idles in this section can be called via script, dialogue, or AI package." and then continues: "If you define an idle property in a script, you will see a list of many animations from the drop-down menu under properties, however only some of these are idles, and if you choose one that isn't an idle, it won't play and PlayIdle will always return false." Link to comment Share on other sites More sharing options...
PeterMartyr Posted August 28 Share Posted August 28 the event name is IdleBarCounterWipe, that will work work with https://ck.uesp.net/wiki/SendAnimationEvent_-_Debug or create a Idle property it will auto fill with BarCounterWipe that will work with https://ck.uesp.net/wiki/PlayIdle_-_Actor @xkkmEl with animation CK ID's and Event name's are either the same or not the same, it is really inconsistent EDIT sometime with CK ID animations have creation kit conditions, this has no conditions has well, no idea why it false but Quote Notes[edit | edit source] Too many things can happen while you are attempting to play an idle, so make sure to gracefully handle all circumstances. Never use the structure "play idle, wait for event" - this will inevitably cause your script to get stuck forever when some other code or script overrules your idle. Calling the PlayIdle function on the same actor, with the same idle again, will have the actor stop playing it (if it's a looped animation). Some idles cannot be played with this function if the idle has an associated special furniture and is not listed in the idle manager. To which other means to force a player to play such an idle is required. EDIT 2 wiping a bar does imply it is a furniture one, just saying)) however I would go to basics, is the property filled ? Link to comment Share on other sites More sharing options...
Cicada3301 Posted August 28 Author Share Posted August 28 25 minutes ago, PeterMartyr said: is the property filled ? Yes property filled, I tryed new game as well as existing save (because sometimes you must start new game to make things work) And I tryed send event with debug and play idle on actor, no luck with both of them. It was akSpeaker in dialogue topic though, could it be why it doesn't work? I thought it's a matter of furniture marker NPC use, there are 2 counter animations and only one of them about bar counter (it even has a keyword for it), but neither work with this wiping idle About conditions of animation - if it has no any condition that's really strange why it doesn't work no matter case it called Link to comment Share on other sites More sharing options...
dylbill Posted August 28 Share Posted August 28 Have you tried using PlayIdleWithTarget ? Also some idles will only play if the actor is already using a certain idle. Try to have the actor activate the CounterBarLeanMarker furniture reference first and see if that works. Link to comment Share on other sites More sharing options...
Cicada3301 Posted August 29 Author Share Posted August 29 9 hours ago, dylbill said: Have you tried using PlayIdleWithTarget ? Also some idles will only play if the actor is already using a certain idle. Try to have the actor activate the CounterBarLeanMarker furniture reference first and see if that works. For idleWithTarget - yes, I tryed use it at least with idle marker, no result (shouldn't it be used for two actors, like standing vampire feeding?) Some idles surely require already playing idle (like book turn many pages, NPC won't do it if no book in hands) but I tryed to play wiping idle then NPC using CounterBarLeanMarker & CounterLeanMarker , and still playIdle(wipe_idle) returns False, like it wasn't loaded or conditions for playing wasn't match My actor uses CounterBarLeanMarker via package (sit target or something), but I tryed make common innkeepers play this idle and still no result. I tryed to look for idles in animations window in creation kit, but I didn't find wiping anim, maybe this one could tell more about how and where it must be used? surely it's not loose animation, so it can't be played by it's own Link to comment Share on other sites More sharing options...
PeterMartyr Posted August 29 Share Posted August 29 KIT ID: AnimObjectBarRag Path: Meshes\AnimObjects\AnimObjectBarRag.nif HKX files: Path: meshes\actors\character\animations file names: animobjectcounterwipelefttoright.hkx animobjectcounterwipeloopleft.hkx animobjectcounterwipeloopright.hkx animobjectcounterwiperighttoleft.hkx Event name: IdleBarCounterWipe Idle Property KIT ID: BarCounterWipe (this is condition free as stated above) which is link to: (Parent) KIT ID: BarCounterWipeRoot (which has the Conditions) Subject.IsFurnitureEntry Type (Behind) = 1 AND Target.HasKeyword(FurnitureSpecial) = 1 AND Target.HasKeyword (FurnitureCounterLeanMarker) = 1 AND Target.HasKeyword(isBarCounter) = 1 AND Subject.IsEnteringInteractionQuick = 0 AND Subject.GetSitting = 3 now you have 100% all the information available, and why it returns false and what it take for it to be true and work. NOTE 1 If you want badly enough, you have the details to unpack, it duplicate it, and add it back as a new animation with less conditions.. (just use one hkx file) NOTE 2 what is most likely bringing you undone, is as the player, you are not sitting. NOTE 3 those are idle conditions NOT dialogue conditions (just in case there is misunderstanding) the game dialogue might have conditions too( did not check) BTW calling the event name still goes through the root and needs to pass the parent conditions Link to comment Share on other sites More sharing options...
Cicada3301 Posted August 29 Author Share Posted August 29 2 hours ago, PeterMartyr said: KIT ID: AnimObjectBarRag Thank you for detailed information, I'm running checks on subject I would like to play animation (actor NPC) and conditions are matching, at least it's sitting == 3 (checked with papyrus actor method), furniture (idle marker) has all keywords and conditions (it's actually the CounterBarLeanMarker), the only one thing I have no isea how to check is IsEnteringInteractionQuick for NPC for interaction with this marker I use SitTarget package with target of this idle marker, could it be the reason it's not working? It's strange after all, because even if this idle runned on the original innkeeper leaning on their marker in tavern, it still does nothing Link to comment Share on other sites More sharing options...
Recommended Posts