zazz825 Posted January 9, 2017 Share Posted January 9, 2017 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 More sharing options...
LFact Posted January 9, 2017 Share Posted January 9, 2017 Read this first: http://cs.elderscrolls.com/index.php?title=Removing_%22Placeatme_Objects%22This is better(you need OBSE): http://cs.elderscrolls.com/index.php?title=DeleteReference Link to comment Share on other sites More sharing options...
Surilindur Posted January 9, 2017 Share Posted January 9, 2017 (edited) This is better(you need OBSE): http://cs.elderscrolls.com/index.php?title=DeleteReference 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 January 9, 2017 by Contrathetix Link to comment Share on other sites More sharing options...
zazz825 Posted January 10, 2017 Author Share Posted January 10, 2017 This is better(you need OBSE): http://cs.elderscrolls.com/index.php?title=DeleteReference 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 More sharing options...
Surilindur Posted January 10, 2017 Share Posted January 10, 2017 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 More sharing options...
zazz825 Posted January 10, 2017 Author Share Posted January 10, 2017 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 More sharing options...
Surilindur Posted January 11, 2017 Share Posted January 11, 2017 (edited) 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 itwhen the game is loaded, create a list of those actorsuse that list to "spawn" then actors when needed, and to move them back to the cell when not neededThe 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 endPostLoadGame 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 endScript 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 January 12, 2017 by Contrathetix Link to comment Share on other sites More sharing options...
Recommended Posts