Jump to content

lvlPredatorScript -- Please explain


IsharaMeradin

Recommended Posts

Can someone please explain to me why the USKP adds keywords and associated checks to the script?

 

If it is to resolve the scripts original attempts to enable/disable a predator that had an enable state parent, why couldn't a bool property with a default value have worked just as well?  Only those references with an enable state parent would actual need be edited to have the bool value changed. 

 

If there is some other issue at hand, please explain as I've not yet to see any other issues with the lvlpredatorscript in my game.

 

I did look in the tracker and saw something about GetRace() but have not seen that yet in game and there was no explanation in the tracker of how the issue was resolved, just that it was.

Link to comment
Share on other sites

if you ever find a more elegant way to handle something and prove it works you should post it as a bug tracker

I would.  But I'm asking first because there could be other reasons as to why it was done the way it was done.

Link to comment
Share on other sites

Something like this? (from the changelog - V1.3.3) :-

 

  • The LvlPredatorScript has been corrected so that it will no longer fill the logs with errors about enable parents. The addition of two new USKP-specific keywords was required for this in addition to editing several world records for the placed creatures the script was intended to run for. In an 100% vanilla game, this completely eradicates these error messages and the predator/prey setups now work as they were intended to. Mods which edit these references will cancel out the fixes for them and we cannot correct for this.
Link to comment
Share on other sites

Still doesn't answer why keywords were chosen over other possible methods.

 

If the keywords are being used as part of the retro-active update thing or some other unknown reason, that is what needs to be told.

 

If there is no other reason, then it seems to me that the USKP purposefully used keywords so that other mods would have to require the USKP plugin to incorporate the corrections. Rather a lame and shameful way to increase usage and popularity, if you ask me.

 

Using a bool with default value would allow mod authors that do modify a creature record with an enable state parent to simply include a copy of the script and set their bool value appropriately on their creature record.  It would be up to the end user to decide if they wanted to use the USKP or not. And if not, then at least they get the correction for the creatures in the mod they chose to use.

 

Even better, the USKP can provide a pool of safe scripts (those scripts that will function with or without record changes) that can be installed independently of the USKP.  This would be intended for mod authors that need to make their mods compatible with script changes but do not need to require USKP modified records.  Think SKSE but with corrections instead of new features.  USKPSE  (Unofficial Skyrim Patches Script Extender).

Link to comment
Share on other sites

:huh:

 

Source scripts are provided with the USKP. Mod authors are free - and encouraged - to use them. We appreciate authors who have mods dependant on the USKP (not to force it's popularity or anything, I don't get why people are so fussed about that nonsense), but they can simply integrate any fixes into their mod if they wish. (Also encouraged)

Link to comment
Share on other sites

I understand that.

 

But it does not apply in the case of lvlPredatorScript.  By adding a specific keyword which points to a new record specific to the USKP with it's own ID#, the mod author must parent the USKP to incorporate the fix and make it compatible.  Whereas by using a property with a script side default value for the majority of uses, the mod author merely needs to supply the script (for non-USKP users) instead of parenting and requiring the entire USKP should their modified record also need the correction.

 

It is an alternative that needs to be explored before determining that new records have to be created and tied to the script and records holding the script.

 

So again, there has been no answer given as to WHY (and by why, I mean the reasoning) there were two new keyword records created and tied to both the lvlpredatorscript and the records that use it.  Is it better?  Do they serve a purpose elsewhere?

 

If no one knows, I will reopen this in the bug tracker and post the working script I have with the bool property with a script side default value for all those that do not have enable state parents.  I'm giving a chance for someone to step up and say "This is why we did it...." or "We tried what you've suggested but...."  Something that explains the reasoning why it was done, not just the fact that it was done.

Link to comment
Share on other sites

The keywords are injected records. No need for the USKP to be a parent.

 

As for the why, I did not work on that fix so I can't say I know.

Link to comment
Share on other sites

Explain injected record.  How can you inject a new record that is housed in a plugin and not require that plugin to use that keyword?

 

If I were to modify a creature that had an enable state parent and used the lvlpredatorscript, it would prevent the USKP from working on that creature.  To make it compatible, I have to include any keyword changes that the USKP did to that creature.  The quoted description for the fix indicates this.

 

  • The LvlPredatorScript has been corrected so that it will no longer fill the logs with errors about enable parents. The addition of two new USKP-specific keywords was required for this in addition to editing several world records for the placed creatures the script was intended to run for. In an 100% vanilla game, this completely eradicates these error messages and the predator/prey setups now work as they were intended to. Mods which edit these references will cancel out the fixes for them and we cannot correct for this.

If I were to create a new creature using lvlpredatorscript and one or more of them also needed enable state parents, I would have to do my own fix OR incorporate your fix which would again require parenting USKP for that keyword record.

 

