-
Posts
19 -
Joined
-
Last visited
Posts posted by Smollett
-
-
After a long while and a few computer crashes I decided to pick up Skyrim again. I had some ini tweaks that I had previously which were pretty good but sadly lost.
Well I'm back with some new gear and I started combing google's best and brightest but I couldn't find a comprehensive index of ini commands. There are a ton of people with ini settings they think work (I won't go into whether they do or not), but I couldn't find a simple "this command is understood and this is what it does" list. I noticed people using the nividia tweaks but they only went so far and were relatively old (but still useful). I also know there there are some settings that are not included in a generic ini file.
I'm trying to basically build my own ini settings beyond the ugrids and tree shadows with what I got but I can't find definitions that are helpful after several google searches. Does anyone have a decent listing?
Again, I'm not interested in "these are my settings" or "this is the best" but instead I'm looking for definitions so I can make my best.
-S
-
I would also like to know. I have the exact same issue and I've never encountered it before when I added perks to trees. Any guidance?
S
EDIT: I found the answer in case anyone stumbles upon this. Simply copy your enb dll (d3d9.dll) temporarily somewhere outside the Skyrim folder. It's possible there are enblocal.ini settings that will fix this but I found that if I moved the d3d9.dll out of the skyrim directory the problem vanished. Of course remember to put it back in when you are finished.
-
Thanks Steve,
Now that I have it working, I was going to look at options to level up every 10 levels. It'd be better if I could tell the Manager not to ping the quest until certain levels but if someone loads it up at, say level 11, then you'd want to go ahead and add all the stuff. The only way to do that is obviously inside the script which gets run anyway. Idea....maybe I can let the OnGameLoad event handle that scenario and let the SM ping at every tenth level....
As for the formlist, this is true. I did it that way because at the time I wasn't sure if the spells would stay in the formlist right, so it was important to give a level 10 spell to the level 10 player and not the level 40 spell which would occur if the first spell in the list is level 40. Right now I'm mulling over just throwing it all into an array and do it all behind the scenes and just remove/add from a hidden array but I'm thinking its probably not any different one way or another. I did this for an oblivion mod where I threw all the armor into an array and it mimicked what Skyrim's "outfits" are now. Now that I have this running I can toy with ways to make it faster/cheaper/etc.
About your script:
1) Debug.MessageBox("[AAAMageLife:OnStoryIncreaseLevel]You leveled up! Your level is "+flvl)
Does this essentially cancel the messagebox unless you level up? I've removed the messageboxes since they only served to help me debug, but I could use the same idea elsewhere.
2) Something I learned while coding this is using "Elseif" can help you out when it comes to exclusion/inclusion thus reducing the "AND"/"OR" type if statements. I rebuilt the if statements to take the reduced reading into account. If we have the Elseif in there you are essentially kicked out of the if tree when it becomes true, so all you need is "< X" in there and it shouldn't go to the next Elseif. There are exceptions to this but in this case as I go through the logic it works pretty well and it works in game.
Finally, all this has given me a couple of other juicy ideas to add to it. In fact, I think I might re-write the whole thing now that I know how it all goes together and make it a true monster....why not?
-S
edit: I took out the "lvlXspell" entries and I put an array into the code instead of a formlist. It works like a charm and actually condensed my code slightly from the methods used for a formlist. It also allows me to populate the array in a sub-dialog box in the script 'properties' which makes it essentially a formlist without a having a database entry.
-
To answer your question, on a second level up, nothing happens. At every tenth level nothing happens.
Since the code has changed significantly, I'll re-post it. Everything works perfectly on the first level up. The quest starts, immediately goes to the right stage, the appropriate spells are added and all is right with the world, so at this point I think it's the link between Story Manager and the quest. However, I could be overlooking something so I include the new code. Just for the record I am using "player.advskill Onehanded xxxx" in the console, and I'm pretty sure this should adequately simulate normal game leveling.
Some notes about the new code vs. the old. Because I am using the Story Manager to ping the quest on level up, I decided to do away with the OnInit and replace it with the OnStoryIncreaseLevel. It'll start when the player first levels up and not at the very beginning. 6 of 1, half dozen of the other really. You'll also note I removed the secondary functions and with help from others I was able to shorten a lot of the code. Again, there are improvements to make but I think the script is pretty well condensed enough that it won't be a hog.
So the new code is:
Scriptname AAAMageLife extends Quest {SCript for moving up the level ladder} Quest Property qst Auto ; Quest reference Spell Property lvl1spl auto ; Level 1 spell Spell Property lvl2spl auto ; Level 2 spell Spell property lvl3spl auto ; Level 3 spell Spell property lvl4spl auto ; Level 4 spell Spell property extraspell Auto ; extra spell if I want to add it later on (thinking about it...) FormList Property FRMLST Auto ; Formlist with the above spells Actor Property me Auto ; make my life easier Event OnStoryIncreaseLevel(int flvl) debug.messagebox("you leveled up!") updateplz(flvl) EndEvent ; Function which removes the older spell, and adds the new one IF the player is above the threshhold. Function updateplz(int lvl) Spell givespell int qstage debug.messagebox("I'm in the update loop. Your level is "+lvl) ; Remove the spells in the formlist to re-baseline int kspell = 0 while kspell < FRMLST.GetSize() if me.HasSpell(FrmLst.GetAt(kspell)) Spell TS = FrmLst.GetAt(kspell) as Spell me.removespell(TS) endif kspell += 1 endwhile ; add the spells necessary and set the quest stage if lvl<10 qstage = 0 elseif lvl<20 givespell = lvl1spl qstage = 10 elseif lvl<30 givespell = lvl2spl qstage = 20 elseif lvl<40 givespell = lvl3spl qstage = 30 elseif lvl>=40 givespell = lvl4spl qstage = 40 endif me.addspell(givespell) if !(me.hasspell(extraspell))&&(qstage >=20) me.addspell(extraspell) endif If GetStage() != qStage SetStage(qStage) EndIf debug.messagebox("The update is done. I added " + givespell + " and set the quest stage to " + Getstage()) endFunctionEdit: By "Nothing Happens" I mean that the messageboxes I put into the code to alert me when things are going on do not show up, nor do the spells change.
Edit#2: Ah HA! I got it to work. I went back over the skill increase quests (they were the closest to what I wanted to do) and noted that at the very end of the OnStoryIncreaseLevel event, there was a Stop(). Essentially since the quest hadn't stopped, the Story Manager didn't re-initialize the quest, therefore nothing was happening. Now I just need to clean up a few things and should be ready!
Thanks for the help T3!
-
Ok, I got this thing to work partially.
By setting up the Story Manager and the quest start event I was able to ping the quest when the player levels up. On the very first level up, the quest activates, and it goes through the OnInit, and the script runs when the game loads.
However on subsequent levels, the quest isn't getting re-pinged or it does nothing. The "Run Once" flag is unchecked and I'm looking at examples but I can't see anything that is close to the situation.
Any Ideas?
-S
-
ok, I'll put in a simple return in the spell block and see about cleaning up the casts. So far there are no errors (other than the linkage broken) but cleaning the code is the right thing to do.
I have read that page but I'm a rock in understanding some of its nuances. However I do see how this could tie in to perhaps connecting the alias script in with the mainscript.
Thanks for the check!
-S
edit: I put in the changes but it didn't compile. It demands the cast, and it demands that I return an empty spell. That's ok in my book since I don't know that it breaks anything (I can check above in the function call) and if I decide to update it in the future then the placeholder is there. Also, I noted that my alias is "player" but for brevity, I used "me" in my script code. tests show it doesn't do much but I think I'll keep the same nomenclature just in case.
-
I'm am making a mod that initializes on character creation, and as they level up they are granted a more powerful version of a spell. I have most if not all the Quest tabs filled out, but I'm having issues with the scripting. I have placed the main script below, but essentially I run an OnInit (game starter) update function which checks the character's level, spell knowledge, and quest stage. At level 10 the "quest" begins with a stage 1 spell, at 20 its stage 2 spell and so on.
Problem
I have a main script with the update function to check the players level and setup the spell and quest stage accordingly. It works when first initialized. However I have a secondary script attached to the player (alias Tab) that checks when you load a game, and when you level up (if I read creationkit.com correctly). These call the update function to check if the character has reached the next tier. Unfortunately, these don't seem to work and neither the level up nor the OnGameLoad() seem to call the update script. More frustrating is that this is a method used in a few mods I've seen which work perfectly, so I'm a little lost in what could be the issue. Again it could be as simple as a checkbox in the dialog tabs too.
Obviously there are areas of improvement (and you are free to point them out) since i'm rather new to scripting in Papyrus but I've examined a lot of script from other mods and figured out a lot just by taking them apart and watching how they run. Also I have messagebox's here there and yonder for debugging.
So: the script that is in my "Script Tab" that runs the OnInit and the update function is immediately below and the player script attached via the Quest Alias Tab is further below it:
--------------------------------------------------------------------------------------------------------------------------------------------------------
Scriptname AAAMageLife extends Quest {SCript for moving up the level ladder} Quest Property qst Auto ; Quest Spell Property lvl1spl auto ; level1 Spell Property lvl2spl auto ; level2 Spell property lvl3spl auto ; level3 Spell property lvl4spl auto ;level4 FormList Property FRMLST Auto ;Formlist with the above spells in them Actor Property me Auto ; make life easier to refer to the char as "me" ; On the very first run, re-baseline it all! Event OnInit() updateplz() Utility.wait(1.0) qst.setstage(updatestage(me)) EndEvent Function updateplz() debug.messagebox("I am updating") me.removespell(GetKnownSpell(me, FRMLST)) me.addspell(updatespell(me)) endFunction ;;;;;;;;;;;;;;;;;;;;;;; Function finds the right spell for the level and returns it to the update function Spell Function updatespell(Actor plr) int lvl = plr.getlevel() Spell givespell if (lvl<=10) Return Givespell as Spell elseif (lvl>=10)&&(lvl<20) givespell = lvl1spl elseif (lvl>=20)&&(lvl<30) givespell = lvl2spl elseif (lvl>=30)&&(lvl<40) givespell = lvl3spl elseif (lvl>=40) givespell = lvl4spl endif debug.messagebox("I gave you a spell called " + givespell) Return givespell as Spell EndFunction ;;;;;;;;;;;;;;;;;;;;;;; Function removes all spells contained in the formlist Spell Function GetKnownSpell(Actor Subject, FormList SpellFormList) Global int kspell = 0 while kspell < SpellFormList.GetSize() if Subject.HasSpell(SpellFormList.GetAt(kspell)) Spell TS = SpellFormList.GetAt(kspell) as Spell Subject.removespell(TS) endif kspell += 1 endwhile return None EndFunction int Function updatestage(Actor plr) int lvl = plr.getlevel() int Stage if (lvl<=10) Stage = 5 elseif (lvl>=10)&&(lvl<20) Stage = 10 elseif (lvl>=20)&&(lvl<30) Stage = 20 elseif (lvl>=30)&&(lvl<40) Stage = 30 elseif (lvl>=40) Stage = 40 endif debug.messagebox("I am returning a stage of " + stage) Return stage as int EndFunction----------------------------------------------------------------------------------------------------------------------------
Scriptname AAAMagelifeincrease extends ReferenceAlias ; This script merely calls the original quest script to re-run the level checker AAAMageLife Property up Auto Event OnStoryIncreaseLevel(int lvl) debug.messagebox("you leveled up!") up.updateplz() EndEvent Event OnPlayerLoadGame() debug.messagebox("you've loaded a game and I caught it") up.updateplz() EndEvent -
Thanks,
I have abandoned all hope with this and am now tackling scripting. I've also just come at it from other angles and I think I may use Quest alias and Perks to see how far I can play with them.
-S
-
Thanks for the reply.
I had thought of this earlier but it encounters a problem with the overall purpose. I really like visibility in numbers, nothing in the background or unreadable.
I am making a set of "smart" armors. Armor that applies bonuses dependent on the skill a player has, and the way the game is played. A good example would be finding late in the game some piece of armor you like, but you've invested skills elsewhere (or maybe its lower level armor). The armor gives you a small damage resistance boost which drops off as you go up in skill level and invest in the perks which raise that particular armors rating. Kinda "eases" you into a new type of armor which is particularly useful late in the game or in difficulty overhauls......or you are fickle like me.
This would also maybe allow for a doorway of non-tiered armor sets which rely on player skill more than material. An obvious exception is leather vs metal.
I have also tossed around a script, but this has its own pitfalls.
-S
-
I have an issue with how enchantments are displayed and I can't seem to find a good work around, and I'm fresh out of ideas.
I have created an enchantment with several Magic Effects stacked up. Each effect has a set of conditionals (2-3) such that as the player levels up and gains perks/skills certain enchantments go away and are replaced with another (armor specific else I'd work in new Perks).
This works in the game quite well without much issue except when I go to read the enchantments, I get a tiny tiny script of ALL the enchantments attached to the armor whether they apply or not. I've looked hither, thither, and yon trying to find an idea about muting the enchantments that don't apply, but I've finally given up.
Does anyone have an idea how I could change the "Hide in UI" checkbox from outside the Magic Effect Dialog? Or perhaps suggest another method I'm not aware of?
-
Thank you very much for the information. particularly the source for this as I would also like to play the other games.
it worked and now I'm getting beaten up properly. :biggrin:
hard game....
-S
-
Just for those who didn't know....
but I'm having trouble getting it to run. I have DOSbox, and installed the game, but it keeps looking for the CD. The config file from Bethesda has it go to the folder "dfcd" which is where the digital CD resides. However I'm still getting an error that it can't find the cd. anyone else have similar issues or someone more knowledgeable with the game? Thanks!
-S

Comprehensive ini listing
in Skyrim LE
Posted
All,
Thanks for the feedback. After some poking around in Mod Organizer I found it's configurator to be helpful in identifying the hidden ini settings. It has some definitions as well but not everything is defined.
I'll take a look at what was sent and keep looking
-S