stevie70 Posted July 17, 2011 Share Posted July 17, 2011 (edited) i have a clothing mod (mojave express courier cap, check it out :-)) that comes in three color versions (and a pack containing all three). the clothing items are added to a repair list (hats in this case), the pack adding all three and the others one version each, but every item with an explicit name (not the same item name for all versions). apparently, items added to the vanilla list get the lowest index numbers (0,1,2...) in the list and the index number can't be manually set to a fixed value (so in the standalone versions with only one item, it's always 0).so i wonder what happens to the form list, if somebody installs all three standalone-versions (or any other mod changing the same list), do they all add up to the list because they all have different names, or do they overwrite each other because they all have index-no 0 ? Edited July 17, 2011 by stevie70 Link to comment Share on other sites More sharing options...
nivea Posted July 17, 2011 Share Posted July 17, 2011 They will most likely overwrite each other if the person just uses the .esps, now if someone creates a merged patch or a bash patch then they will most likely work just fine together. Link to comment Share on other sites More sharing options...
Gribbleshnibit8 Posted July 17, 2011 Share Posted July 17, 2011 They will overwrite, and the repair list will only contain the last file in the esp. As mentioned, a merged or bashed patch will in all likelihood catch the issue and solve it for the user. To get around it yourself, you can add the hats to the lists via a quest script that runs once. scn AddHatsToRepairListSCRIPT BEGIN GameMode AddFormToFormList CourierHatRepairList CourierHat01 stopQuest FixRepairListsQuest END Where obviously you replace the list name and hat name with your objects. Each of the plugins would have a quest that starts game enabled, default quest delay, and runs this script. The quest should either be named what I put in the "stopQuest" line, or change that line to the ID of your quest. If you do it this way, make sure you change the script to a Quest script before saving it. Link to comment Share on other sites More sharing options...
stevie70 Posted July 17, 2011 Author Share Posted July 17, 2011 They will overwrite, and the repair list will only contain the last file in the esp. As mentioned, a merged or bashed patch will in all likelihood catch the issue and solve it for the user. To get around it yourself, you can add the hats to the lists via a quest script that runs once. scn AddHatsToRepairListSCRIPT BEGIN GameMode AddFormToFormList CourierHatRepairList CourierHat01 stopQuest FixRepairListsQuest END Where obviously you replace the list name and hat name with your objects. Each of the plugins would have a quest that starts game enabled, default quest delay, and runs this script. The quest should either be named what I put in the "stopQuest" line, or change that line to the ID of your quest. If you do it this way, make sure you change the script to a Quest script before saving it.aaah, coool... :-)) - thanks, i'll do that. Link to comment Share on other sites More sharing options...
stevie70 Posted July 17, 2011 Author Share Posted July 17, 2011 They will most likely overwrite each other if the person just uses the .esps, now if someone creates a merged patch or a bash patch then they will most likely work just fine together.hmmmm....since i'm currently on kind of a quest to gain a more or less complete understanding of mod interaction anyway (any specific tutorials about this...?) - and no, i didn't get very far yet :-) - i'd like to add up with some quite similar follow-up-q's...: say i take a vanilla scripted item's script (like, whatever, the vigor-o-matic) and have one mod just add a variable to it, like "int mod1".and then, i have a second mod add a variable like "int mod2" to the same script.what happens, does the item now have the mod1 AND mod2 variable on it or just the one i load last? or another one, if i, like Gribbleshnibit8 suggested, have a quest named say AddRepairList for every one of my three version mods, can they all have the same quest name or will they overwrite eachother if i don't give them explicit names...? and so on and so on... dunno, somehow this whole matter just won't reveal to me... like i said, i'd be really happy if anybody knows about some readings or tutorials about this Link to comment Share on other sites More sharing options...
nivea Posted July 17, 2011 Share Posted July 17, 2011 Quests and scripts are very different then form lists and repair lists and level lists, I think if the quests all have the same names and not unique IDs it will overwrite each other. I also think that scripts are harder to judge, I suppose its possible to use the bash patch import scripts command... but I doubt it. Link to comment Share on other sites More sharing options...
Gribbleshnibit8 Posted July 18, 2011 Share Posted July 18, 2011 hmmmm....since i'm currently on kind of a quest to gain a more or less complete understanding of mod interaction anyway (any specific tutorials about this...?) - and no, i didn't get very far yet :-) - i'd like to add up with some quite similar follow-up-q's...:Best thing I can say for this is just look at different mods in FNVEdit, that's how I did it. That and read the GECK Wiki. say i take a vanilla scripted item's script (like, whatever, the vigor-o-matic) and have one mod just add a variable to it, like "int mod1".and then, i have a second mod add a variable like "int mod2" to the same script.what happens, does the item now have the mod1 AND mod2 variable on it or just the one i load last?This is where load order comes into play. The mod that edits the script and loads lowest in the order wins. Every time. No exceptions. You don't get multiple variables, you don't get to merge them. The reason is that scripts have to be compiled (converted into language the computer can read). In this case they're converted to Hex I believe. If you open up a mod in FNVEdit and look at a script that has been edited from base game, you'll see a line that says "Compiled Size", it'll be different between the two. That's because the mod is adding or removing from the script, and the game engine had to account for those changes by recompiling. Compiling the scripts isn't something that can happen at run time. It generally requires lots of resources and takes quite a while. The scripts used in mods are tiny, usually, and therefore you don't see this impact when saving them, but trust me, compiling is heavy work. or another one, if i, like Gribbleshnibit8 suggested, have a quest named say AddRepairList for every one of my three version mods, can they all have the same quest name or will they overwrite eachother if i don't give them explicit names...?Quests are weird beasts all their own (though any form will do this). If you have two mods, with two items that have the same name. Loading in GECK, one will get "DUPLICATE0000" Appended to the end of the name. You should get a warning about it, except the error stuff in GECK doesn't work right. As far as what happens in game. Nothing, the scripts, while using the name to you, are actually using the formID of the item, which is ALWAYS different for every mod. It can't not be (load order again). In FoMM, those numbers and letters beside the mod names are actually a Hex number. The value given that mod by the game engine for referencing its items in game, scripts, etc. That's one reason you're limited to 255/6 mods, that's the size of one byte of data, which is all that's given by the engine to allocation of plugin files. (I'm glossing over details here, but this is the gist of it). and so on and so on... dunno, somehow this whole matter just won't reveal to me... like i said, i'd be really happy if anybody knows about some readings or tutorials about thisAll you have to do is ask. There are plenty of people here on the forums who are willing to help you learn. It really isn't that hard, just takes some practice. Quests and scripts are very different then form lists and repair lists and level lists, I think if the quests all have the same names and not unique IDs it will overwrite each other. I also think that scripts are harder to judge, I suppose its possible to use the bash patch import scripts command... but I doubt it.As said above, unless the quests are copied from one plugin to the next as overrides, with the highest one being master to the others, there will be no issue, even if the quests and scripts all have the same name. Link to comment Share on other sites More sharing options...
drakeelvin Posted July 18, 2011 Share Posted July 18, 2011 say i take a vanilla scripted item's script (like, whatever, the vigor-o-matic) and have one mod just add a variable to it, like "int mod1".and then, i have a second mod add a variable like "int mod2" to the same script.what happens, does the item now have the mod1 AND mod2 variable on it or just the one i load last? What Nivea said in a nutshell is true: the last one to get loaded clobbers the first one, BOOM fail. What could happen when the game runs is either CTD or unpredictable behavior. If you do this during an "upgrade" where there is a savegame in progress using the old script, you can change an existing script but the state of its variables will be whatever they are in that savegame. They don't get reinitialized unless your new script does that explicitly. More to the point is your overall design. You are describing two overlapping mods that want to use the same standard game script. It would be better for each mod to have its own "canary" script to simply monitor the game script variables, quests status, etc., and then update those through the game mechanism. Each canary script can keep its own variable(s) and by naming your scripts uniquely you'll never have to worry about conflicts or load order. It's a different way to think about design, especially when you have future expansion conflicts to consider. IIRC I did something very similar to this with a download called "I Could Make You Care" which is bundled under "Drakes Random Mods" ... it forces Veronica's personal quest to run but does not make any changes to her existing scripts or quests. My script simply updates certain quest and status variables to meet the requirements for starting her quest, then her scripts as-is, unmodified, take care of the rest. All my prefixes for Object ID's in there start with "DXE" if you want to look at how I did that. Last but not least, checkout the section entitled "Records and Overrides" at the officail site here-- this is a concise and helpful illustration for what you were asking about. Link to comment Share on other sites More sharing options...
stevie70 Posted July 18, 2011 Author Share Posted July 18, 2011 thanks to everyone - okaaaaaay, guess i'm getting it. i was actually aware that items with the same name would overwrite, just wasn't sure if, on like form list, scripts etc, the _whole_ item would be overwritten or just the new entry added & identic entries overwritten. but anyway, i don't like very much what i've learned, cause basically, i'm looking for a way (or ways to) enable mods to detect eachothers presence and at least whatever way to pass a simple single integer between two mods WITHOUT having to use common masters and/or nvse - reasons and approaches further below, but first thing's first...: More to the point is your overall design. You are describing two overlapping mods that want to use the same standard game script. It would be better for each mod to have its own "canary" script to simply monitor the game script variables, quests status, etc., and then update those through the game mechanism. Each canary script can keep its own variable(s) and by naming your scripts uniquely you'll never have to worry about conflicts or load order.It's a different way to think about design, especially when you have future expansion conflicts to consider.oh yes, i have... :-) (not for the caps-mod though) - and i painstakingly pay attentions to those things anyway, i have my own very explicit naming convention, i twice- and triple-check everything in fnvedit so there's no unwanted overwrites and so on, just for the form lists (quite new to using those) i didn't know how to avoid it until Gribbleshnibit8 hinted me to AddFormToFormList, wasn't aware i could do that. :-)uhm, and what exactly does "canary" mean (no native), something like "unique" as i assume from context...? IIRC I did something very similar to this with a download called "I Could Make You Care" which is bundled under "Drakes Random Mods" thanks, gonna check it out (i know how to script-start a quest though, but still curious about your "random mods" :-) Last but not least, checkout the section entitled "Records and Overrides" at the officail site here-- this is a concise and helpful illustration for what you were asking about.thanks again, quite useful - no idea how i could ever have missed that one, i've got the geck-wiki open so much i'm only half a step away from attaching a fixed display with it on the inside of my glasses... :-) (yeeeah, i'm afraid i got hooked pretty bad on that modding stuff - and pretty quick :-) but trust me, compiling is heavy work.i'm aware of that, got some coder friends... :-) All you have to do is ask. There are plenty of people here on the forums who are willing to help you learn. It really isn't that hard, just takes some practice.hehe, beware, you don't have the slightest idea HOW MANY questions i have... ;-))but this is in fact true. i asked and ask a lot anyway (and as well try to answer whatever q's i can), whenever the geck-wiki doesn't get me anywhere anymore, that is, and pretty most of it gets answered (except one of my first q's ever, which i still couldn't solve despite my additional experience meanwhile, which is how the HELL i can actually scale a fire... :-), and honestly, without any of both the wiki and the forums, i wouldn't have modded s***, would've given up right at the start before even flinishing a single room... :-) back 2 tec:like i said, i need a way to at least pass an integer between two mods without esm or nvse. don't want to use common masters, because for some of the affected mods, they'd be bigger than the mods themselves and for some other reasons.don't want to use nvse 'cause i don't want any additional requirements if not 100% necessary (and 'cause i'd yet have to learn it :-) what i want to do is make ALL of my mods more or less slightly interact (i'm talking 5 mods to definitely be released and about 12-15 on the maybe-list (that's what i've actually started already, ideas for about 50 more) in very many more or less little ways. what i'm having in mind there goes from stuff like e.g. in "vegas baby"-final, there'll be the character Mole that "owned" the "mole's well"-mod-place, and if you have the pet that comes with the well with you (different mod than the char!), i want him to comment on it. or i'll have the Fortunate-Fozzy-character (separate copies 2 b enabled as needed) appear in about half of above mods and need to know what quests are already done - and so on, i think you get what i want. so anyway, i've figured out everything about how to do all that, if i can just get ONE integer across between two mods. and that's the crucial part. as for the approaches...: #) in another thread, someone described a way he did exactly this, that included a perk, but unfortunately i can neither remember how it went nor find the thread nor figure it out myself (yet). #) i was very excited when i learned about the IsDLCInstalled function, but i no way could get this to work. somebody (forgot, sorry) here on the forum said he'd try too, but never posted again, so i assume he/she didn't succeed either. #) i thought about like every mod disabling (or something similar) a certain unimportant vanilla item and having the others ask the disabled state or something like that, but somehow, i very much dislike this concept for it's uglyness. in addition, this would only get me a 0 or a 1 instead of a whole integer range, that's not much. #) i've as well thought about some ways involving script variables, form lists etc, but most of them just dissolved like a fart in deep space with all the overwriting-stuff spoken about above. hmm...how's that one:i have, say, mod1 and mod2 (and 3,4,5...).i take any vanilla scripted item and have _every_ mod add likeint mod1int mod2 ...EVERY mod adding the same lines for ANY mod on my "interact-list" to the very same scriptso when they load, they'll always overwrite the same script, but no matter which one "wins" in the end, the item should now have _all_ of my variables on it (because all of them are in _every_ mod's script version), so as long as the item is vanilla and persistant, _any_ of those mods should now have access to those variables, because everyone of them "thinks" they put it there themselves - so i could like have mod 2 set the mod2-variable to whatever, even if it's been put there by mod3, because mod2 added the _same_ variable to the _same_ script before and thinks it's its own - shouldn't that work (in doubtful case i in any way could make clear what i'm talking about)... :-) Link to comment Share on other sites More sharing options...
Gribbleshnibit8 Posted July 18, 2011 Share Posted July 18, 2011 back 2 tec:like i said, i need a way to at least pass an integer between two mods without esm or nvse.As far as I know, there is no way to do this without using a master, as otherwise the formID of the object, script, quest, etc you try to reference doesn't exist. You could approximate it with NVSE, but then you've got NVSE involved, which you didn't want to do.if GetModLoaded "YourModNameHere.esp" ;this returns 1 (true) if the mod existsThe issue here is, that once you do this, you need to go a bit further with some other NVSE functions. They aren't hard to use, they just require a bit of research and knowledge. The functions are BuildRef and...now I forgot the other. Take a look at Selective Fire by Pelinor, one of his scripts uses them as a good example of how to do it. how's that one:i have, say, mod1 and mod2 (and 3,4,5...).i take any vanilla scripted item and have _every_ mod add likeint mod1int mod2 ...EVERY mod adding the same lines for ANY mod on my "interact-list" to the very same scriptso when they load, they'll always overwrite the same script, but no matter which one "wins" in the end, the item should now have _all_ of my variables on it (because all of them are in _every_ mod's script version), so as long as the item is vanilla and persistant, _any_ of those mods should now have access to those variables, because everyone of them "thinks" they put it there themselves - so i could like have mod 2 set the mod2-variable to whatever, even if it's been put there by mod3, because mod2 added the _same_ variable to the _same_ script before and thinks it's its own - shouldn't that work (in doubtful case i in any way could make clear what i'm talking about)... :-)Will not work. As I said above, any edit to a script will change it. If you add the 'same' script, it will still be different, because each mod is adding its version, which has a different formID, variable access, etc. I really can't explain it any other way, except to say it doesn't work. Link to comment Share on other sites More sharing options...
Recommended Posts