Whereas using a bool property with script side default value would only require the use of the script (for non-USKP users) to incorporate the fix for both modified and new creatures using both the lvlpredatorscript and an enable state parent.

 

If I were to use a different keyword local to my plugin but the save already contained the USKP value of the variable there could be unforeseen side-effects.  There is always that possibility of saving in mid-process after all.  This isn't just about lvlpredatorscript (that is simply what prompted the question) but about all script based corrections.

 

I simply believe it is best to minimize what is added for the sake of compatibility and stability. Not only that but it would help to reduce file size but not needing additional records.

Link to comment
Share on other sites

Injected record = has a FormID that corresponds with a master. In this case, update.esm. A mod author can just copy the records into their mod and the FormID will still be that of update.esm - which as you know is always loaded so there's no issue with making it a master.

Link to comment
Share on other sites

If you want a detailed explanation about why the keywords were done you'll need to take that up with Sclerocephalus since he wrote it and can best explain why it was done.

 

I have to say - we don't particularly appreciate the combative tone you're taking here about this issue. That's not how things get done here.

Link to comment
Share on other sites

Combative tone?  I ask questions to understand what is going on.  I have things crop up in game and I ask about them to see if you are aware and I'm shafted with the bug tracker.  I start trying to use the bug tracker and can find no information on how to use it, I get told off again to use the bug tracker and not post things in the forums (seriously, make a sticky post that has instructions on how to use the bug tracker).  And when I do start using the bug tracker after someone has finally explained how to use it, there is hardly any indication that anyone has bothered to read them.  This isn't just limited to this forum.  The same has happened at BethSoft forums on the thread(s) there for the USKP.

 

