Jump to content

payl0ad

Premium Member
  • Posts

    330
  • Joined

  • Last visited

Everything posted by payl0ad

  1. This is a known issue with how workshop mode handles precombined meshes. You shouldn't run with bUseCombinedObjects=0.
  2. Well, ... provided that: both FO3 and FNV porting projects finish implementing everythingboth give full permission to use their assets for the abstraction layersSomeone can actually Frankenstein that s#*! together in a way that doesn't warp the space time continuum beyond repairYou don't hit some technical limit that can't be worked around mid-developmentThis does not sound impossible at first glance. Just very ambitious, hard to do and speculative, as the porting projects are likely to not finish before 2019-2020.
  3. > I do think your on the right track with baking the materials you want directly into the nif's your using also I'll pack them up as modders resources when the collection becomes bigger. This will come in handy. > I have to break them up to re-apply the materials because the SCOL always defaults to what is baked into the nif from what I can tell. The underlying process seems to be the same. You can also see this when breaking up the CoastHouses added by Far Harbor. Thankfully most furniture doesn't use MSWPs as far as I can tell.
  4. If you don't create textures for the existing meshes from scratch it's advisable to use either the HD texture pack or the vanilla textures as a starting point, modify them and see if it runs well. I'm not involved in apparel making, but generally, 1K textures are performance neutral on all systems that meet minimum specs. If your rig meets recommended specs, you can go 2K or higher all the way. Apparel is typically fine with 2K textures or lower. You really don't see much difference to 4K textures because the meshes are rather small. 4K makes the biggest difference for landscape textures, those meshes are far bigger and "stretch" their diffuse map more. Texture sizes don't really have a big FPS impact if the system has sufficient RAM on the video card. They will make load times longer obviously. I can't measure a relevant FPS difference between 2K/1K mixed and 4K/2K mixed. My video card has 4 GB RAM.
  5. Yes, you could do it this way - but landscaping typically uses lots of similar objects that stick into one another a lot of the time. Landscape objects are also pretty big, so they occlude a lot - which in sum means I will want to generate optimizations using as many statics as I can. At least theoretically. In my case I think it's better to bake the desired material into the nif so I can combine those meshes and have the correct material. I use those statics for coast lines, of which I have quite many. The few MBytes this will add to the mod size will be worth that effort I hope. You'll see eventually. Still I'd like some feedback on my approach; do SCOLs actually conserve performance by reducing objects to draw? Is it smarter to precombine right in the middle of development (e.g. when landscaping is finished) or save all that for later and exclude material swapped objects from precombination manually?
  6. While pondering how to optimize a worldspace I'm building I wondered if there is some general consensus on when to precombine. Or, you know, some general workflow I should try to stick to. Currently, as the worldspace won't have lots of architecture but quite some landscape pieces. My plan is to build the entire landscape (rocks, trees, plants), precombine and then proceed with architecture. To conserve objects, I'll try to only use SCOLs (which should result in less draw calls, as the engine has to render only a single NIF). Is this sound? What I've found out experimenting is that you can not use Material Swaps in any way on statics that get precombined. I used some RockCliffs for a coast line, copied the original STAT, applied the "RockCliff_Wet_DLC03" (or similar) MSWP to the STAT record. Then ran precombine. The resulting combined mesh would always use the material file referenced in the NIF file, never the one in the STAT record or the one applied to the placed Ref. I started working around that by creating new NIFs with the "wet" material baked in, so those cliffs precombine nicely. It works but feels extremely clunky. Am I correct with this or did I do something wrong? Is there a better way to get precombines with specific materials? //edit: Just saw that chucksteel did find this exact issue on the previous page. Cheers, dude. :) So, second question is already answered, first one still stands. //edit 2: The precombined NIFs retain all BSLightingShader nodes of their source meshes, so in theory I could also precombine, then swap out the materials in the precombined NIF - but that's more work intensive in the long run I guess.
  7. I can confirm that you don't need to care about saves, rest or fast travel stopping your timers when you just StartTimer() somewhere and put that same StartTimer() statement at the end of its corresponding event logic. PIRAD has no internal logic to reset its timers for that hypothetical case and it runs just fine across all of these cases. Timers start once OnInit() of a quest script and just keep re-StartTimer()ing when their event fires. Might be "unclean" or sloppy style, I don't know. But it works just fine in general.
  8. When building the first scripts for PIRAD, I used *a lot* of debug messages, just to see quickly if all code paths respond. Used a mod-free savegame from the V111 exit, loading only UFO4P and a console enabler mod in addition to the ESP to test. My scripts are fairly simple though, more complex stuff might like some actual testing with Lilac.
  9. Well, that's something. Thanks for the input! I guess I'll have to learn Blender. :(
  10. Yes. I actually tried running FO4LODGen a few times, but as I don't have other resources (LOD nifs) I could only try using the vanilla resources. It works, provides a tiny bit more detailed LOD. Emphasis on TINY. :( I also found out that I should be able to replace the LOD diffuse textures with a double-resolution version, if I can find a way to sharpen the images to a degree where you actually see more detail. Doesn't really help me in what I want to do but it's nice to know.
  11. What kevkiev says is correct, ba2 files load in the order of precedence that their corresponding ESP files, resulting in something you could call al "final fileset" that the game uses. The phenomenon described was probably a loose file that got overlooked. Those always turn up in the final fileset; this is probably how stuff worked in development of FO4 - everything in loose files. Literally millions of files. There are some mods or files that don't like compression. I also am a notorious archiver because I know for a fact it's free FPS. Some textures from Armorsmith Extended don't compress using DDS optimization though. Probably something about the dds that the archiver doesn't understand. I haven't tried if they work using General compression but it could very well be. Sound files can not be compressed at all, they'll simply not play if compressed. Use "None" compression for them when archiving.
  12. Remember this is UFO4P relevant stuff as it's a bug in the base content that's masked by optimization.
  13. Hello everybody, I've been obsessed with FO4's ugly LOD visuals ever since running with uGrids set to 7, which is a start but still pretty stupid. On top of that, most vegetation mods don't even include LOD, so you always have those damn ugly trees in the far distance no matter what you do. I've used DyndoLOD for Skyrim and it's a day-and-night difference. I expect FO4 will not have this, but we should be able to get close. Luckily, this is a BGS game, so this should be fixable. I already found out that FO4 only knows statics when talking about LOD, so no tree billboard fumbling like in Skyrim. I decompressed the relevant parts of the archive files and browsed through a few static records. Some of them have LOD, some don't. Great. I can see the low-detail meshes in NifSkope and could change their textures using GIMP. I'd like to try and rebuild LOD data for Commonwealth Conifers REDUX. However, I can see that the mod does not include LOD nifs. If I understood correctly, I need those LOD nifs to regenerate LOD in the CK or FO4LODGen (to ultimately see them in game) - is this correct or can I just replace the vanilla LOD nifs using override meshes and they'd show up in the game? Second question: If I don't have the nifs for the LOD levels, how would I go about creating them? Do I need to edit the mesh in Blender or is there an automated way of generating the low-detail mesh? Can NifSkope do this by any chance ? I don't mind manual labor, I'd just like to avoid having to touch the actual triangles by means of Blender because I'd have to learn yet another tool and I'm kinda lazy. Finally, if there's any good resources on this matter, I'd appreciate any link you can give me. Thanks for reading!
  14. I can contribute a little experience here. Aside from the material swap resets that chucksteel has found (which, ironically, I could find out about myself without knowing someone else had done that work already - yay.) I also have that issue with a thing I'm working on; a plugin that regenerates previs and precombs for a lot of interiors (ELFX) but including assets (light static nifs) from a foreign mod. You can flag the plugins as ESMs in xEdit, rename them, then create a plugin using the CK and use the renamed files as masters. You can change all that back when your plugin is finished. Has worked perfectly fine for me. In fact, I haven't found another way to do this and still have a working ESP file.
  15. Sorry for not reading 90 pages but I just want to say that if you still haven't decided for a weapon framework to integrate, I want to vote for AmmoTweaks. I've found it to be the best emulation of FNVs weapon handling, which arguably was the pinnacle of Fallout weapon gameplay excluding actually shooting. It also provides all calibers you might want for the guns you've stated are going to be part of WARS. I think. I'm no gun expert. It feels right though. :smile: Other than that, wow. Dis gon' be gud. //edit: Having read a few pages more, it seems you're also going to rebalance a lot of values. Do you intend to be compatible to popular overhauls such as Horizon or FROST?
  16. Now that you mention it, I never tried it outside Vault 111.
  17. @kitkat81: Indeed, this partially works. I can EquipItem() the item and it gets added to the inventory, but it still does not equip. If I do UnequipAll(), the player drops everything including the Pipboy. Sadly, the other way, UnequipItemSlot(int) does not do anything for me, neither in script nor in the ingame console. @Contrathetix: You are right, I do still receive the event even when I don't register for it, probably because of the reasons outlined by you. I do bash and batch scripting at work so Papyrus isn't exactly hard to grasp for me. I know my code looks correct, I just don't have a single clue why it doesn't work. Most of what I tried was wild guessing at what doesn't work right except that dreaded one line. Thanks for your input in any case though! :-)
  18. The Event thing is fine, really. Event registers and fires exactly when I want it to, does exactly what I want. Armor has only 3 Keywords: DogMeatNoVisualsOnRetrieve, AnimHelmetCoversMouth, ArmorBodyPartHead - the block list has only AWKCR keywords, so the armor won't trigger the effect. I tried using Utility.Wait(0.5) between adding and equipping the armor. Doesn't change a thing. It's still the very same line, EquipItem(pGhoulskinArmor, true, true) does not run, like, at all. It's not a type problem either I feel. I tried changing the Armor Property to a Form Property which doesn't change a thing (as expected). What bugs me most though is that the OnEffectFinish part works as expected. I can unequip things just fine, only equipping them fails in this case. In the mod I'm working on (which this effect is a part of), I actually have several scripts that equip stuff. Works fine, no problem, as long as I'm equipping potions. Let me describe how I'm testing this. My mod starts up when the player wakes up from Cryosleep in V111. I have a savegame right there. I tcl to the vault door to pick up the Pipboy, then give myself a Bowler Hat by console. I then equip a potion by console that adds some magic effects to the player (should work like a disease in HC mode), one of them is this script. The effect should force the player to equip the Ghoulskin armor, which unequips all headgear slots except 47 (Glasses), in a way that the player can't remove the Ghoulskin armor. The Event is only there to catch stuff that can be equipped regardless of the slot being blocked, for example the Bowler Hat (slot 30/46). The Ghoulskin armor blocks slots 30/46 (which is the slot most hats use) and when it can't be unequipped (done by using the console command instead of the script) the player can still wear the Bowler Hat on top of it. The OnItemEquip event fixes this, it's actually part of the solution and not the problem. //edit: I think I should retain the Player as a property because of the way OnEffectFinish works. From the Wiki, if you don't store refs as Properties, those might already be gone when OnEffectFinish fires. //edit2: This variant also fails: pPlayer.EquipItem(pGhoulskinArmor, abPreventRemoval = true, abSilent = true)
  19. I made sure the armor has no Keywords on the block list. It doesn't get unequipped by it, there's a warning message that would display if it did (which does not appear). I can try adding that delay, might just work. Read another thread from a Skyrim modder that had a similar problem, was solved by moving operations from OnInit to OnLoad... which did not work for me. :-D Event registration is in OnInit by habit. The event fires fine though, should I rather do that in OnEffectStart?
  20. Hey Nexus. I'm starting to lose my sanity over this. Help me hive mind, you're my only hope. I have a script attached to a MGEF that gets applied by a potion. It should force-equip the player with some piece of invisible armor that blocks some item slots.The script also listens for equip events to unequip stuff that slips through the cracks (it seems the game isn't horribly consistent when evaluating used item slots). When the MGEF finishes it should unequip that armor. The code I have so far: Scriptname GhoulskinScriptEffect extends ActiveMagicEffect ; equip a non-removable armor that occupies item slots 31,32,46,48,49,50 Armor Property pGhoulskinArmor Auto Actor Property pPlayer Auto FormList Property pClothingKeywordsToBlock Auto Message[] Property pGhoulskinMessages Auto Event OnInit() Debug.MessageBox("OnInit") RegisterForRemoteEvent(pPlayer, "OnItemEquipped") EndEvent Event OnEffectStart(Actor akTarget, Actor akCaster) Debug.MessageBox("OnEffectStart") HandleGhoulSkin(true) EndEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) Debug.MessageBox("OnEffectFinish") HandleGhoulSkin(false) UnregisterForRemoteEvent(pPlayer, "OnItemEquipped") EndEvent Function HandleGhoulSkin(bool abStart) if abStart Debug.MessageBox("HandleGhoulSkin(true)") pPlayer.AddItem(pGhoulskinArmor, 1, true) pPlayer.EquipItem(pGhoulskinArmor, true, true) ; culprit pGhoulskinMessages[0].Show() else Debug.MessageBox("HandleGhoulSkin(false)") pPlayer.UnequipItem(pGhoulskinArmor, false, true) pPlayer.RemoveItem(pGhoulskinArmor, 1, true) pGhoulskinMessages[1].Show() endIf EndFunction Event OnItemEquipped(Form akBaseObject, ObjectReference akReference) if akBaseObject.HasKeywordInFormList(pClothingKeywordsToBlock) pPlayer.UnequipItem(akBaseobject, false, true) pGhoulskinMessages[2].Show() endIf EndEvent As you see, I've already added debug messages to step through the code, so I know all code paths are used. Basically, everything except the one line marked "culprit" works. The armor gets added to the player inventory when the effect starts, but the game doesn't want to equip it. I can then equip it in the Pipboy and it unequips all other stuff, so the armor seems to work as intended. I also tried to do the very same thing using the ingame console. When I do player.additem <ArmorID> player.equipitem <ArmorID> 1 in game that actually works, it also keeps the player from unequipping the armor as you'd expect. I noticed the difference in syntax of both functions (player.equipitem vs. PlayerRef.EquipItem()) and also their difference in parameters: player.equipitem seems to want a weapon slot ID as third argument (mentioned in an error message). So that test might be bogus, I can't tell. Just for shits and giggles, I tried changing the offending line to this: pPlayer.EquipItem(pGhoulskinArmor, 1) which sadly does exactly the same as all other variants I've tried. When I search the Nexus boards, everybody seems to do it the same way: EquipItem(someForm, bool, bool). Everything compiles just fine obviously. BTW, I started trying this by using Actor.UnequipItemSlot() but that doesn't work except for item slot 30, which is the Pipboy (for some reason UnequipItemSlot does not seem to use the regular human biped slots). Anybody got an idea what the hell is going on here?
  21. > I just don`t completelly understand what exactly makes your value to go below zero. I mean what affects this value and makes it go down. This effect does that: http://imgur.com/TtGGe77 http://imgur.com/LkicrOI My current way of applying diseases is working. That's not the problem. It just needs this value to change by eating irradiated food. But I guess I'll just roll my own for that... ModValue() does work correctly after all.
  22. Thanks for the idea, that will be more consistent with other things I'm doing or trying to do with the mod. Well I do know that my Value Modifier effect gets applied as I have a debug event for that. Calling the magic effect from an item (like from the RadAway item) seems to work better for me, whyever that may be. Hope this works, because from what I can tell it shouldn't. The effect gets applied after all. The custom value is needed to store information about how much radioactive particles the player has ingested. I want to track that to calculate a chance to fire custom radiation poisoning diseases on a permanent background timer. That part actually works alright already. I'm still totally unsure how to keep that value above 0. AVs seem to have a flag for exactly this but for some reason it doesn't work like regular RadAway at all (where the "Rads" AV stops at 1). The concept is that RadAway can help you get rid of radiation (or rather, particles made up of radioactive nuclides) in your body and their nasty side effects but it can not cure tissue damage from radiation exposure (which the red bar in vanilla FO4 should represent), for that you need a new medicine that is also included in my mod.
  23. I've been working on my first actual mod for some time now and I've run into a really weird issue. I *could* work around that issue by using more custom scripts, but I'd rather do the thing I'd like to do with in-engine mechanisms than with *another* script. So here goes. My mod focuses on plausible behavior of radiation effects on the player. For this, I need to measure the amount of radioactive particles the player character ingests. I created a custom Actor Value Information record that has the "Minimum 1" flag (which I assume to mean "this value can not go below 1") to store that information. It is attached to the player. I have created a Perk that permanently attaches an ActiveMagicEffect script to the player which handles all (or most) of my custom stuff. It has the following Event to react to the player eating irradiated food (which I put in 3 FormID lists referenced as properties here): Event OnItemEquipped(Form akBaseObject, ObjectReference akReference) if akBaseObject.HasKeyword(pFoodKeyword) if pRawFoodList.HasForm(akBaseObject) pPlayer.ModValue(pIngRadValue, 16.0) elseif pPWFoodList.HasForm(akBaseObject) pPlayer.ModValue(pIngRadValue, 32.0) elseif pProFoodList.HasForm(akBaseObject) pPlayer.ModValue(pIngRadValue, 8.0) endIf endIf endEvent This actually works. When I do player.getav tr_IngestedRads in the console after eating I can see the value actually changing. Now to save code and performance, I created Magic Effects that modify Actor Values. Essentially, I copied those from regular radiation effects, which seem to also simply modify the "Rads" Actor Value. I changed them to change my custom Actor Value and tried to fire them from a spell my script casts: Event OnItemEquipped(Form akBaseObject, ObjectReference akReference) if akBaseObject.HasKeyword(pFoodKeyword) if pRawFoodList.HasForm(akBaseObject) pRawFoodSpell.Cast(pPlayer) Debug.MessageBox("Rawfood spell cast") elseif pPWFoodList.HasForm(akBaseObject) pPWFoodSpell.Cast(pPlayer) Debug.MessageBox("PW Food spell cast") elseif pProFoodList.HasForm(akBaseObject) pProFoodSpell.Cast(pPlayer) Debug.MessageBox("Processed Food spell cast") endIf endIf endEvent In fact, I created 2 Effects: One that should add ingested rads, one that removes them again. The removing effect is fired by a modified RadAway ALCH item directly. Now the weird part starts. When I start all that stuff and the mod starts up, I can eat food and have that trigger the Debug.MessageBox instructions, so the part with the FormID List lookup works correctly. They don't apply the Magic Effect as the Actor Value does *not* change when I look it up with Player.getav tr_IngestedRads in console. I could already verify that the Effect does get applied, it just does not change anything, at least in the positive direction. However, the tr_PurgeIngestedRadsEffect actually does work, sort of: When I player.modav tr_IngestedRads 500 and then consume a RadAway item, it counts down my Actor Value. If you look at the screenshot, you can see I specified a duration of 32 seconds. However, the effect does not stop to count down the Actor Value after it finishes (and disappears from the PipBoy status menu, which it currently doesn't because of the "Hide in UI" flag. I've tried with the flag active and inactive.). It does not even stop at 1 (even though my AV has that "Min 1" flag) and counts into negative numbers. So I need help with 2 questions: * Why doesn't tr_IncreaseIngestedRadsEffect fire correctly and mod my AV? * What is the correct way to define a Value that can't be modified below 1, and why does my MGEF not stop after it finishes its duration?
×
×
  • Create New...