NNS10 Posted April 14, 2015 Posted April 14, 2015 I'm get A LOT of papyrus errors in my logs. Even just loading to the main screen gives me a page full of xpo errors. Is this detrimental? I'm using patch 4e with v033. The patch is loaded after the main esp. [04/12/2015 - 07:50:41PM] Cannot open store for class "xposcenariobase", missing file? [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::LeadOut_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::LeadIn_var used in xposcenariocell.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.HeartbeatPeriod() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onEndState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPostLeadOut() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.HeartbeatPeriod() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnSceneEvent() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onBeginState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onEndState() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat() [04/12/2015 - 07:50:41PM] Cannot open store for class "xpoJailProps", missing file? [04/12/2015 - 07:50:41PM] Error: Unable to bind script xposcenariocell to xpoScenarioCell (8C04DC8E) because their base types do not match [04/12/2015 - 07:50:41PM] Cannot open store for class "xpoParade_SF_MobPunish", missing file? [04/12/2015 - 07:50:41PM] Error: Unable to bind script xpoParade_SF_MobPunish to (8C05489E) because their base types do not match ~ snip ~ You can try the steps above as well, PO reinstall and save cleaning. What about my question about missing scripts? I also checked the data section of MO. xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files) xposcenariobase is listed and originates from the main mod BSA. Any of those scripts the ones you thought I was missing? Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly.
Inte Posted April 15, 2015 Posted April 15, 2015 ~ snip ~ Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly. If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO.
Morferous Posted April 15, 2015 Posted April 15, 2015 If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO. MO installs each mod to named folder, under \Mod Organizer\mods. The original mod has all packed, but Inte's patch has them spilled (and that is fine for a patch.) If you have installed both as separate mods and simply allowed patch overwrite XPO in left panel priority view, then the path should be: <InstallationPaht>\Mod Organizer\mods\xazPrisonOverhaul_V033 Patch 04e\Scripts If you have merged these mods, then look Scripts folder from xazPrisonOverhaul V033 folder, unless you have named the merged mod otherwise.
NNS10 Posted April 16, 2015 Posted April 16, 2015 ~ snip ~ Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly. If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO. You can view the virtual directory in MO. I did that and confirmed I had the three scripts I saw errors on I also checked the data section of MO. xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files) xposcenariobase is listed and originates from the main mod BSA.
Inte Posted April 16, 2015 Posted April 16, 2015 If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO. MO installs each mod to named folder, under \Mod Organizer\mods. The original mod has all packed, but Inte's patch has them spilled (and that is fine for a patch.) If you have installed both as separate mods and simply allowed patch overwrite XPO in left panel priority view, then the path should be: <InstallationPaht>\Mod Organizer\mods\xazPrisonOverhaul_V033 Patch 04e\Scripts If you have merged these mods, then look Scripts folder from xazPrisonOverhaul V033 folder, unless you have named the merged mod otherwise. @Morferous thanks for the MO explanation. MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon.
CGi Posted April 16, 2015 Posted April 16, 2015 ... don't tell @AwfulArchdemon. No need to tell him. He can smell such thing miles upwind.
Inte Posted April 16, 2015 Posted April 16, 2015 ... don't tell @AwfulArchdemon. No need to tell him. He can smell such thing miles upwind. I know... damn, I'm in trouble now.
NNS10 Posted April 16, 2015 Posted April 16, 2015 @Morferous thanks for the MO explanation. MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here: I also checked the data section of MO. xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files) xposcenariobase is listed and originates from the main mod BSA. Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase". On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"?
Inte Posted April 16, 2015 Posted April 16, 2015 @Morferous thanks for the MO explanation. MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here: I also checked the data section of MO. xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files) xposcenariobase is listed and originates from the main mod BSA. Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase". On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"? I see... "xposcenebase" there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much. Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it.
NNS10 Posted April 16, 2015 Posted April 16, 2015 I see... "xposcenebase" there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much. Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it. >_> my bad. I didn't look at the version column--I had v32 installed. v32 uses xposcenebase. v33 uses xposcenariobase. Swapped in v33 and it's fine now on main menu load.
Veladarius Posted April 16, 2015 Posted April 16, 2015 In CD I need to be able to tell if the player has been jailed and when they are released. I can do that easily enough with the normal jail system but I wanted to find out if this uses a different system (likely) and how to tell when capture and release happens. @xaz can answer this a lot better then I, but as far as I can tell the player gets added to xpoFactionPrisoner while jailed. I saw the faction but I was wondering if there is a mod event sent when the player is jailed or released so I can trigger my own events from those. Yeap we definitely need @xaz for that, because I did not see that in the code. I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it.
CGi Posted April 16, 2015 Posted April 16, 2015 I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it. Maybe it's enough to check if the quest xpoPrisoner [xx002DBA] is running? The xazPisonerQuest script has some events you maybe able to use, so you don't have to monitor things.
Veladarius Posted April 16, 2015 Posted April 16, 2015 I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it. Maybe it's enough to check if the quest xpoPrisoner [xx002DBA] is running? The xazPisonerQuest script has some events you maybe able to use, so you don't have to monitor things. Unless an event is announced using RegisterModEvent (I think that is it) I can't detect it, normal events can't be picked up like those can. I am guessing that the prisoner quest is what controls it overall? There isn't much there other than stage 10 is the shutdown stage. What I am looking to do is detect when the player is released so I can send a courier to them.
Kimy Posted April 17, 2015 Posted April 17, 2015 I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient.
thingwhatsqueaks Posted April 17, 2015 Posted April 17, 2015 I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. Is there any sort of 'incarcerated' faction that the player is added to when in jail (and ideally removed from when released from jail) that could serve as a flag to pause events? This might be a good idea even for dealing with non-XPO jail time as events triggering during an escape attempt would be problematic.
Inte Posted April 17, 2015 Posted April 17, 2015 I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure. Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that. BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency. INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. zadLibs Libs = None INT iReturnBit = 0 Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs If (Libs != None) INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey) INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey) INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey) Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) If (iRestrKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!") ElseIf (iRestrKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!") EndIf EndIf Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True) If (iChastityKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!") ElseIf (iChastityKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!") EndIf EndIf Slave.RemoveItem(Libs.piercingKey, iPiercTool, True) If (iPiercTool > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!") ElseIf (iPiercTool <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!") EndIf EndIf iReturnBit = iRestrKeys + iChastityKeys + iPiercTool Else Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!") iReturnBit = -1 EndIf If (bDCL_On == True) dcur_library dclibs = None dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library If (dclibs != None) Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!") EndIf Else If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!") EndIf EndIf if dclibs.mcs.isworn_slavecollar == 2 dclibs.mcs.isworn_slavecollar == 1 endif if dclibs.mcs.isworn_slavegag == 2 dclibs.mcs.isworn_slavegag == 1 endif if dclibs.mcs.isworn_shockboots == 2 dclibs.mcs.isworn_shockboots == 1 endif else if Slave.GetActorBase().GetSex() == 0 libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!") else libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!") endif endif Else Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!") EndIf RETURN iReturnBit EndFunction Do you have a similar function that will pause running quests and remove the items?
Skull Tyrant Posted April 18, 2015 Posted April 18, 2015 i think i found a bug, got imprisoned in Windhelm when the jailer took my char out of the cell he took her to Solitude to the stocks. EDIT - after the parade punishment, the PC is taken to Solitude to the Stocks. is this something that is supposed to happen or is this a bug?
Bane Master Posted April 19, 2015 Posted April 19, 2015 I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure. Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that. BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency. INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. zadLibs Libs = None INT iReturnBit = 0 Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs If (Libs != None) INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey) INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey) INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey) Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) If (iRestrKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!") ElseIf (iRestrKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!") EndIf EndIf Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True) If (iChastityKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!") ElseIf (iChastityKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!") EndIf EndIf Slave.RemoveItem(Libs.piercingKey, iPiercTool, True) If (iPiercTool > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!") ElseIf (iPiercTool <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!") EndIf EndIf iReturnBit = iRestrKeys + iChastityKeys + iPiercTool Else Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!") iReturnBit = -1 EndIf If (bDCL_On == True) dcur_library dclibs = None dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library If (dclibs != None) Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!") EndIf Else If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!") EndIf EndIf if dclibs.mcs.isworn_slavecollar == 2 dclibs.mcs.isworn_slavecollar == 1 endif if dclibs.mcs.isworn_slavegag == 2 dclibs.mcs.isworn_slavegag == 1 endif if dclibs.mcs.isworn_shockboots == 2 dclibs.mcs.isworn_shockboots == 1 endif else if Slave.GetActorBase().GetSex() == 0 libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!") else libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!") endif endif Else Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!") EndIf RETURN iReturnBit EndFunction Do you have a similar function that will pause running quests and remove the items? Hey Inte - why not just push a modevent to allow other mods to be aware that the player is arrested and then released, the unpatched version will be no worse off and it will offer the chance of less conflicts for patch users if mod authors decide to listen for the event. Also - in case you didn't know, sendmodevent("dhlp-Suspend") and sendmodevent("dhlp-Resume") can be used to suspend and resume deviously helpless, I've used this in EC+ to stop dH attacks during tentacle scenes.
Kimy Posted April 19, 2015 Posted April 19, 2015 I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure. Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that. BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency. INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. zadLibs Libs = None INT iReturnBit = 0 Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs If (Libs != None) INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey) INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey) INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey) Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) If (iRestrKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!") ElseIf (iRestrKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!") EndIf EndIf Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True) If (iChastityKeys > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!") ElseIf (iChastityKeys <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!") EndIf EndIf Slave.RemoveItem(Libs.piercingKey, iPiercTool, True) If (iPiercTool > 1) Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!") ElseIf (iPiercTool <= 0) Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!") Else If (Slave.GetActorBase().GetSex() == 1) Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!") Else Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!") EndIf EndIf iReturnBit = iRestrKeys + iChastityKeys + iPiercTool Else Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!") iReturnBit = -1 EndIf If (bDCL_On == True) dcur_library dclibs = None dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library If (dclibs != None) Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!") EndIf Else If Slave.GetActorBase().GetSex() == 0 Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!") Else Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!") EndIf EndIf if dclibs.mcs.isworn_slavecollar == 2 dclibs.mcs.isworn_slavecollar == 1 endif if dclibs.mcs.isworn_slavegag == 2 dclibs.mcs.isworn_slavegag == 1 endif if dclibs.mcs.isworn_shockboots == 2 dclibs.mcs.isworn_shockboots == 1 endif else if Slave.GetActorBase().GetSex() == 0 libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!") else libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!") endif endif Else Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!") EndIf RETURN iReturnBit EndFunction Do you have a similar function that will pause running quests and remove the items? Feel free to use as much of my code as you wish. And yes, now that I have scenes as well, I better heed my own advice and add a flag for other mods to check. It will be in the next patch! Also, if I may make a suggestion - I think the more natural way to integrate DD devices is not removing them on arrest and re-applying them on release but to just keep them on the prisoner during their incarceration and have PO take their presence into consideration ("Haha, she comes with her own restraints, so we don't have to chain her up. How convenient!"). That also would save some headaches about DD quest items (some DD quest items trigger quest relevant code upon equip and removal, at least some of mine do). Removing/re-applying them would break their respective quests.
Epic Gamer Frey Posted April 19, 2015 Posted April 19, 2015 Got arrested in Whiterun. Bounty was 1040. The punishment is only meant to last 60 seconds, but it just won't stop. My character is being Whipped. She's also not recieving any marks from the whipping.
xaz Posted April 19, 2015 Author Posted April 19, 2015 Hi, I haven't read through the forum yet. Just a ping to let you know I'm still alive. Currently working on the next Zaz Animation Pack update, which is taking a lot of time. I'll return to this mod as soon as I can. Again, and I don't think I can say this enough; Thanks Inte for taking care of this when I'm busy elsewhere. Cheers! (I'll now try to go back a few pages and answer any specific questions)
xaz Posted April 19, 2015 Author Posted April 19, 2015 In CD I need to be able to tell if the player has been jailed and when they are released. I can do that easily enough with the normal jail system but I wanted to find out if this uses a different system (likely) and how to tell when capture and release happens. @xaz can answer this a lot better then I, but as far as I can tell the player gets added to xpoFactionPrisoner while jailed. I saw the faction but I was wondering if there is a mod event sent when the player is jailed or released so I can trigger my own events from those. Yeap we definitely need @xaz for that, because I did not see that in the code. No there isn't. This is something that could be easily added though. In the future, I hope that I will be able to add support for mods enslaving and releasing the actor. There is a lot to do, ... and so little time.
xaz Posted April 19, 2015 Author Posted April 19, 2015 ... don't tell @AwfulArchdemon. No need to tell him. He can smell such thing miles upwind. I know... damn, I'm in trouble now. use WryeBash... the only mature tool for modders out there. I use WryeBash for all modding projects, then MO to patch things up for playing etc. It's the only way to fly....
xaz Posted April 19, 2015 Author Posted April 19, 2015 @Morferous thanks for the MO explanation. MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here: I also checked the data section of MO. xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files) xposcenariobase is listed and originates from the main mod BSA. Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase". On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"? I see... "xposcenebase" there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much. Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it. I named those entities "Scenarios". Basically, a scenario is when you're put in the pillory, cage, roaming in the parade, and so on. Those all contain their own logic and routines for handling things. Each scenario may then opt to play out different scenes, in particular, every scenario gets the option to play out scenes when moving the player. An example: (Player starts off imprisoned) XPO determines that a new scenario should play, it decides on the pillory scenario # Cell scenario is told to terminate ## (OutOfCell scene) Cell scenario launches the scene where the jailer hauls the player out of prison ## When player is outside the prison cell, it tells the XPO logic it's done # Pillory scenario is asked to start ## Pillory scneario determines that the player needs to move to a pillory ## (MoveToPillory scene) Pillory movement scene starts running ## Player is placed in the pillories ## After x hours in game, the pillory scenario decides that it's time for action ## (PunishPillory scenario) starts running # After a bunch of repeats, the pillory scenario releases control to the cage scenario ## Pillory scenario plays the "out of scenario" scene (empty for the pillory, iirc) ## Cage scenario starts its "move to the cage" scene Basically, scenarios contain all the logic needed to release and attach the player to a controlled position. A scenario will release the player from the cage, cell, pillory when terminated. It will also move a player into whatever is needed when started. XPO logic determines which scenario should run, then requests the currenly running scenario to stop. Once the running scenario has stopped, the player is in a good state to pick up by another scenario.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now