Jump to content

Replacing items with statics via scripting


FiftyTifty

Recommended Posts

 

That physics behaviour is similar, but not exactly. It's when you go into a cell that's not been visited during the current session, that you have previously dropped items in, and they will move around like in your video.

 

Well I fear that this issue is even present in Skyrim (Creation Engine), so it's not simply a bug in the Gamebryo engine (well actually it is XD Creation Engine is an enhanced Gamebryo engine).

 

The items you see there in my video, are placed in GECK and not moved by myself in any way. So even a regular action can perform this issue.

 

 

You'll also see it, if you remove an item from a shelf. All other items appear to re-calculate their physics, which makes them move, or whatever.

Yet I can tell, that this happens very often.

Like if I would remove one of the Whisky bottles from the shelf, the movement of the other items will either happen.

 

I feel you about the annoyance, but for myself I got used to it since I played Oblivion.

So... I don't want to remove your enthusiasm about fixing it, but that might be really hard.

 

On the issue itself, I fear I cannot help you.

Forgive me my negativity in that case, I am still thinking it would be plain awesome if you can do it and you'll get all my admiration if you are able to fix that issue.

That's a proper statement of admiration, not meant to be condescending in any way.

Please take it as that.

 

 

Cheers

Link to comment
Share on other sites

  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Well, how do they use the exact models? The Havok collision needs to be changed, does it not?

 

Anyway, you could try MoveToCell. I think it will inherit the problems of MoveTo, though, but try it.

 

Other than that, there's this:

https://geckwiki.com/index.php/SetGameMainLoopCallback

 

Or my more hacky version that I've used, which is to make an activator that does what you want via an OnActivate block and have your UDF script simply activate the activator, as OnActivate will not be subject to the multi-frame problem of PlaceAtMe that I'm leaning towards as my theory for this.

 

Edit: for the hacky activator-based version, I believe I used ScriptWait to circumvent the PlaceAtMe problem, which was in my case a problem to do with explosion damage being registered in one frame but not calculated or applied until a few frames later. It's only the same insofar as we're handling the problem of functions that take multiple frames to process but without halting the script processing to wait for them to catch up.

Edited by EPDGaffney
Link to comment
Share on other sites

Well, how do they use the exact models? The Havok collision needs to be changed, does it not?

 

Anyway, you could try MoveToCell. I think it will inherit the problems of MoveTo, though, but try it.

 

Other than that, there's this:

https://geckwiki.com/index.php/SetGameMainLoopCallback

 

Or my more hacky version that I've used, which is to make an activator that does what you want via an OnActivate block and have your UDF script simply activate the activator, as OnActivate will not be subject to the multi-frame problem of PlaceAtMe that I'm leaning towards as my theory for this.

 

Edit: for the hacky activator-based version, I believe I used ScriptWait to circumvent the PlaceAtMe problem, which was in my case a problem to do with explosion damage being registered in one frame but not calculated or applied for a until frames later.

 

No, the havok collision does not need to be changed. You merely set the static's model path to same as the item's.

 

That's something to try, I suppose. Have the hotkey script move the activator to the player, then activate it, which in turn runs the script.

Link to comment
Share on other sites

 

No, the havok collision does not need to be changed. You merely set the static's model path to same as the item's.

 

Ah!

You want to replace the item with a static one?

That might work... However you need to make a new mesh of ANY moveable item (even by grabbing, as that can already intervene in a bad way about havok repositioning).