It seems to me if there is any hint of a challenge or a questioning nature that is in any way potentially against the "USKP", that the poster is labeled as combative, defensive and other negative terms.  It is a shame really.  I've had my share of negative experiences at the Nexus but nothing like the near hostile atmosphere I've experienced both here and at BethSoft.  All I'm trying to do is understand what has been done and why it has been done and to share what I've found and/or developed to resolve various issues.  If I cannot do that without being a full blown blind supporter of the USKP (there are changes I don't agree with after all), I guess I have no recourse but to make and release my own Unofficial Skyrim Lite Patches (USLP), with or without support for USKP

 

Please don't think I'm just blowing smoke.  I have been building a plugin as I go along with various corrections to resolve script errors, which I feel are the number 1 priority as it is script problems which lead to instability in the game.

Link to comment
Share on other sites

You may want to reexamine how you're going about asking those questions and why you think you're getting blown off or why you believe you're being treated unfairly. As I'm seeing it, that's a reaction to the tone you set yourself with how you approached this. I find it somewhat ironic that you're comparing the BGS forum and this site to the troll pit that is Nexus and you actually think that Nexus is the peaceful environment.

 

Being "shafted" with the bug tracker, for example. People are suggesting that you file bug reports there because that's where they'll get looked at. When NightStar said bug reports get lost in the forums, that's because they do. The tracker negates this problem. Nobody is telling you NOT to post things in the forum, just that once there's something you feel is actionable it needs to go where we're going to find it readily.

 

Snapping at us to do this or that with various things doesn't net much in the way of a positive response either. Usually quite the opposite. You're responding in exactly the same way as other people before you who have approached us in a hostile manner about certain things, and you're erroneously coming to the same nonsensical conclusion that not getting the result you wanted from it is because you're somehow challenging the orthodoxy or something.

 

Nobody said you need to be a blind supporter of the USKP. We're just saying you need to be a bit less abrasive about bringing issues to us. That said, I find it highly amusing when people claim they disagree with bug fixes, but that's just me. Seriously, in my mind that always translates to "No, I want this to stay broken".

 

As far as the why of it, as I said, Sclerocephalus will need to explain the details. I'm quite certain that if you present a better method that he'll be all over it and so would the rest of us, but if you want those answers you need to have patience enough to get them from the people who have them.

 

I know we haven't said anything about it, but you (and anyone else seeing this) should be aware that while we are taking issue reports, we aren't planning to act on any of them until after New Years unless there's a critical issue that comes up (like the Labrynthian crash). The team needs a break, we all have other things we'd like to do besides fixing bugs all the time. It's probably still going to take another 2 years or so before most of the bugs are gone. There's plenty of time. No need to be in such a rush.

Link to comment
Share on other sites

Then prey tell what is the appropriate approach?  I feel that if I don't come crawling on my knees praising how awesome the USKP is that no one will take me seriously.  That, unfortunately, is the tone that I "hear" when I "read" the replies that I have received on various USKP related threads across several forums.  That is the one big problem of the internet.  Words can convey different meanings for different people.  What one takes as harmless another might find abusive. 

 

I feel like I'm in the following situation:  

I see two mostly round objects before me.  One is red, the other is orange.  I don't know what either one is but I do know that they are grown on trees. I try to ask why that one is orange instead of red like the other. Both do the same thing after all, make more trees. Not to mention that the red seems better, smoother than the orange.  I'm told it is orange because it is orange. No one knows about the red, it is strange. I'm also told that I should leave a message with the gardener.  I was not given a means to contact him other than to leave a note in a very large barrel filled with other notes all of which get shuffled around whenever no one is putting in a note and there is a long line of people putting notes in. I ask again, surely someone knows something.  The reply, "the orange one is orange because the gardener said he was doing the orange one".  I ask again, because surely someone must know why. But no, no one knows why.  I'm repeatedly told to leave a note for the gardener.

 

It is apples and oranges, two very different things.  But no one I talk to knows anything of apples and knows nothing more of oranges than that the gardener chose to plant them.

 

Do you not see how that would be frustrating? Even if I leave a note, it seems to be a waste of time.  The whole thing seems to be a waste of time.  But if I don't ask, I'll never learn.  

 

"The only dumb question is the question not asked."  I heard that a lot in school.  So I ask.  But I don't know the correct question to get the answer I truly need to know.  So I ask and ask again each time with different words to try and get the right question.  But I keep failing and with each attempt my frustration seeps through.

 

********************************

 

 

That said, I find it highly amusing when people claim they disagree with bug fixes, but that's just me. Seriously, in my mind that always translates to "No, I want this to stay broken".

It is not that I don't want "bugs" fixed.  I just don't agree with all of them.  I even disagree with patch 1.9's change of the Ebony Blade.  It was a Daedric artifact after all.  It very well could have been a 2 handed weapon using 1 handed perks (which it was). Now it is just another boring 2 handed weapon that is useless to a one hander. (I thought I had seen a mod that reverted it, but I could not find it in my last search attempt)

 

My big concern with the USKP was that it was being built before Bethesda was finished with the game.  It has always been my belief that unofficial fix packs of any kind should not be produced until after the game maker is finished with the game.  1.9 was the last patch so I was giving USKP a shot again.

 

I removed it for the following reasons and cannot revert because I did not know I was to keep the previous non 2.0 versions on hand:

I disagree with the soul trap spell as a projectile, but then I never used soul trap other than on a weapon.  But that does not mean I will never use it as a spell. (disagree more so because it has broken mods that rely on existing behavior... even one of my own, tho no one has reported a problem... which might mean no one is using it any more.) -- this is revert-able and would be nice if USKP offered a patch to revert the change for users that do not want it changed or instructions posted somewhere at least to do this ourselves.

I disagree with whatever change affected the bear in the opening Helgen cave.  USKP has it being at least twice as difficult to kill.  2 hits with bow & arrow on adept in stock. 4-5 hits with the same weapons and difficulty in USKP. -- this might need to go in the tracker as it may be a side effect, I have not looked at actors yet.

I disagree with moving actor chairs around in Alvor's house, but that is simply because I'm used to the arrangement.  I do admit the table clutter needs to be kept from flying off on to the floor. -- this is just me, I'd have to get used to it... and the table clutter still shakes about... bouncing cabbage, not my ideal dinner.

I disagree with the hopeful mistake of changing the guard outside Whiterun from not moving back to his spot. -- this I've seen on the tracker

I disagree with the rewritten scripts (change of events, added functions and such) whenever it is possible to do the same correction with minimal changes. -- these have to be asked about on a case by case basis as there very well could be specific reasons for such deviation that is not immediately apparent. i.e. lvlpredatorscript and the whole purpose of this thread

 

That is just what I have made a decision on from my experience using USKP and from mods that I use.  Does not mean that USKP is bad and does horrible things to anyone's game or computer.  I never said that.  I'm not that person who went on a rant about it crashing the game...  I can attest from a previous play through, however, that adding USKP mid game can cause a lot more problems than it solves, but any mod can do that.

 

Simply bug tracking this stuff doesn't feel right.  I'd rather post about and ask.  Find out what is going on before cluttering the tracker unnecessarily.  When told to just put it in the tracker, I feel brushed off like no one cares or worse no one knows anything and just goes along for the ride.

 

Why should I waste your time by putting it in the tracker, if it is something that can be resolved in a forum thread?  Is there a public document somewhere that lists who did what fix?  If so, where?  Not that I would PM them directly, but I could tailor my question(s) towards them (i.e name drop so that if they search the forums by their name it will pop up).  Surely, no matter how poorly developed my question(s) may be, the coder/author would have a better grasp of what I'm trying to ask.

 

***************************************

I will attempt my question(s) in as nice of a manner as I know how. Of course, I've already asked several times now and have been given other information with which to further improve (hopefully) the question(s). Should my nice still be abusive, please let me know as I will have no choice but to stop using this forum since I will at that point never be able to meet the required standard.

 

To the creator of the lvlpredatorscript solution of the USKP:

Could you please explain the purpose of the two added keywords?  

Why did you choose to use keywords rather than a simple bool property with a default variable for the majority of script users?

Is this the first mention of using a simple bool property with a default variable that you have heard of in regards to the lvlpredatorscript?

Were the use of keywords an attempt at confusing some mod authors, who don't know as much about the CK, to outright parent the USKP for their mods that affect some or all of the same records? <-- I strongly hope the answer is no, but please be honest

Is the confusion that some mod authors, like myself, are having simply a by-product of the end result of your chosen solution?

Would you be open to examining a solution that uses a simple bool property with a default variable for the majority of script users? <-- i.e. compare my apple to your orange

 

To anyone else:

Should I stop asking questions and just post any alternatives that I develop, either as a mod or in the bug tracker, even if it means that I will never know the reason why things were done and in all likelihood not learn something new that could improve my modding skills?

Link to comment
Share on other sites

Listen, I see what you're saying, but I don't know what it is you're expecting. You opened this thread merely yesterday and for all we know Sclero has gone on holiday or something.

Your imagery is also a bit of an extreme exaggeration for three main reasons:

1. You could just PM Sclero

2. Nobody has seen this working alternative

3. The difference here is nothing like apples and oranges

Link to comment
Share on other sites

Then prey tell what is the appropriate approach?  I feel that if I don't come crawling on my knees praising how awesome the USKP is that no one will take me seriously.  That, unfortunately, is the tone that I "hear" when I "read" the replies that I have received on various USKP related threads across several forums.  That is the one big problem of the internet.  Words can convey different meanings for different people.  What one takes as harmless another might find abusive.

I can't comment on how other people respond to you elsewhere, or even on the official BGS forum thread. I can only account for the exchange in front of me at this time.

Maybe you aren't realizing it, but your approach is probably more accurately described as condescending rather than hostile. Almost a sort of "you seriously didn't know how to do this, the hell is wrong with you" kind of thing. I don't really know how best to describe it.

Maybe a language barrier? Are you a non-English speaker generally? That's been known to cause some misunderstandings before. If this is the case, your English is good enough that I can't tell and I'm usually not half bad at spotting that.

This is a team project, and as such not every member of the team is going to be savvy in the details of every fix. Contrary to the ideals of science fiction starship captains who know every weld, every bolt, every piece of trim on their ships, I have to freely admit I do not have 100% intimate knowledge of every detail of every fix that has gone into the unofficial patches beyond enough of an understanding to test them to make sure they perform as expected. We all rely on each other as checks and balances and to refine each other's work as needed.

Sclero's fix for these predator scripts falls under the category of me not knowing the full details of exactly why things are done this way - only that it does in fact work as expected and resolves the bug in 100% of cases. A better implementation may exist. I have never discounted that. There are other script mods out there that propose to deal with this, but none of them address the core problem of the enable parent like our implementation does.

Another thing, I am the type of person who learns and absorbs information best by seeing it firsthand. Having it described to me in abstract ways rarely works as well as one might expect. I don't know exactly what you mean by setting up bools and defaults to do what you're suggesting. In my mind it's abstract enough I can't visualize it, therefore can't process it. You'd be surprised how many scripters are just like me. So since I think you asked somewhere if it would be best to simply show us your solution, the answer is yes - since it's likely I'll be the one to apply it.

It is not that I don't want "bugs" fixed.  I just don't agree with all of them.  I even disagree with patch 1.9's change of the Ebony Blade.  It was a Daedric artifact after all.  It very well could have been a 2 handed weapon using 1 handed perks (which it was). Now it is just another boring 2 handed weapon that is useless to a one hander. (I thought I had seen a mod that reverted it, but I could not find it in my last search attempt)


A valid point, but I still can't get around how that sounds. Fortunately in several cases with 1.9, Bethesda took that burden from us. What's odd is that some of what they did in 1.9 was stuff WE did prior to that. When we did it, people hated it. They do it, suddenly there's no problem. So hopefully you can also appreciate the fact that sometimes these kinds of complaints ring entirely hollow for us. I have to admit to being especially pleased when they clipped several exploits themselves that we had addressed prior to that, like the Oghma and the Riverwood Trader bug. Vindicated our position that we'd held all along about exploits being bugs.

My big concern with the USKP was that it was being built before Bethesda was finished with the game.  It has always been my belief that unofficial fix packs of any kind should not be produced until after the game maker is finished with the game.  1.9 was the last patch so I was giving USKP a shot again.


Unfortunately in the case of games like Oblivion, Fallout, and Skyrim, we don't have the luxury of knowing when the last patch is coming. Bethesda's track record on these is abysmal. So we had to make the decision at some point to act. Wait too long and you end up with New Vegas. A community utterly fractured and full of hostility over who owns what fixes to what problems. A situation that's STILL in play in that community to this day with at least 3 projects who all intensely hate each other. The users lose out. Plus all 3 projects include loads of garbage that are not even remotely bug fixes. Something that only happened due to the ridiculous rivalries.

By the time the CK came out it was pretty clear what the pressing matters of the day were. So we took care of those. Bethesda had already established a pattern of fixing engine related issues they knew the community could not tackle, along with data file issues they felt were high enough priority to push to the consoles too. I will admit it sometimes led to a couple of mad scrambles, and it made a HUGE mess during the transition from 1.5 to 1.6 and then to 1.7.

On balance we made the right decision. The community is not fractured into warring camps, and the vast majority of the things we fixed were not touched by Bethesda at all. Those that they did fix, we simply cut loose. The big winners here are the end users who now have a solid and reliable community patch to look to for addressing the game's remaining bugs and we've settled on a process for continued development that should produce those reliable results for years to come.

Now to get into your specific things:

I removed it for the following reasons and cannot revert because I did not know I was to keep the previous non 2.0 versions on hand:
I disagree with the soul trap spell as a projectile, but then I never used soul trap other than on a weapon.  But that does not mean I will never use it as a spell. (disagree more so because it has broken mods that rely on existing behavior... even one of my own, tho no one has reported a problem... which might mean no one is using it any more.)
-- this is revert-able and would be nice if
USKP
offered a patch to revert the change for users that do not want it changed or instructions posted somewhere at least to do this ourselves.


While we certainly sympathize with the side effects fixing things sometimes has on mods, Soul Trap not using its already designed and placed projectile function was indeed a bug. Fixing it has restored the visual functionality it was supposed to have all along, and all weapon based effects making use of it now behave properly for the first time. This is one of these things where we're inclined to just tell folks to deal with it because all we're concerned about here is fixing vanilla issues. Mods relying on bugged behavior are the responsibility of their authors to fix.

I disagree with whatever change affected the bear in the opening Helgen cave. 
USKP
has it being at least twice as difficult to kill.  2 hits with bow & arrow on adept in stock. 4-5 hits with the same weapons and difficulty in
USKP
.
-- this might need to go in the tracker as it may be a side effect, I have not looked at actors yet.


This was probably an unintended side effect of correcting the bear races. A tracker entry should be made for this so it's not forgotten. It probably got turned into a cave bear when it's not supposed to be.

I disagree with moving actor chairs around in Alvor's house, but that is simply because I'm used to the arrangement.  I do admit the table clutter needs to be kept from flying off on to the floor.
-- this is just me, I'd have to get used to it... and the table clutter still shakes about... bouncing cabbage, not my ideal dinner.


If DayDreamer hadn't done this (all kudos to him for setting this scene straight) then the scene would not have been entirely reliable. Though I myself never had an issue, it was in fact possible for some of the NPCs to attempt to seat themselves in the unaltered arrangement and fail in doing so, thus breaking the scene when they failed to take their seats.

I disagree with the hopeful mistake of changing the guard outside Whiterun from not moving back to his spot.
-- this I've seen on the tracker


I've not yet investigated this one. I intend to look into it. This really shouldn't be happening at all since all that was done was correcting the end point for his linked reference. You know how Skyrim does what it wants, right? This could be one of those things. Like when the stupid orcs began showing up out of nowhere to harass people.

I disagree with the rewritten scripts (change of events, added functions and such) whenever it is possible to do the same correction with minimal changes.
-- these have to be asked about on a case by case basis as there very well could be specific reasons for such deviation that is not immediately apparent. i.e. lvlpredatorscript and the whole purpose of this thread


You'd obviously need to be more specific here because so far the only one you've raised a significant issue over is the predator thing. I sure hope you aren't also trying to point fingers at the weapon rack scripts, because in THOSE cases a total overhaul was necessary. The vanilla ones for those were utterly hosed and it's a wonder they ever worked.

That is just what I have made a decision on from my experience using USKP and from mods that I use.  Does not mean that USKP is bad and does horrible things to anyone's game or computer.  I never said that.  I'm not that person who went on a rant about it crashing the game...  I can attest from a previous play through, however, that adding USKP mid game can cause a lot more problems than it solves, but any mod can do that.


On balance, I think the reasons you've listed are extremely weak. You've listed 5 things out of... I don't even know how many hundreds of others that we've fixed in the last 18 months. To toss out a patch mod of this magnitude over what are frankly pretty minor (and in a couple of cases, probably newly flushed out bugs to fix themselves) seems kind of dumb.

Also, of the few people who have ever answered my question about this, each always lists an entirely separate batch of things they didn't like and wanted us to remove. If we acted on every request people send us to "get this bullshit out of the patch" we'd have no patch. No, seriously, there are actually SOME people who thing 99% of what's in here is "microcrap nobody notices" and they'd rather we gutted everything.

Simply bug tracking this stuff doesn't feel right.  I'd rather post about and ask.  Find out what is going on before cluttering the tracker unnecessarily.  When told to just put it in the tracker, I feel brushed off like no one cares or worse no one knows anything and just goes along for the ride.
 
Why should I waste your time by putting it in the tracker, if it is something that can be resolved in a forum thread?  Is there a public document somewhere that lists who did what fix?  If so, where?  Not that I would PM them directly, but I could tailor my question(s) towards them (i.e name drop so that if they search the forums by their name it will pop up).  Surely, no matter how poorly developed my question(s) may be, the coder/author would have a better grasp of what I'm trying to ask.


There's nothing wrong with posting to ask first, but once it gets to the point of something requiring action, it absolutely needs to go into the tracker. That's why we have it. To track. Forums don't do that very well. In 2 weeks when this thread has died (and it will) it's quite possible neither of us will think about it again without being prompted by something. For us here on the site, that something will be when one of us is combing a category to compile fixes and goes "oh, yes, that thing Ishara wants us to look at". As I said, this is likely to be at least 6 weeks out before we are going to start combing again. That's a long time on the net.

It's not a waste to put stuff in the tracker. We'd rather someone misfiles a report there that gets closed as useless than never get one at all and have it turn out to be a catastrophic issue that's corrupting everyone's saves.
 
Were the use of keywords an attempt at confusing some mod authors, who don't know as much about the CK, to outright parent the
USKP
for their mods that affect some or all of the same records?
<-- I strongly hope the answer is no, but please be honest

Is the confusion that some mod authors, like myself, are having simply a by-product of the end result of your chosen solution?


I'll leave the rest for Sclero to respond to, but I figured these two points I can answer since I know the purpose behind this.

The use of keywords was not some grand conspiracy to force people to attach the USKP as a parent to their mods. That's kind of stretching credibility to even ask that, but hey.

Your confusion is likely because of the method by which I added the actual keywords to the patch. They're using injected records.

Normally a mod is created and all the form IDs in the file are assigned an index unique to that mod for any new material it adds. So for a typical Skyrim mod, you'd get Skyrim.esm at 00, Update.esm at 01, and the new mod's IDs all starting with 02.

Injecting a record means your mod (02) is changing the form ID assignment to look like it came from one of its masters. In this case, the USKP injects upward into 01 - Update.esm. As far as the game is now concerned, those two keywords belong to Update.esm. Once an injected record is created, the CK will process it just like any other. Though it's best to use Update.esm for this because injecting into Skyrim.esm causes the CK to spam numerous errors on startup.

In order to duplicate these records in another mod that needs the USKP's updated data, the two keyword entries can simply be copied. This will NOT cause the mod to become dependent on the USKP. The 4th mod will contain the same injections. You can see this in action with the UDGP, UHFP, and UDBP as they also contain these same injected keywords for the same purpose.

Each mod using this data is effectively communicating with every other mod using it as well. So this kind of thing does have uses beyond how we're doing it here. Another live example of this is the Spike.esm compatibility layer that's out there. It also uses injected records for the same purpose - to allow a variety of mods to speak to each other without having to become explicitly dependent on each other.

That might have been a bit long winded or disjointed, but it should explain the concept well enough. It should also pretty clearly demonstrate that we did not attempt to force ourselves on anyone.

Should be obvious as well that record injection can only be done with TES5Edit. The CK obviously has no means to change a form ID in a loaded mod.

To anyone else:
Should I stop asking questions and just post any alternatives that I develop, either as a mod or in the bug tracker, even if it means that I will never know the reason why things were done and in all likelihood not learn something new that could improve my modding skills?


No, definitely ask, just be aware that there may not be an answer, or that the answer may not be satisfactory to you. I get the impression you don't think we're all here to learn, but we are. We're all learning the same thing together. Discussion is vital to that, but bug reports for the project need to be in the tracker. please don't kill me for being a broken record
Link to comment
Share on other sites

I'd rather have long winded replies that go into detail such as your last than short quick replies that in my mind do not impart much information at all.  I too learn by doing. 

 

I'm not on the computer that has Skyrim and all my mod work.  Scratch that, well I'm still not on the computer with Skyrim, but I managed to sweet talk my way into getting a copy of the script on to a flash drive.  Modified lvlpredatorscript posted in spoiler & code tags at end.

 

I got the idea for using a bool property with a script side default value when I encountered bug #13852 and saw that Bethesda already had a bool property with a script side default in place.  They simply had not gone back and set the property value on those records that had enable state parents.  I copied that idea into lvlpredatorscript and it worked.  It worked better than steve40's version which would allow the spawn to take place and cause Hadvar to not enter Helgen (He would stop and fight the wolf.  His AI does not account for that).  It has the same end result as USKP, just different approach.

 

I too did not know about such option till what a week ago.  There never was an intent to come across as this was better and whoever did it the other way was stupid or something.  I simply wanted to know why the method used was chosen over other options.  I guess it was a faulty assumption that with this being the official USKP forum that there would be more people knowledgeable in the inner workings.

 

Scriptname LvlPredatorScript extends Actor
{used to disable linked multiples for certain types of predator}

import game


Faction Property SoloFaction1 Auto
{solo predator faction}

Faction Property SoloFaction2 Auto
{solo predator faction}

Faction Property SoloFaction3 Auto
{solo predator faction}

Keyword Property SoloKeyword Auto
{if I have a link of this keyword, I'm not the "solo" predator}

Bool Property HasParent = false Auto
;added by IsharaMeradin -- a property to set to true if the reference has an enable parent


; when I load, if I'm in one of the solo predator factions, and have a link, disable me
event OnCellLoad()
; debug.trace("I am a " + self.getRace())
If HasParent == false ;bool check added by IsharaMeradin
if CheckForDisable()
disable()
else
enable()
endif
EndIf

endEvent

bool function CheckForDisable()
bool bDisableMe = false
actor myselfActor = (self as ObjectReference) as Actor
if (SoloFaction1 && myselfActor.IsInFaction(SoloFaction1)) || (SoloFaction2 && myselfActor.IsInFaction(SoloFaction2)) || (SoloFaction3 && myselfActor.IsInFaction(SoloFaction3))
; debug.trace(self + "CheckForDisable() - in solo faction: " + solofaction1 + ", " + solofaction2 + ", " + solofaction3)
if SoloKeyword && GetLinkedRef(SoloKeyword)
; debug.trace(self + "CheckForDisable() - DISABLING MYSELF: I have link(" + GetLinkedRef(SoloKeyword) + " with keyword " + solokeyword)
bDisableMe = true
endif
endif

if (SoloKeyword && GetLinkedRef(SoloKeyword))
Actor myLinkSolo = getLinkedRef(SoloKeyword) as Actor
if(self.getRace() != myLinkSolo.getRace())
;I have a link of this keyword and that link is a different race than me
bDisableMe = true
endif
endif

return bDisableMe
endFunction

Those records that have an enable state parent would simply need the the HasParent bool changed from default value of false to true.

 

EDIT:  Forum cut off the post at the code block.. had to re-adjust it and lost all that I typed after....  oh well.

Link to comment
Share on other sites

As I said, Sclerocephalus would know best. I think he's out on holiday or something though. The specific reasoning for why he chose to use keywords would be best explained by him. If you need to get that explanation sooner rather than later, send him a PM. He doesn't bite :P

 

Personally, I like this particular approach better, though it still has the obvious issue that someone needs to make sure their edited references have this property or any changes we make to them won't stick if they need to move something for whatever reason.

 

It looks like a variant of this could also be used on the dragon mounds that were fixed using the same keyword set. They have the same silly enable parent problem.

 

It's too bad Bethesda didn't simply provide a script function like HasEnableParent() that could be checked.

Link to comment
Share on other sites

I disagree with moving actor chairs around in Alvor's house, but that is simply because I'm used to the arrangement.  I do admit the table clutter needs to be kept from flying off on to the floor. -- this is just me, I'd have to get used to it... and the table clutter still shakes about... bouncing cabbage, not my ideal dinner.

I can answer this one: Hadvar was ALWAYS assigned to the chair at the far end of the table from the door. But the radius was set very large (250 IIRC) which was as big as the whole table, and so usually he sat at the side of the table. But sometimes he sat in Alvor's chair instead. So Alvor remained standing and didn't give his lines. This always seemed to happen after talking to Sven before going into the house.

Debugging this discovered Hadvar was supposed to do a lot of "business", beginning by facing Dorthe, then going to the fire and warming his hands, then going to his chair. It was all setup in vanilla, but not working.

Once Hadvar was out of the way, I discovered that Alvor's assigned seat was misplaced and causing the table objects to rattle. That's why I moved the seat into its proper position and had to re-assign Alvor to the seat closest to his editor location -- because he wouldn't sit in the moved seat, presumably due to a navmesh issue.

 

It was very odd, during testing I tried assigning Alvor to the little table chair on the other side of the door, and the dining table objects still rattled and flipped over! The problem was the chair position. If there are still problems, it's the cockeyed positions of the orange CK placemats interacting with bounding boxes on the objects. I did think that cabbages had been fixed, tho.

 

Sometimes, fixing 1 bug leads to fixing another and another....

 

I got the idea for using a bool property with a script side default value when I encountered bug #13852 and saw that Bethesda already had a bool property with a script side default in place.  They simply had not gone back and set the property value on those records that had enable state parents.

 I copied that idea into lvlpredatorscript and it worked.  It worked better than steve40's version which would allow the spawn to take place and cause Hadvar to not enter Helgen (He would stop and fight the wolf.  His AI does not account for that).  It has the same end result as USKP, just different approach.

Your code looks OK to me! I like your more straightforward approach.

 

EDIT: But to make diffs line up better, and probably a trifle faster, I'd use a more OS-style:

    if HasParent
        return
    endif

    if CheckForDisable()
Link to comment
Share on other sites

I don't know what you mean by OS style. You will have to explain it.  

 

My background in programming is in BASIC (which I've forgotten) and WeiDU for Baldur's Gate and other Infinity Engine games.  And WeiDU isn't a language it is actually a program written in something else that allows the user to write human readable code in a TP2 file to make changes within game specific files without compromising changes made by other mods (unless the two changed the same entry). Basically, a whole lot of IF THEN statements (among other things), which might be why I was able to grasp Papyrus with it's IF blocks.

 

So I'm one of those that doesn't really understand the technical talk.  Which could very well be part of the reason that I might sound condescending or what have you at times.  Not using the right words can certainly do that.

 

*******************

When I used the USKP with the modified Hadvar/Alvor scene.  Hadvar would already be warming his hands.  Which seemed odd to me considering in the stock run he and I would both be standing at the door till given permission to do something (sit down).  I suppose it is possible that Hadvar has standing permission to enter and do whatever, but that isn't the case with my extended family. And if Hadvar already had such permission, why does he ask to stay on for a while?  Personally, the original seemed more appropriate.  Which may be why QA (If any) never bothered to do anything with it.  The QA person could have had similar disposition as I do.

 

As I said, it is something I would have to get used to.

Link to comment
Share on other sites

If there is no other reason, then it seems to me that the USKP purposefully used keywords so that other mods would have to require the USKP plugin to incorporate the corrections. Rather a lame and shameful way to increase usage and popularity, if you ask me.

 

 

and then...

 

Were the use of keywords an attempt at confusing some mod authors, who don't know as much about the CK, to outright parent the USKP for their mods that affect some or all of the same records? <-- I strongly hope the answer is no, but please be honest

 

Okay, this is the second time you've done this in this thread, and while others have addressed it they really haven't put it in strong enough language IMO, and maybe you're not getting it yet. So I will. You're very much out of order, knock it off now. There is no grand conspiracy to "trick" or otherwise coerce mod authors into parenting USKP for whatever nefarious motives you've dreamed up. The thought of it is so fucking bizarre - it's easily the stupidest thing I've read in a good while, not counting anything on reddit of course.

 

And, if it were true, how could you possibly think that posting a thread asking about this stuff would make any difference? If we really are the mustache-twirling villains you're making us out to be - hell-bent on... well whatever reward you get out of tricking people into adding your mod as a parent of their own (could you help me out with this btw I still don't get the motive...) - if that were the case do you really think we'd actually admit it?

 

So either you're wrong, in which case bringing it up just alienates everyone, or you're right and there is no point in trying to reason with us anyway. There just isn't a scenario in which making this kind of accusation advances your cause at all.

 

Anyway, you have your totally wrong opinions or suspicions or whatever and you're entitled to have them. But you must understand - and by that I mean you must understand, if you want to participate in society - that accusing people like that puts them on the defensive. It absolutely and immediately kills the prospect of collaborative work. It doesn't make people want to help you. Even if you're right (which, again, you really obviously aren't). Do you really not get that? Because if you don't, and if you don't I'm going to assume that you have some kind of mild illness, do please try to keep it in mind in the future, on an intellectual level at least if isn't just an intuitive thing for you.

 

I mean, it was hard to write this post, because on the one hand it's possible that social stuff doesn't come naturally to you for whatever reason, and I don't want to be cruel. But on the other hand, you need to hear this stuff. It's for your own good.

Link to comment
Share on other sites

The post is meant to be confrontational, but not adversarial. I hope I pulled it off. I don't think IsharaMeradin is a bad person, but that insinuation is really out of line, especially when you're supposed to be asking for help.

Link to comment
Share on other sites

Just had a bit of a brain burst about this.

 

First, after having thought about it, the bool approach won't quite work. The enable states on the objects have some which are flagged as opposite of parent and Shroob and I both concluded that it would be insufficient to handle the cases properly, which is no doubt the same line of thought Sclerocephalus was using. Which is why we ended up using injected keywords for it.

 

Well. Why the hell did we do that when there are perfectly good existing keyword definitions for this purpose? ie: LinkCustom01 through LinkCustom10. This set of keywords is specifically intended to be used by linked ref calls. So ti would be perfect. Preserves the full functionality of the fix, doesn't require injected records, everyone ought to be happy.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...