Jump to content

scorrp10

Premium Member
  • Posts

    1360
  • Joined

  • Last visited

  • Days Won

    15

scorrp10 last won the day on January 26

scorrp10 had the most liked content!

Nexus Mods Profile

7 Followers

About scorrp10

Profile Fields

  • Country
    United States

Recent Profile Visitors

16106 profile views

scorrp10's Achievements

Mentor

Mentor (12/14)

268

Reputation

  1. The main question is: did you get to a point where you can edit the script? That is, did you get all the .psc file from Scripts.zip to where CK can see them?
  2. Look at Weather.psc objecttype. Also look at implementation of StormCallShout shout, specifically VoiceStormCall1 spell, namely its VoiceStormCallEffect1Self, which uses 'magicSetWeatherScript'. It should really give you some idea on how to play with weathers.
  3. Oh, especially if you don't have any crafting mods installed, the reason it is not working for you is because of how you are testing it. Most likely, you have a game saved next to a wood chopping block, and after making your changes, you load that save and try using this block. This will not work. You see, when you first time enter a place that has a chopping block, the game will generate in memory an instance of resourcefurnuturescript - that is, all of its variables, filled properties, current state, stuff like that. That instance will also be written to your save game. The changes you made on the base object script are only going to come into effect when creating a NEW instance of that object. The block you saved the game next to will still have its properties set to 6 and 2. So how can you actually test your change? Option 1: test it on a new game. No need to suffer the usual cart ride. Launch game, and at main menu, open console, and type : coc whiterunorigin There is a chopping block by the 3rd house on the right (right after Breezehome) Option 2: spawn a new chopping block. Load up your save, open console, type: player.placeatme 7022e This will spawn a brand new chopping block under your feet. You can also use ReSaver to take that script instance out of your save. But this is a bit more involved. NOW. If you want your change to work seamlessly on a game in progress, on chopping blocks that already been loaded, you need to do a bit more work. The most blunt approach: in 'OnActivate' function, right at the top, add: ResourceCount = 4 MaxResourcePerActivation = 12 to make it 3 chops of 4 each. (12 firewood total). Then, recompile the script. In fact, if you make this change, you will no longer need the .esp with changed prroperties.
  4. I do not know your setup or what other mods you got. Something could be affecting it. For example Complete Crafting Overhaul Remastered changes how chopping blocks work by replacing the Scripts\resourcefurniturescript.pex with its own (in its .bsa) That script ignores the mentioned properties and uses instead the settings from the mod. If you have that mod installed, you can just go into its MCM, "Mining and Materials" page, it has settings for firewood. Now, if you right-clicked on a script in CK, and its 'Edit Source' or 'Open in External Editor' options are disabled, it means that CK does not see the source code for this script in the proper location. If this is for SSE, the default location for source files is Data\Source\Scripts. If this is for LE, default source location is Data\Scripts\Source. In your game install directory, check CreationKit.ini, [Papyrus] section, if it has sScriptSourceFolder setting, indicating a different location. Have you unpacked Scripts.zip in your Data folder? Now, the game itself uses compiled .pex script files that go under Data\Scripts. Normally, all vanilla .pex files are not actually in that directory, but are packaged into 'Skyrim - Misc.bsa' archive. Mods can also package their files into their own .bsa, rather than keep them as loose files - which is what Crafting Overhaul does. If I look into my Data\Scripts, resourcefurniturescript.pex is not there, it is being sourced from a .bsa I look into my Data\Source\Scripts, and resourcefurniturescript.psc is there - it is the file unpacked from Scripts.zip So, if you have a mod that overrides that script, changing property values would have no effect. You actually need to make the game use the vanilla script. This can be accomplished in two ways: 1. you can use BAE to extract Scripts\resourcefurniturescript.pex from 'Skyrim - Misc.bsa' and put it into your Data\Scripts 2. you can compile resourcefurniturescript.psc - which will generate the .pex file in Data\Scripts. Gameplay menu - Papyrus Script Manager - filter for resource. Make sure 'Has Source' says Yes. Right-click, choose Compile. You now should have the .pex file in Data\Scripts.
  5. Papyrus coding is a bit too large subject to explain in one post. That said, there is one thing to be aware of: you need to have the source code (.psc) files in place for any object type your script mentions. For SSE, the source code is generally expected to be in Data\Source\Scripts (at least if using CK to compile). A few steps you need to do: Take everything you might already have in Data\Source\Scripts and copy it to some other location. (just in case) In your Data folder, there should be a Scripts.zip file - unzip it in place. It will populate a LOT of .psc files into Data\Source\Scripts If you have anything in Data\Scripts\Source, copy it over to Data\Source\Scripts. Overwrite files if prompted. This SHOULD put you in a good position to compile stuff. Now, CK does have a script editor - but it kinda sucks. Personally, I use NetBeans for my script editing. The trick is to associate the .psc extension with it. Oh, make sure you got Creation Kit Platform Extended So, after launching CK, and loading up Skyrim.esm as master (no active file needed), I go to the furniture section, and locate 'WoodChoppingBlock'. Opening it up, I sse it has two scripts attached: hardworkerwoodscript resourcefurniturescript The first one has to do with achievements and is of no consequence. But the other one is what we are after. I right-click it and select 'Open in External Editor'. So, looking at script properties at the top, I notice these: int Property ResourceCount = 1 Auto {how many resources you get per use} int property MaxResourcePerActivation = 6 auto {How many times can this object be used before the player has to re-activate?} However, as these are properties, those 1 and 6 are just default values. Selecting the script in CK and clicking Properties button, shows that ResourceCount is actually 2 and MaxResourcePerActivation is filled with a 6. So REALLY, you don't need to change this script - you just need to fill those properties with a different values. For example, you can set them to 4 and 12, where you still do 3 chops, but get 4 firewood each. Or you can leave the ResourceCount the same and set MaxResourcePerActivation to 12. After editing properties, click OK to close properties window, and OK to close Furniture record window. Under File menu, save your plugin (you will be prompted for a name). However, if you did need to change the script, you would make changes to it in NetBeans, then Save it. Then, in CK, from Gameplay menu, you choose 'Papyrus Script Manager'. To easier find needed script, type part of its name in the filter window. Right-click on the script and choose Compile.
  6. You can load up SSEEdit and check if any mod overrides your shout forms. It is also possible that it is being done via a perk - so you can use More Informative Console to see what non-vanilla perks you have.
  7. A fairly good example: Farkas If you look at his actor record, he got a stack of 4 packages, one is an Eat package from 13:00 for 3 hours, a Train one from 7:00 for 5 hours, and Sleep from 22:00 for 8 hours, and the rest of time - hanging out with Companions Leaders in the hall. These are packages he will do if not being used in any quests. Now if you go to C06 quest(Companions: Glory of the Dead), and open Farkas alias, he got 7 packages stacked there. When C06 quest starts, Farkas fills this alias, these 7 packages will take priority over his usual stuff. Top package is 'C06FarkasWaitInUnderforge', but its conditions are that C06 stage is >10 and <=20, so this package is in effect only during stages 15, 17, 18 and 20. And 2nd from top is 'C06FarkasForceGreetBeforeSpiders' - where it plays the C06FarkasDepart topic (I can't go any further, shield-brother), and conditions on this package are: C06 quest stage >= 40, and conditional property FarkasLeft is 0 and conditional property FarkasFGBeforeSpiders is 1. Both conditional properties are initially set to 0. In YsgramorTomb01, C06StatueOfYsgramor activator has an attached script, in which in State NoBlade, upon Activate: Remove Wuuthrad from player Set Quest Stage to 40. << that is one of the conditions. The, in same tomb, there is an area trigger C06NearSpiderAreaTrigger, which has a script 'C06NearSpiderAreaTriggerScript' attached, and this script has: Event OnTriggerEnter(ObjectReference akActivator) if (akActivator == Game.GetPlayer()) (C06 as C06QuestScript).FarkasFGBeforeSpiders = true ;; this sets a condition for the forcegreet package Farkas.GetActorReference().EvaluatePackage() ;; this will evaluate Farkas package stack endif EndEvent So EvaluatePackage call will activate the ForceGreet, and At the end if the conversation, there is a script that sets FarkasLeft property to true - so that Farkas does not end up force-greeting you repeatedly.
  8. Ok, then, make sure you got More Informative Console In the game, open console and click on the door to the place. On the right side, it will tell you Ref Form of the door, and plugin in which this Ref is defined. Knowing the plugin will let you find out about which mod is it from. If you don't want to bother with getting the key the right way: Once you clicked the door in console, the info panel in top left should have a 'Lock' category. Mouse over the word Lock and press Shift - it will open info about lock, telling you which key it needs. Mouse over Key, and press Shift to open a panel about the key. It should contain Base FormID of the key. Then, in console you can just put in a command: player.additem {base form id of the key} 1
  9. The AE addon is a thoroughly uderwhelming collection of CC mods that are (IMHO) subpar to what can be found for free on Nexus and other platforms. I suppose SOME modders might release mods that require stuff found in the AE addon... but I am yet to see those. The 4 CC mods included in SSE 1.6.* are now considered part of the base game and there are mods needing them - but thats about it. You can just check it out a decide for yourself https://www.pushsquare.com/guides/skyrim-anniversary-edition-all-new-content-all-creation-club-dlc-listed
  10. Then, in the dialogue invoked by the forcegreet, you add a fragment: MyQuestForceGreet.SetValueInt(0) Say your quest has 3 cases where this npc forcegreets you. You put all 3 packages at top of stack into alias, and set their conditions to MyQuestForceGreet being 1, 2 or 3.
  11. No, not like that. Ai Packages are like dialogue responses - they go into a stack, and upon evaluation, the top package that has its conditions satisfied is the one that will be used. If NPC fills an alias in a quest, the packages stacked on the alias have priority over packages on the base actor record. If NPC fills multiple aliases, their packages are considered in the order of quest priority. EvaluatePackage function takes no parameters - it simply forces the NPC to evaluate their package stack, and act on the first package which conditions are satisfied. So, what you do is you add your forcegreet package to the alias of that NPC. Make sure it is the top one. Then you, for example, add a Global, named something like MyQuestForceGreet, and set it to 0. On your forcegreet package, set a condition that MyQuestForceGreet == 1. So in that event handler, you: MyQuestForceGreet.SetValueInt(1) NPC_Alias.TrytoEvaluatePackage()
  12. Checking OStim github shows the scripts support it. Mods can send custom events to each other. So, in the script function where you launch the OStim scene, you add: RegisterForModEvent("ostim_end", "OstimEndHandler") In the same script, you add a function: Event OstimEndHandler(String eventName, String strarg, Float floatarg, Form sender) Utility.Wait(2.0) ; let it really finish UnregisterForModEvent("ostim_end") ; do whatever will enable the condition for the forcegreet package NpcAlias.TryToEvaluatePackage() EndEvent
  13. See if in your Data, you still got meshes/actors/character/facegendata/facegeom/Skyrim.esm/0002BF9F.nif
  14. I am doing a similar thing with a mod I am working on, except there, a force-greet is triggered by opening a prison door. The FG package is at top of package stack on the alias, but is on a condition. Opening the door runs a script, advancing quest stage, and setting condition for the package. The key element, however, is calling EvaluatePackage() on the NPC (or TryToEvaluatePackage() on the alias) The TopicInfo initiated by the FG package has a fragment to clear the condition for package. About OStim: I have not yet explored the structure of new non-0SA OStim, but the older one was based on ModEvents. It would send out events on scene start, on adding actor to scene, on mid-scene undress, on animation change, and yes, on scene end as well. This essentially created an API for various other mods to latch onto. I am pretty sure that new one does this as well, will need to check. So essentially when launching a scene, you RegisterForModEvent of OStim scene end, and in the mod event handler, initiate the package.
×
×
  • Create New...