Jump to content

How to use PlaceAtNode() with custom node?


Recommended Posts

BlahBlahDEEBlahBlah, wow! That's amazing! How on earth did you get something dangling from the arm like that? I've been trying to get ragdoll bones into a nif for a while now and what you did there looks like exactly the kind of alternative approach I could use (just want to skin a teddy to bounce around in the hand damn it haha)

 

Waw, back to subject - I take it the offset was just too immersion breaking?

Man that's a real shame, I'll probably run into the exact same problem down the road.

So, is the reason why the attached thing will unload is because it was attached at x location or is it because the reference was created at x location?

 

Could an object be spawned in, with physics enabled (so it bounces around when hit) and then attach that to the player? (actually, is that what you did for that weapon concept?) would it still unload after x distance? Ah man, thinkinging about it, it probably would unload :/

What if the object being attached was an actor? Actors can travel the map, maybe it's just everything else that can't?

Link to comment
Share on other sites

  • 1 year later...

Holy thread resurrection Batman, but I've been running into this problem where PlaceAtNode works in 3rd person, but not in first, attempting to attach an ObjectReference to the player's bones. (Nevermind that when it does work in 3rd person, seemingly absolutely nothing I've tried overrides the orientation/position of the NiNode/Bone that my objectreference is getting attached to.)

 

Here is my simple script:

Scriptname HandsawProjectileScript extends activemagiceffect

actor ThisGuy

ammo property ThisAmmo auto
weapon property ThisGun auto

String ThisAnim = "hitFrame"

EVENT OnEffectStart(Actor akTarget, Actor akCaster)

	;debug.notification("Is this thing on")
	
	ThisGuy = Self.GetCasterActor()
	RegisterForAnimationEvent(akCaster, ThisAnim)
	
ENDEVENT

EVENT OnAnimationEvent(ObjectReference akSource, string asEventName)
	if asEventName == ThisAnim
	
		string ThisEvent = asEventName
		debug.notification("You did " + ThisEvent + "")
		
		ObjectReference FakeGun = ThisGuy.PlaceAtNode("ProjectileNode", ThisGun)
		Weapon ThatGun = FakeGun.GetBaseObject() as Weapon
		;FakeGun.MoveToNode(FakeGun, "ProjectileNode", "P-Origin")
		ThatGun.Fire(FakeGun, ThisAmmo)
		RegisterForAnimationEvent(ThisGuy, ThisAnim)
		FakeGun.Delete()
		ThatGun = NONE
		
	endif
ENDEVENT

Now in this example, I'm trying to match the weapon to the ProjectileNode which I thought would have been inherited as part of the player's nodes because of the currently equipped weapon, but this does not work. Everywhere else I've read says it should, but maybe only for armor pieces and not weapons?

Link to comment
Share on other sites

I have this script working now through using an attached art object to add custom node names onto the player.

 

Getting the weapon to fire only works in 3rd person, though. The objectreference and weapon both get created in 1st and in 3rd person, but the thing only fires when in 3rd.

 

So, 'akSource' has to be used (or at least works) to get a gun to fire in first person, as well as in 3rd. Why using the objectreference only works in 3rd person is still bizarre.

Edited by TrickyVein
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...