Otherwise the player can easily provoke such a bugged situation. :(

Link to comment
Share on other sites

 

Ah!

You want to replace the item with a static one?

That might work... However you need to make a new mesh of ANY moveable item (even by grabbing, as that can already intervene in a bad way about havok repositioning).

Otherwise the player can easily provoke such a bugged situation. :sad:

 

 

Yep. You also do not need to make new meshes. It's only the reverse, where you want to make a static into a movable item, that you have to make a new collision mesh. Item meshes function perfectly fine as statics.

 

 

I went and tried to port this to the activator method, and the activator isn't activated. There are three scripts.

 

The first, is the quest hotkey register script. It successfully prints:

 

 

scn AAAFyTyHotkeyFreezeItemsHotkeyEventScript

begin GameMode
    
    if GetGameRestarted
        Print "Registered Hotkey"
        SetOnKeyDownEventHandler AAAFyTyHotkeyFreezeItemsScript 1 210
    endif

end

 

The second is the hotkey event, which also prints:

 

 

scn AAAFyTyHotkeyFreezeItemsScript
int iKeyID

begin function {iKeyID}
    Print "Hotkey pressed"
    AAAFyTyActivatorFreezeItemsRef.MoveTo PlayerRef
    AAAFyTyActivatorFreezeItemsRef.Activate
end function

 

 

And then there is the script attached to the persistent activator ref, which doesn't run: https://pastebin.com/DbsaNmEP

Link to comment
Share on other sites

AFAIK you can still grab static items, if their meshes allow grabbing (like using the meshes of ingestibles for static items).

At least that's what I was told.

 

I haven't tried to make a static out of a moveable item (by simply using the same mesh), but if it's true that these lose their movability, it would spare me a lot of trouble. :D

(as I have similar deeds about making non-moveable items. :wink: Yet just as a dumb decoration for a container.)

Link to comment
Share on other sites

If you want to activate an activator and use its OnActivate script block, you need to set the flag and I believe specify the action ref. So, your Activate line becomes:

    AAAFyTyActivatorFreezeItemsRef.Activate Player 1

Activate without the flag will activate the item the way its form type would normally respond to being activated if the item had no attached script, which for doors means opening or closing, items means picking up, and for activators is actually nothing. Which is why nothing happened.

Link to comment
Share on other sites

AFAIK you can still grab static items, if their meshes allow grabbing (like using the meshes of ingestibles for static items).

At least that's what I was told.

 

I haven't tried to make a static out of a moveable item (by simply using the same mesh), but if it's true that these lose their movability, it would spare me a lot of trouble. :D

(as I have similar deeds about making non-moveable items. :wink: Yet just as a dumb decoration for a container.)

Yeah, I could swear I'd tried just making static form types that used the same models as items and that it didn't work, but I could be remembering wrong. So, if I happened to be one of the people that told you it doesn't work but it actually does...well then, sorry about that.

Link to comment
Share on other sites

Well I was told wrong again. ^^

 

 

I just made static items with the meshes of normal ingestibles.

And they're absolutely static. :D

 

Which makes my own stuff a lot easier. Thanks, I actually feared I have to mess around with NifSkope. oO

 

 

Yet it wonders me...

For this mod

https://www.nexusmods.com/newvegas/mods/63884

I've added 3 new alien ships for the special Wild Wasteland encounter (including 9 new aliens).

But these should have crashed totally into the ground, without hovering around like the regular one.

 

So I've created a static item but that still hovered around (played the animation of the mesh).

Therefore I had to "destroy" the mesh by deleting the animation. Luckily that worked, even though I really destroyed the mesh by mindlessly deleting some stuff in NifSkope. Yet, 3 non-moving alien ships are shown ingame. :D

Link to comment
Share on other sites

Ya I think like JustChill mentions ... when they turn back into their regular state , they will still move.

Unless they are going to remain as statics , at least until some way to individually change them upon the player wanting to pick them up.

 

So if this is merely a problem from how they were placed in Geck to how they will move upon first loading the cell. Couldn't you click the "Run Havok sim" on each of them individually in geck , then saving those small re-positionings. Or is this for the game in it's entirety , not just a few of your own custom cells ?

 

Add edit : Actually it looks like you can control select multiple items to use "Run Havok Sim" at the same time. Although the first time I tried it , it deselected all the items.

But then retrying was able to keep them all selected.

It seems to only do it's thing upon depressing the button , not just leaving it pressed.

So you have to click un press then repress , each time.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...