Jump to content

ThoraldGM

Premium Member
  • Posts

    334
  • Joined

  • Last visited

Everything posted by ThoraldGM

  1. My F4SE fails to load about 25% of the time. (Version not displayed when I go to game Settings menu.) It fails more if I don't turn AV off (which causes Cortana to complain in the Windows 10 action center sidebar). It also fails intermittently if anything triggers in the background (if NMM/Steam offers to update, etc). I start game with the F4SE button in NMM. I also ini block the black & white SPECIAL films from displaying in the pre-game. (Not sure if that is relevant to bug.) I hope you find out what's going on.
  2. Here's the process with my mod Hitchhiker, which has terminal script fragments. 1. In CK, select File > Create Archive 2. Highlight any extra crap the CK thinks it needs to distribute (ObjectReference.pex) etc. The CK is programmed to include those files because users DO need them. However, users already have those files in their game. Remove the extra files (only if you are 100% sure they are extra, otherwise it IS ok to leave them in the list). 3. In your Data folder (same folder where your esp is saved), save main archive as: The Metro - Main.BA2. Note the format should be: YourModEspName space dash space Main.BA2 4. CK will show a green progress bar, then the Create Archive window will close. It is OK to close CK now. 5. Distribute The Metro.esp AND The Metro - Main.BA2 to your mod users. Btw the mod looks great. I look forward to trying it out!
  3. Looking at it now in CK. I suspect that you didn't pack the quest fragment scripts with your mod. zzTheMetroQuest stage 0: ";Failed to load code for fragment Fragment_Stage_0000_Item_00" I didn't find any pex or psc files starting with "qf_zz" in the usual script fragment folders. So I checked my Data folder to see if you packed scripts into a Main ba2, but the only files there from your mod are TheMetro.esp and TheMetro.ini. Screenshot 1 - Missing fragment. Screenshot 2 - Next tab showing script fragment name that CK attempted to find. Edit: It's starting for you because, as the developer, you are the only one who has the script fragments on your computer :thumbsup:
  4. When I first started modding, I placed use conditions in my code headers and hoarded snippets like they were "My Precious". Scripters have that right, but where does it get us as content developers and as a community? Innovation is going to happen much faster if more scripters publish open source and public domain. Consider the total number of Papyrus scripters in the grand sphere of programming. (Hint: I had to request Papyrus syntax coloring from Pastebin AND send them a link to the XML file. So not that many.) Then consider how many people stick around through life's curveballs to work on long term projects. Then consider how many of them have open-door development. It's a very, very small and niche group. Instead of bickering about base functions that are published on the wiki, that energy can be directed to Sim Settlements, Spawns of the Commonwealth, Fallout 4 New Vegas, Cascadia, etc. Also, how is the next generation of scripters going to learn if we don't allow practice? Musicians play covers. Scripters beg, borrow, and steal until they can dream in code. We need to encourage that process by being modular and open. If every scripter has to start at zero instead of sharing resources, projects are going to die on the vine.
  5. I whipped up a script that works in the debugs and (most of the) screenshots, but I think the cooking station calculates inventory / ingredients before quest script receives OnMenuOpenCloseEvent. Kinda sucks because I really thought I was on to something. What's the Point? A test to see if recipes can be dynamically flexible. If a recipe calls for beer or Nuka-Cola, players can't use Ice Cold Gwinnett Stout or Nuka-Cherry. ... Or can they?! (inquisitively arched eyebrow)If somebody can figure this out, we can make our recipes accept variants of ingredients. No more being picky about which beer, cola, meat, vegetable, etc if you don't want to be that demanding. Methodology: Registered for OnMenuOpenCloseEvent (OMOCE)When OMOCE fires, script counts number of beers and raw meats in player's inventoryScript adds "generic" beers and raw meats (forms from my mod test) to match number of "real" beers and raw meats (checked via formlists of vanilla items)Beer Chops recipe: 1 generic beer + 1 generic meatDebug TraceAndBox shows the correct calculations of "real" and "generic" beers and raw meatsHowever, the recipe shows I have zero of each generic (see theory about event arriving after inventory was calculated by cooking station)Debug TraceAndBox show that my "generics" were cleaned up correctly when cooking menu closed Think of the generics as a temporary currency. Beer coin. Like BitCoin, but tastier. They only exist while the cooking menu is open. Then they disappear like my bank account balance. If anyone wants to take a swing at this, the project (script, screenshots, esp, 7z, etc.) is open source at: https://github.com/ThoraldGM/BeerChops I don't want to post it on Nexus yet until it works. It is very much a test in progress. Screenshot (more in the project link): BVS = BeerVariantsStart (how much beer was in inventory at start) BGS = BeerGenericsStart (number of generics added) MVS = MeatVariantsStart (how much raw meat was in inventory at start) MGS = MeatGenericsStart (number of generics added)
  6. Thread necro. Still thinking about this ~2 years later. Would be nice if constructible objects ingredient list would accept an array somehow, maybe via formlist or custom function. I tested the leveled list option and it does exactly what you predicted. I had bloatfly meat and beer, but recipe (leveled list RNG) chose radstag meat at cook time, so no chops. Maybe some wizardry can be done under the crafting conditions? I noticed conditions will accept entries like GetItemCount > MyLeveledList > MyCondition. 1. Quick beer chops test in CK. Ingredients are list of all meats and list of all beers. The goal is Any Meat + Any Beer = Beer Chops. 2. Failed beer chops test in game as described. Flexible ingredients are not a critical feature, but I rank it medium-high on the "would be nice to have" scale.
  7. You might like my new teleport mod Hitchhiker. No fetch questing, no fast travel limitations, and the vehicle is implied. https://www.nexusmods.com/fallout4/mods/29273
  8. Unobstructed, Scavver walks ~700 units every 10 seconds, or ~70 units per second.
  9. This is good info, thanks. I don't know if it's part of a "best practices for builders" list but it should be. I can check interiors for this info, but only if it was assigned on creation. The link to weathers is interesting too, reminds me of Immersive Interiors in Skyrim. I see. F4SE because of GetParent(). Are F4SE function contents open source? I was planning a MCM version of the mod, and an alternative file for non-F4SE users. I think what you posted or a close variant is going to be the way forward. Unfortunately, I'm on night 5 of 8 (12-hour shifts), so it's going to be a few days before I can mod.
  10. Drats. I was hoping builders were setting some keyword or flag that says "Hey, this interior is in the Commonwealth | Far Harbor | etc." When I was only using FastTravel / MoveTo, my DLC teleports had erratic success depending on the (origin vs destination worldspace)? But now that CenterOnCell is there as a safety net, it's catching quite a bit of the teleports (DLC or interior targets). That's fine for PC users (which code checks for now), but was hoping to make it less erratic for console users. Thanks for looking.
  11. Test 1: Teleport from Drumlin Diner Concord to Vault111Ext (Exterior to Exterior) Method flagged as: Fast Travel Target WorldSpace: Found Test 2: Teleport from Vault111Ext to Vault81Secret (Exterior to Interior) Method flagged as: CenterOnCell Target WorldSpace: NONE Papyrus.0.log: TEST 1: [01/10/2018 - 12:01:55PM] Hitchhiker: Started hitching... [01/10/2018 - 12:02:02PM] Hitchhiker: Checking IsInFarHarbor. [01/10/2018 - 12:02:02PM] Hitchhiker: Checking IsInNukaWorld. [01/10/2018 - 12:02:02PM] Hitching to Vault111Ext Category: 12 TargetID: 7 Hex2Dec: 418357 HH Go_File: Fallout4.esm [01/10/2018 - 12:02:02PM] Hitchhiker TargetObject: [ObjectReference < (00066235)>] TargetWS: [WorldSpace <Commonwealth (0000003C)>] [01/10/2018 - 12:02:02PM] HITCHHIKER: FAST TRAVEL CALLED. TEST 2: [01/10/2018 - 12:03:20PM] Hitchhiker: Started hitching... [01/10/2018 - 12:03:29PM] Hitchhiker: Checking IsInFarHarbor. [01/10/2018 - 12:03:29PM] Hitchhiker: Checking IsInNukaWorld. [01/10/2018 - 12:03:29PM] Hitching to Vault81Secret Category: 12 TargetID: 4 Hex2Dec: 2035848 HH Go_File: Fallout4.esm [01/10/2018 - 12:03:29PM] Hitchhiker TargetObject: [ObjectReference < (001F1088)>] TargetWS: None [01/10/2018 - 12:03:29PM] HITCHHIKER: CENTER ON CELL CALLED. Screenshots: Script: https://pastebin.com/rTkzV1R8
  12. My Google-Fu appears to be weak today. I need to discern by script if an indoor object is in the Commonwealth, Far Harbor, or Nuka-World. GetWorldSpace only seems to work if the object is outdoors. Is there a way to check which exterior an interior "belongs to" so GetWorldSpace catches everything? I know interior cells don't really have a "location" but aren't they linked to the outside world somehow?
  13. Ahhh. And PerkClip_207d1.swf is Vans! You are going in the mod credits. Thanks ^_^
  14. Where did you find the swf list? I've been wanting to show a thumbs up with ShowPerkVaultBoyOnHUD and have the same problem. https://www.creationkit.com/fallout4/index.php?title=ShowPerkVaultBoyOnHUD_-_Game
  15. MoveTo combined with GetFormFromFile did NOT load DLC destinations *from the Commonwealth*, despite switching to hex/dec conversion instead of hot swapping refquests. DLC targets loaded only when player was in that worldspace, close to that destination (which negates the need/use of teleporting). For now, I removed DLC targets from the pool of Hitchhiker's random destinations. If player has DLC, those destinations will still show up as menu options that can be selected, but won't work unless nearby. Scripts: HH_MapScript, HH_QuestScript More commentary on Twitter thread if interested. I'm pretty tired of attacking this issue from every angle. The only potential solution I see is to CenterOnCell, but that won't work on XBone (since Debug Scripts are stripped from mod). My plan is to note the limitations of DLC teleports in the mod description and drive on. . Pictured: Teleport to Doc Phosphate's Saloon *from within Nuka-World worldspace* .
  16. I actually did try while loops in desperation (back when the erraticness started), the kind I would never publish without adding a failsafe to break out of it. Because the original error involved failing to load the target, the loop ran forever as expected. Good points about TryToEnable and persistence. Although I keep learning the hard way that Papyrus doesn't like to be forced to do anything. It's a picky, stubborn mule that only moves when it feels like it.
  17. I think you are right. Start Me Up combines GetFormFromFile and MoveTo in one line, then uses SetPosition, then SetAngle. All of SMU's destinations appear to be in the Commonwealth (GFFF Fallout4.esm) so I don't know yet whether a DLC teleport will require any special handling. I was using Game.FastTravel to trigger loading screens. I will try to post a testing update in 12 hours or so.
  18. I finally decompiled scripts from Start Me Up (mod author suggested I look at them) & immediately know what I did wrong. GetFormFromFile must be called AT time of MoveTo. Not saved in a variable or ref alias beforehand, & not using Game.FastTravel. Not home to test if this will load DLC locations, and I may still adopt XYZ system, but at least the project is no longer stalled.
  19. I think the reason MoveToNearestNavmeshLocation has been mostly working for me is because I'm moving markers very close to navmeshed areas first. Then it's just a matter of bumping to the right spot so player doesn't get stuck inside a static... (In theory.) But I haven't set up mathematical, automated tests like yours. I don't know anyone more thorough, btw, so much respect. I may have to rewrite everything to use the XYZ method. I hate leaving questions unanswered almost as much as I hate going back to Square One. But if it doesn't just work, then I've got to let go and adopt a better way.
  20. Then it becomes a Catch-22. I didn't put it in a property originally so I could avoid DLC dependency for players who don't have them. And I can't place it into a property dynamically if GetFormFromFile() returns NONE due to not being loaded. So my options are find a way to preload it, or go with alt method like the suggested XYZ coords.
  21. More testing confirmed this is the exact problem. If I can't find a way to remote/hot load the target objectreference before attempting GetFormFromFile, then I will have to use one of the alternate methods suggested. Previous erratic results indicate the game must be loading those refs (just prior to ??) when the teleport succeeds, and the GetFormFromFile is NONE when the teleport fails.
  22. Thanks for the suggestions. It's going to be a few days before I can mess with it again, maybe longer as we get into holidays.
  23. I added a couple of 30 second waits to the code and it still failed (test destination: The Last Plank, Far Harbor). When I tested 14 out of 42 earlier, the results were: 5 Nuka-World destinations passed: Cappy's Cafe, Bradberton Amphitheater, Dry Rock Gulch, Starlight Interstellar, The Parlor.3 Nuka-World destinations failed (went to Todd's room instead): Fizztop Grille, Doc Phosphate's Saloon, World of Refreshment.6 Far Harbor destinations failed (went to Todd's room instead): Cliff's Edge, Eden Meadows, The Last Plank, Super Duper Mart FH, Vim Factory, Echo Lake Lumber.The specific failed targets/ref aliases were: Static tableBar stoolCOC markerBar stoolDiner boothX markerCOC markerCOC markerCOC marker I don't know why my ForceRefTo's seem to be failing. The Debug.TraceAndBox(es) I have in place fire all the way through to completion of teleport. Papyrus.0.log sometimes reports that MoveToNearestNavmeshLocation is not found. Code assigning DLC target: If TargetAliasID == 23 Found = 1 DLCObjRef = Game.GetFormFromFile(0x0100D393, "DLCNukaWorld.esm") as ObjectReference ; EndIf If TargetAliasID == 24 Found = 1 DLCObjRef = Game.GetFormFromFile(0x01043C13, "DLCNukaWorld.esm") as ObjectReference ; EndIf ElseIf TargetQuest == QuestRefVaults If TargetAliasID == 5 Found = 1 DLCObjRef = Game.GetFormFromFile(0x01004217, "DLCworkshop03.esm") as ObjectReference ; EndIf If TargetAliasID == 9 Found = 1 DLCObjRef = Game.GetFormFromFile(0x01038AFB, "DLCCoast.esm") as ObjectReference ; EndIf Else Debug.TraceAndBox("HITCHHIKER: TARGET QUEST IS NULL!") EndIf ; Grab the desired reference alias from the correct quest If Found Utility.Wait(30) TargetAlias = TargetQuest.GetAlias(TargetAliasID) as ReferenceAlias If HH_OptionDevTracking.GetValue() as Int == 1 Debug.TraceAndBox("Hitchhiker: TargetAlias is " + TargetAlias + ".") EndIf EndIf ; Force the refalias to the DLC objref If Found Utility.Wait(30) If DLCObjRef TargetAlias.ForceRefTo(DLCObjRef) EndIf EndIf Return Found EndFunction . Code moving target to destination, then to navmesh, then moving player to target: Int GetDLC = HH_ForceDLCRefAlias(akSender, RefAliasID) Utility.Wait(0.1) TargetRef = (akSender.GetAlias(RefAliasID) as ReferenceAlias).GetReference() StartTimer(60, 3) ; Done with quest in 60 seconds EndIf Player.AddPerk(HH_TeleportNoFallDamage) ; IMPORTANT: Temp perk so teleport falls don't kill player! If HH_OptionSpinGhost.GetValue() as Int == 1 ; If player wants no spin damage (default) If HH_OptionSpinCamera.GetValue() as Int == 1 ; If player wants spincam after teleport, Player.SetGhost() ; IMPORTANT: Player immune to all damage! EndIf ; *** Set ghost now BEFORE the spin! *** If HH_OptionDevTracking.GetValue() as Int == 1 ; If player wants dev messages... If Player.IsGhost() ; If player is a ghost, Debug.Notification("Hitchhiker: Player is a ghost!") ; display dev message EndIf EndIf EndIf ; NOTE: Unghosting happens in HH_SpinCamera() If HH_OptionTeleportSound.GetValue() as Int == 1 ; If player wants teleport sound, Int iInstanceID = OBJHijackerTeleportOut2DA.Play(Player) ; play teleport end sound at player EndIf DestinationMarker = Player.PlaceAtMe(pXMarker) ; Dynamically spawn xmarker at player STATIC TargetBase = TargetRef.GetBaseObject() as STATIC ; Check if target base object is an X/COC marker/header If TargetBase == pXMarker || TargetBase == pXMarkerHeading || TargetBase == pCOCMarkerHeading ; Do not use XYZ offsets if destination is a marker DestinationMarker.MoveTo(TargetRef) ; so teleport will place player directly on the X Else ; else move marker to static ref with XYZ offsets Float OffsetX = HH_OptionOffsetX.GetValue() ; Player sets X (default 250) Float OffsetY = HH_OptionOffsetY.GetValue() ; Player sets Y (default 250) Float OffsetZ = HH_OptionOffsetZ.GetValue() ; Player sets Z (default 500) Utility.Wait(0.1) DestinationMarker.MoveTo(TargetRef, OffsetX, OffsetY, OffsetZ) ; Move marker with XYZ offsets DestinationMarker.MoveToNearestNavmeshLocation() ; Then move marker to nearest navmesh EndIf If HH_OptionFastTravel.GetValue() as Int == 1 ; If player wants loading screens, Game.FastTravel(DestinationMarker) ; move player to marker (with load screens?) Else Player.MoveTo(DestinationMarker) ; else move player (with black screen) EndIf Utility.Wait(0.1) ; "If TargetRef Is Furniture" caused illegal typecast compiler error, so I wrote a custom function HH_TryToUseFurniture(Player, TargetRef)
×
×
  • Create New...