Jump to content

GamerRick

Supporter
  • Posts

    678
  • Joined

  • Last visited

Everything posted by GamerRick

  1. First thing I would try is to go back to a previous save before entered the cave, go do something else, wait until the next day, and go try the quest again. That would point to one of those situations where something just got bugged in the cave. Next would be to look for conflicts between mods for the quest, the cave, or even changes to the NPCs there. And I agree with OblivionAddicted. Use Wrye BASH and build a BASH patch. Just that patch can resolve conflicts you didn't know about.
  2. For writing to an ini pluggy is it. Mods I use that use pluggy: Map Markers Be Done RefScope Simple HUD Clock
  3. It started happening again a few days ago. I have no clue what would case it.
  4. Actually, the script (SoulGemBoogie) that converts player filled empty gems with their filled counterparts works flawlessly. It's the one that counts the gems that are still empty that is failing. So, it would seem that the empty stack in the player's inventory is the one that is getting corrupted somehow. Meanwhile I have done 2 things: 1) Change SoulGemBoogie to open the swap container, so that the player can put the non-empty empty gems into it. Upon exiting the container, the script's GameMode script will scan through the swap container, remove the stacks that can be converted, and do the AddItemNS command on the player to give them the converted ones. I did this so that there were no scripted RemoveMeIR commands being done on the player (that may or may not be cause the corruption). 2) Start a new game. It will be a while before I can cast a soultrap spell for the first time.
  5. The correct way to determine the soul level for creatures. Refscope is where I found this. if rTarget.IsCreature == 0 set iSoulSize to 6 elseif rTarget.IsPCLevelOffset == 0 let rTargetBase := rTarget.GetBaseObject Let iSoulSize := rTarget.GetCreatureSoulLevel PrintC"RFFnOnSoulTrap: Creature %n is NOT PCLO, Soulsize is %g", rTargetBase, iSoulSize elseif rTarget.GetLevel >= 18 set iSoulSize to 5 elseif rTarget.GetLevel >= 13 set iSoulSize to 4 elseif rTarget.GetLevel >= 7 set iSoulSize to 3 elseif rTarget.GetLevel >= 2 set iSoulSize to 2 else set iSoulSize to 1 endif
  6. It's adding them to a temp container RFSoulGemSwapContainerRef.
  7. Must be OOO that changes them. It does that to a lot of actors throughout the game. I gave up on the GetInvRefs because it doesn't work better than foreach and it doesn't handle Azura's star. I also have another related script that may or may not have anything to do with the count problem. Here are my scripts: scn RFFnOnSoulTrap ;= INPUTS ref rTarget long lEffect ;=== long lSTRP ref rEffectCode ref rItem ref rItemBase short iSoulSize short iGemCount ;short iObjType short iCurrSoulLevel short iPetty short iLesser short iCommon short iGreater short iGrand short iBlack short bAzuraStar begin Function { rTarget, lEffect } if rTarget.IsActor PrintC"RFFnOnSoulTrap called on %n" rTarget endif let lSTRP := MagicEffectCodeFromChars "STRP" if lSTRP != lEffect let rEffectCode := MagicEffectFromCode lEffect PrintC "RFFnOnSoulTrap called with spell %n (%.0f)", rEffectCode, lEffect return endif if rTarget.GetIsReference player return endif if rTarget.IsActor == 0 Message "Target is not an Actor" 4 else ;set RFLightSpellQuest.rTarget to rTarget ;set RFLightSpellQuest.bShowSoulGemCount to 1 endif ;return ;========================== if rTarget.IsActor if rTarget.IsCreature == 0 set iSoulSize to 6 elseif rTarget.GetLevel >= 18 set iSoulSize to 5 elseif rTarget.GetLevel >= 13 set iSoulSize to 4 elseif rTarget.GetLevel >= 7 set iSoulSize to 3 elseif rTarget.GetLevel >= 2 set iSoulSize to 2 else set iSoulSize to 1 endif set iPetty to 0 set iLesser to 0 set iCommon to 0 set iGreater to 0 set iGrand to 0 set iBlack to 0 set bAzuraStar to 0 set rItem to 0 if RFGEMCOUNT == 1 foreach rItem <- Player if rItem.IsSoulGem let iCurrSoulLevel := rItem.GetCurrentSoulLevel let iGemCount := rItem.GetRefCount let rItemBase := rItem.GetBaseObject ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel if iCurrSoulLevel == 0 && iGemCount > 0 ; Soulgem & empty if iSoulSize == 1 if rItemBase == SoulGemEmpty1Petty ; rItem.GetSoulGemCapacity == 1 PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iPetty to iPetty + iGemCount endif elseif iSoulSize == 2 if rItemBase == SoulGemEmpty2Lesser ;rItem.GetSoulGemCapacity == 2 PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iLesser to iLesser + iGemCount endif elseif iSoulSize == 3 if rItemBase == SoulGemEmpty3Common ;rItem.GetSoulGemCapacity == 3 PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iCommon to iCommon + iGemCount endif elseif iSoulSize == 4 if rItemBase == SoulGemEmpty4Greater ;rItem.GetSoulGemCapacity == 4 PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iGreater to iGreater + iGemCount endif elseif iSoulSize == 5 if rItemBase == AzurasStar set bAzuraStar to 1 elseif rItemBase == SoulGemEmpty5Grand PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iGrand to iGrand + iGemCount endif elseif iSoulSize == 6 if rItemBase == BlackSoulGem PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iBlack to iBlack + iGemCount endif endif endif endif loop ; set rItem to 0 endif if iSoulSize == 1 Message "Target soul level is PETTY (%.0f)" iPetty, 4 ;Message "Target soul level is PETTY (%.0f)" iPetty, 4 PrintC "Target soul level is PETTY. Player has %g empty Petty soulgems" iPetty elseif iSoulSize == 2 Message "Target soul level is LESSER (%.0f)" iLesser, 4 ;Message "Target soul level is LESSER (%.0f)" iLesser, 4 PrintC "Target soul level is Lesser. Player has %g empty Lesser soulgems" iLesser elseif iSoulSize == 3 Message "Target soul level is COMMON (%.0f)" iCommon, 4 ;Message "Target soul level is COMMON (%.0f)" iCommon, 4 PrintC "Target soul level is Common. Player has %g empty Common soulgems" iCommon elseif iSoulSize == 4 Message "Target soul level is GREATER (%.0f)" iGreater, 4 ;Message "Target soul level is GREATER (%.0f)" iGreater, 4 PrintC "Target soul level is Greater. Player has %g empty Greater soulgems" iGreater elseif iSoulSize == 5 if player.GetItemCount AzurasStar > 0 if bAzuraStar == 0 Message "Target soul level is GRAND (%.0f) (Azura's Star is FULL)" iGrand, 4 ;Message "Target soul level is GRAND (%.0f) (Azura's Star is FULL)" iGrand, 4 PrintC "Target soul level is Grand. Player has %g empty Grand soulgems. Azura's Star is FULL" iGrand else Message "Target soul level is GRAND (%.0f) (AzurasStar is EMPTY)" iGrand, 4 ;Message "Target soul level is GRAND (%.0f) (AzurasStar is EMPTY)" iGrand, 4 PrintC "Target soul level is Grand. Player has %g empty Grand soulgems. Azura's Star is EMPTY" iGrand endif else Message "Target soul level is GRAND (%.0f)" iGrand, 4 ;Message "Target soul level is GRAND (%.0f)" iGrand, 4 PrintC "Target soul level is Grand. Player has %g empty Grand soulgems. Player does not have Azura's Star." iGrand endif else Message "Target soul level is BLACK (%.0f)" iBlack, 4 ;Message "Target soul level is BLACK (%.0f)" iBlack, 4 PrintC "Target soul level is Black. Player has %g empty Black soulgems." iBlack endif else ;Message "Target is not an Actor" 4 Message "Target is not an Actor" 4 endif endThis one converts user filled soulgems to their filled versions. You can also see my first failed attempt to use pluggy to write stuff to file: elseif iButton == 5 ; Soulgem Boogie set bShowMenu1 to 0 ;RFSoulGemSwapContainerRef.MoveTo player 0,0,-20 set iCount to 0 ;set strFilename to CreateString -1, "Ricks\RicksSigilStoneBoogieout.txt",1,1 ;StringToTxtFile strFilename, strFilename, 1 ;PrintC "Created String: %z" strFilename set rItem to 0 foreach rItem <- PlayerRef ;set rItem to rItemIter set rItemBase to rItem.GetBaseObject if rItem.IsSoulGem let iNumItems := rItem.GetRefCount let iSoulGemSoulSize := rItem.GetCurrentSoulLevel ; StringToTxtFile FilenameStringID StringID:long LineEnd:short ;let strHexID := GetFormIDString rItemBase ; FmtString strPluggyString, 0, "==== PROCESSING %g) %n (%z) with soul level %g.", iNumItems, rItemBase, strHexID, iSoulGemSoulSize ;let strOutputText := sv_Construct "==== PROCESSING %g) %n (%z) with soul level %g." iNumItems, rItemBase, strHexID, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;PrintC "Created String: %z" strPluggyString ;StringToTxtFile strFilename, strPluggyString, 1 ;DestroyString strPluggyString PrintC"==== PROCESSING %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;sv_Destruct strHexID, strOutputText if iNumItems > 0 && iSoulGemSoulSize > 0 PrintC"Exchanging %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanging %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText if rItemBase == SoulGemEmpty1Petty RFSoulGemSwapContainerRef.AddItem SoulGem1Petty1PettySoul iNumItems rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText elseif rItemBase == SoulGemEmpty2Lesser if iNumItems > PlayerRef.GetItemCount SoulGemEmpty2Lesser PrintC "RFHotkeys SoulGem Boogie - number of ref items for SoulGemEmpty2Lesser is greater than number of base items!" endif if iSoulGemSoulSize == 1 RFSoulGemSwapContainerRef.AddItem SoulGem2Lesser1PettySoul iNumItems else RFSoulGemSwapContainerRef.AddItem SoulGem2Lesser2LesserSoul iNumItems endif rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText elseif rItemBase == SoulGemEmpty3Common if iNumItems > PlayerRef.GetItemCount SoulGemEmpty3Common PrintC "RFHotkeys SoulGem Boogie - number of ref items for SoulGemEmpty3Common is greater than number of base items!" endif if iSoulGemSoulSize == 1 RFSoulGemSwapContainerRef.AddItem SoulGem3Common1PettySoul iNumItems elseif iSoulGemSoulSize == 2 RFSoulGemSwapContainerRef.AddItem SoulGem3Common2LesserSoul iNumItems else PrintC" Adding common/commons to the temp swap container." RFSoulGemSwapContainerRef.AddItem SoulGem3Common3CommonSoul iNumItems endif rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText elseif rItemBase == SoulGemEmpty4Greater if iNumItems > PlayerRef.GetItemCount SoulGemEmpty4Greater PrintC "RFHotkeys SoulGem Boogie - number of ref items for SoulGemEmpty4Greater is greater than number of base items!" endif if iSoulGemSoulSize == 1 RFSoulGemSwapContainerRef.AddItem SoulGem4Greater1PettySoul iNumItems elseif iSoulGemSoulSize == 2 RFSoulGemSwapContainerRef.AddItem SoulGem4Greater2LesserSoul iNumItems elseif iSoulGemSoulSize == 3 RFSoulGemSwapContainerRef.AddItem SoulGem4Greater3CommonSoul iNumItems else RFSoulGemSwapContainerRef.AddItem SoulGem4Greater4GreaterSoul iNumItems endif rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText elseif rItemBase == SoulGemEmpty5Grand if iNumItems > PlayerRef.GetItemCount SoulGemEmpty5Grand PrintC "RFHotkeys SoulGem Boogie - number of ref items for SoulGemEmpty5Grand is greater than number of base items!" endif if iSoulGemSoulSize == 1 RFSoulGemSwapContainerRef.AddItem SoulGem5Grand1PettySoul iNumItems elseif iSoulGemSoulSize == 2 RFSoulGemSwapContainerRef.AddItem SoulGem5Grand2LesserSoul iNumItems elseif iSoulGemSoulSize == 3 RFSoulGemSwapContainerRef.AddItem SoulGem5Grand3CommonSoul iNumItems elseif iSoulGemSoulSize == 4 RFSoulGemSwapContainerRef.AddItem SoulGem5Grand4GreaterSoul iNumItems else RFSoulGemSwapContainerRef.AddItem SoulGem5Grand5GrandSoul iNumItems endif rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;let strOutputText := sv_Construct "Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize ;set strPluggyString to -1, strOutputText, 1, 1 ;StringToTxtFile strFilename strPluggyString 1 ;DestroyString strPluggyString ;sv_Destruct strOutputText elseif rItemBase == BlackSoulGem if iNumItems > PlayerRef.GetItemCount BlackSoulGem PrintC "RFHotkeys SoulGem Boogie - number of ref items for BlackSoulGem is greater than number of base items!" endif if iSoulGemSoulSize == 5 RFSoulGemSwapContainerRef.AddItem BlackSoulGemFilled iNumItems rItem.RemoveMEIR PrintC"Exchanged %g) %n with soul level %g." iNumItems, rItemBase, iSoulGemSoulSize endif endif endif endif loop set rItem to 0 ;set rItem to 0 ;PrintC"============= Dump temp swap container ==========" ;foreach rItem <- RFSoulGemSwapContainerRef ;set rItemBase to rItem.GetBaseObject ;set iNumItems to rItem.GetRefCount ;PrintC"RFSoulGemSwapContainerRef - Found %g) %n)" iNumItems, rItemBase ;loop RFSoulGemSwapContainerRef.RemoveAllItems player 0 player.PlaySound3D SPLMysticismCast Message "Soulgem boogie complete." ;DestroyString strFilename elseif iButton == 6Soulgem Boogie seems to be working lately. Though in the past it would sometimes convert one soulgem I filled to two full ones. LOL! Other times I would see my entire stack of empty ones disappear and a big stack of full ones appear. However, it happens so sporadically that I can't pinpoint the cause. EDIT: My suspicion is that one (or both) of my loops are somehow corrupting the inventory stacks of soulgems in my inventory. Or xOBSE has a bug that is doing this and my scripts just happen to hit that bug in its head. I updated xOBSE at some point to 22.7 and am now at 22.9. The problem may have started with 22.7. I tried going back to OBSE 22.1, but the problem continued. I am back to 22.9 now.
  8. Thanks! You confirmed that this is something broken in my game or maybe a corrupted save. I am really burned out on this right now. A few days ago I tested what would happen if I put all gems in a container and then saved and restarted the game. It fixed the problem for a while. The ONLY time I get the wrong soul size is for creatures that are PC Offset but have a set soul size, like the ogres in Pale Pass: level 24, soul size set to Common. I haven't figured out that one because of the bigger one.
  9. You can't use variables in the script-effect-script that way, because the that kind of script doesn't continue to live after it's done. So, every time the spell is cast it creates a new instance of that script and the local vars are all set to zero. You need a quest or object script for that. Then you refer to the variables via the quest or the ref-id of the object for object scripts (like those on an NPC). To access the vars of an object script, the object must be persistent. If you don't want to make an NPC persistent, so that your script can work on any in the game, you need to store the data you want to save about them in a quest script.
  10. Thanks for trying. Your code is doing exactly the same thing mine is as far as looping through the array you get from the GetInvRefsForItem. Did you test it to see if it works?? If you do the ar_dump command on the array, what do you see in the console? If I have 8 empty common soulgems on me (8 SoulGemEmpty3Common that are empty and none that have a soul in them), I expect to see ONE stack in the array where the RefCount is 8 and the current soul level is 0. I get an array of 10+ items. Most have a refcount of -1. Then I see one stack with 16 empty soulgems. Other times I may see one stack with 1 and another with 15. The results I have been getting aren't totally repeatable. In fact it works fine with Grand and Black soulgems. Why not the others then? So it seems to be the GetRefCount instruction that is failing here. I have seen other weird things with the stacks I get from the foreach command. If there is nothing wrong with the script, and you don't see the weirdness I am seeing, it's possible my game is corrupted or something is broken with OBSE. I already asked the OBSE person about this, but (as you probably already know) they won't even consider that there's something wrong with their code unless I can prove it beyond any doubt. So, I am trying to get to the bottom of this. So, what I really need here is for someone else to try this out and see if it works for them or not. One wild guess I have now is that the latest xOBSE and/or some plugin (DLL file) I installed is not compatible with Win 7. But I reverted to OBSE 21 and started from an old save to test this, but I get the same wrong results. Thanks.
  11. Yea I know, that is why I do the level check on creatures to get their soul level. Because NOTHING else I tried works on creatures that are not a hard coded level but a PC level offset instead. Same with the various Get commands that return a soul level. The GetSoulLevel takes a BaseID, not a reference. Though you could be right about the GetCurrentSoulLevel being made for actors. It seems to work for the soulgem inventory refs I have to identify the ones I filled already. And yes, I do have a command to get rid of the array below that (to enable the garbage collector to take it): let arrSoulGems := ar_null dfd
  12. The "if arrSoulGems" is just making sure it actually is referencing something, since I don't know what the OBSE function will return if there are no soulgems of that type in my inventory. It either returns null or it returns an empty array. This way, I cover my ass either way. The soultrap spell works by finding an empty soulgem in your inventory and then doing a SetCurrentSoulLevel on it. So the item remains the same base object (like SoulGemEmpty3Common) but is now different from the other ones by info saved in that instance of the object. The only way to get an inventory ref on an object in your inventory (or any container for that matter) is by using a foreach loop or using the GetInveRefsForItem. For the latter I should have one array item that is a stack of the soulgems that are still empty. I am getting something else. The numbers are way off. I have been plugging away with this for over a week now. I am out of ideas and things to try. For now, I want to figure out how to wirte debug to a file using pluggy. The only mod I have that uses it successfully is RefScope. Wish me luck.... :ermm:
  13. Supposedly this command will give you an array of stacks of an item in a container. I want to count the empty soulgems in the player's inventory for soulgems that match the target's soul size. My Challenge: To display the number of empty soul gems that match the target's soul size every time I cast a soul trap spell on an Actor. Here is what I have: if rTarget.IsCreature == 0 set iSoulSize to 6 let arrSoulGems := PlayerRef.GetInvRefsForItem BlackSoulGem elseif rTarget.GetLevel >= 18 set iSoulSize to 5 let arrSoulGems := PlayerRef.GetInvRefsForItem SoulGemEmpty5Grand elseif rTarget.GetLevel >= 13 set iSoulSize to 4 let arrSoulGems := PlayerRef.GetInvRefsForItem SoulGemEmpty4Greater elseif rTarget.GetLevel >= 7 set iSoulSize to 3 let arrSoulGems := PlayerRef.GetInvRefsForItem SoulGemEmpty3Common elseif rTarget.GetLevel >= 2 set iSoulSize to 2 let arrSoulGems := PlayerRef.GetInvRefsForItem SoulGemEmpty2Lesser else set iSoulSize to 1 let arrSoulGems := PlayerRef.GetInvRefsForItem SoulGemEmpty1Petty endif set iPetty to 0 set iLesser to 0 set iCommon to 0 set iGreater to 0 set iGrand to 0 set iBlack to 0 set bAzuraStar to 0 if arrSoulGems let iArrSize := ar_Size arrSoulGems set iArrSize to iArrSize - 1 PrintC "Array size is %g" iArrSize while iArrSize >= 0 let rItem := arrSoulGems[iArrSize] ;; FIXED!!! <<============ I DON'T THINK THIS WORKS. let rItemBase := rItem.GetBaseObject let iCurrSoulLevel := rItem.GetCurrentSoulLevel let iGemCount := rItem.GetRefCount PrintC "RFFnOnSoulTrap ------ Stack Count %g for %n is %g, Current Soul Level = %g", iArrSize, rItemBase, iGemCount, iCurrSoulLevel if iCurrSoulLevel == 0 && iGemCount > 0 ; Soulgem & empty if iSoulSize == 1 if rItemBase == SoulGemEmpty1Petty ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iPetty to iPetty + iGemCount endif elseif iSoulSize == 2 if rItemBase == SoulGemEmpty2Lesser ;rItem.GetSoulGemCapacity == 2 ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iLesser to iLesser + iGemCount endif elseif iSoulSize == 3 if rItemBase == SoulGemEmpty3Common ;rItem.GetSoulGemCapacity == 3 ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iCommon to iCommon + iGemCount endif elseif iSoulSize == 4 if rItemBase == SoulGemEmpty4Greater ;rItem.GetSoulGemCapacity == 4 ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iGreater to iGreater + iGemCount endif elseif iSoulSize == 5 if rItemBase == AzurasStar set bAzuraStar to 1 elseif rItemBase == SoulGemEmpty5Grand ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iGrand to iGrand + iGemCount endif elseif iSoulSize == 6 if rItemBase == BlackSoulGem ;PrintC "RFFnOnSoulTrap ------ Stack Count for %n is %g, Current Soul Level = %g", rItemBase, iGemCount, iCurrSoulLevel set iBlack to iBlack + iGemCount endif endif endif set iArrSize to iArrSize - 1 loop ; endifIf I dump that array I get, I see the inventory refs it gives stacks of that soulgem, but I my code to process that array does not work. Thanks! OOPS. I have a typo in the array index variable. Now that I fixed that I am seeing the same problem I have trying to loop through the player with the foreach command. The soulgem stacks I am getting are not what is in my inventory. I just tested it with 18 empty Common soulgems in my inventory. When cast on a Fire Atronauch (a Common soul), my code reports there are 33 empty Commons. In the console I print each item from the array on a single. There is an item in the stack that has a count of 33 and a current soul size of 0 (empty). I cannot get the number of gems that the code finds to match what is in my inventory.
  14. All I did was unzip it (version 15.2) to a folder on my harddrive and double click the .jar file. Runs fine.
  15. The color depends on the color of the NiFogProperty. Orange and grey are the two I saw.
  16. There are also several meshes in Kvatch castle.
  17. You can use RefScope to see info about things you see in your inventory and containers. It will even show you the esm/esp that it came from.
  18. They could be unplayable items added by mods (like COBL) that adds them to NPCs and containers to show that some action has already performed on them.
  19. They could be unplayable items added by mods (like COBL) that adds them to NPCs and containers to show that some action has already performed on them.
  20. Install Refscope. Works wonders for things like this.
  21. OOO adds lots of things, from new dishes and planters to extra hidden jewelry boxes to steal from.
  22. I found a spell that works the way you want your's to work. Spell: DAHermaeusTrap Every time you cast it, it just fires a script to do its dirty work.
  23. What you are trying to do is simple, which means you are making a dumb mistake somewhere. My guess would be that you setup the spell incorrectly, assuming you figured out how to add an XMarkerHeading and how to give it its own RefID. My recommendation is that you find another spell that also just executes a script and compare your's to it. The only other idea I can think of is that you take and post a screen-shot of the pop-up windows for your spell and the XmarkerHeading item in the CS, and give us the details of every setting and how you set it. Other than that NO ONE can tell what you did wrong when all you say is "it didn't take".
×
×
  • Create New...