Jump to content

The PlaceAtMe Command...


zazz825

Recommended Posts

So I have a quick inquiry about the "placeatme" command in Oblivion. I know that it's overuse causes the savegame bloating, but does disabling whatever is summoned by the command undo or avert the risk of bloating?

 

For example, Say for a moment that I used placeatme to spawn 5 bandits, but on these bandits I placed a script that would disable them when they died?

 

Any thoughts/ideas are welcome, thanks in advance for the help!

Link to comment
Share on other sites

 

DeleteReference does not work on actors.

 

Also, QQuix has a small summary here: https://forums.nexusmods.com/index.php?/topic/4657470-cell-reset/

 

Edit: With the details in the wiki article linked in the post: http://cs.elderscrolls.com/index.php?title=Cell_Reset#Cell_Reset_x_Actors

Edited by Contrathetix
Link to comment
Share on other sites

 

 

DeleteReference does not work on actors.

 

Also, QQuix has a small summary here: https://forums.nexusmods.com/index.php?/topic/4657470-cell-reset/

 

Edit: With the details in the wiki article linked in the post: http://cs.elderscrolls.com/index.php?title=Cell_Reset#Cell_Reset_x_Actors

 

 

This... this is useful for reference. Thanks a ton.

 

If I'm understanding this correctly, as long as I check the "No Low-Level Processing Box" and don't teleport the disabled bandits out of the cell, with the placeatme script I shouldn't have to worry about savegame bloating... Right?

Link to comment
Share on other sites

QQuix would need to answer that, I have not yet gotten far enough to remake an old mod of mine so I have not had to use PlaceAtMe myself yet, and have not yet had the time to properly read all the test results. :blush: From what I have gathered, and considering what common sense dictates, spawning actors with PlaceAtMe would not really seem as risky as one might think, but I am still a bit sceptic about it.

 

Are those five bandits always the same? You could also try making a holding cell, with fixed five bandits, and moving them between the holding cell and player location, resetting their inventories and other stuff each time? Would that be an alternative? If the five bandits are always the same ones? If you need variation and leveled lists with the bandits, then that is obviously not an alternative, though.

Link to comment
Share on other sites

QQuix would need to answer that, I have not yet gotten far enough to remake an old mod of mine so I have not had to use PlaceAtMe myself yet, and have not yet had the time to properly read all the test results. :blush: From what I have gathered, and considering what common sense dictates, spawning actors with PlaceAtMe would not really seem as risky as one might think, but I am still a bit sceptic about it.

 

Are those five bandits always the same? You could also try making a holding cell, with fixed five bandits, and moving them between the holding cell and player location, resetting their inventories and other stuff each time? Would that be an alternative? If the five bandits are always the same ones? If you need variation and leveled lists with the bandits, then that is obviously not an alternative, though.

The bandits will always be the same, although there will not always be 5 of them, in this case a great many more or less, but all the bandits are exact copies of one another. So, variation is not an issue here. Essentially, I've used the GetRandomPercent function and two variables. The GetRandomPercent bounces back two random numbers, sets the two numbers to x and y, and if x=y, then the placeatme function kicks in and a bandit is spawned. This repeats three times, resulting in up to 3 bandits spawning. But, on each of the bandits I've built in a script that disables them upon death, because I want these particular bandits to behave more like summons than spawns. In order to remove issues with the framerate, do you know if there's a way to limit the number of bandits that can exist at a time?

Link to comment
Share on other sites

If you have a set pool of bandits to draw from, you could maybe try using something like:

  • have a cell with the actors in it
  • when the game is loaded, create a list of those actors
  • use that list to "spawn" then actors when needed, and to move them back to the cell when not needed

The ones below are just one idea, I have not tested them, my free time has vanished for a change, but maybe they could give you some ideas.

 

Edit: Moved to spoiler.

 

 

Quest script (attached to a quest that is active):

scriptname YourQuestScript

array_var ActorList

begin _MenuMode 1044 ; <-- I think this one was main menu code

    if ( GetGameRestarted )
        seteventhandler "PostLoadGame" YourPostLoadGameHandler
    endif

end

PostLoadGame event handler (object script, not attached to anything):

scriptname YourPostLoadGameHandler

short Success

begin _Function { Success }

    if eval !( Success )
        return
    endif

    let YourQuest.ActorList := ar_List YourActorRefA, YourActorRefB, YourActorRefC, YourActorRefD, YourActorRefE

end

Script effect for the spell:

scriptname YourSpellEffectScript

array_var TempArr
ref TempRef

begin _ScriptEffectStart

    if eval ( ( ar_Size YourQuest.ActorList ) > 0 )
        foreach TempArr <- ( YourQuest.ActorList )
            if eval ( ( Rand 0 1 ) < 0.5 ) ; <-- should work according to dicumentation
                continue ; 50% chance to skip
            endif
            let TempRef := TempArr["value"]
            TempRef.Enable
            TempRef.MoveTo PlayerRef
        loop
    endif

end

begin _ScriptEffectFinish

    if eval ( ( ar_Size YourQuest.ActorList ) > 0 )
        foreach TempArr <- ( YourQuest.ActorList )
            let TempRef := TempArr["value"]
            if ( TempRef.GetInCell YourHoldingCell )
                continue
            endif
            ; perform any resurrections, inventory resets and others here maybe?
            TempRef.MoveTo YourHoldingCellMarker
            TempRef.Disable
        loop
    endif

end

 

 

 

As in, when I say untested, I have no idea if they compile. They should work, but one can never know without testing it first. :tongue:

 

Edit 2: Fixed a typo.

Edited by Contrathetix
Link to comment
Share on other sites

  • Recently Browsing   0 members

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