Jump to content

iqoniq

Premium Member
  • Posts

    74
  • Joined

  • Last visited

Everything posted by iqoniq

  1. Many, many thanks. It's back up and running
  2. Is there any way to rollback the CK to the previous version? I need to use F4SE and I don't want to update yet.
  3. Ah, I thought the terminal did whatever it needed to with the quest and waited for that to complete before moving on. I'll try your suggestion in a few days. I've also had it cause a CTD a couple of times so I've replaced it with something else as a stop gap while I work it out.
  4. I've got a script attached to a quest, which moves the player to another location, and it's shared between a terminal and Pipboy (you can use either the terminal or a holotape to move). The terminal works absolutely fine, but when it comes to the holotape it's not detecting the exit event. If you open the Pipboy again it then detects the previous closure event, and when you exit again it also detects that event and does what it needs to. It's being called with... Function CheckfortheExit() Self.RegisterForMenuOpenCloseEvent("TerminalMenu") Self.RegisterForMenuOpenCloseEvent("PipboyMenu") Utility.Wait(0.5) EndFunction When it detects the exit event it does this... Event OnMenuOpenCloseEvent(string asMenuName, bool abOpening) Debug.Messagebox("Exiting: " + asMenuName) If (asMenuName == "TerminalMenu") Float ftstage = lfvr_ftstage.GetValue() If ftstage == 1 battlebuttonenabler.Enable() slotsbuttonenabler.Enable() PlayerRef.MoveTo(lfvr_entrypoint) ElseIf ftstage == 2 (Self As Quest).SetStage(1020) ElseIf ftstage == 3 (Self As Quest).SetStage(1030) ElseIf ftstage == 4 (Self As Quest).SetStage(1010) EndIf lfvr_ftstage.SetValue(0) lfvr_inpip.SetValue(0) EndIf If (asMenuName == "PipboyMenu") Float ftstage = lfvr_ftstage.GetValue() If ftstage == 1 battlebuttonenabler.Enable() slotsbuttonenabler.Enable() PlayerRef.MoveTo(lfvr_entrypoint) ElseIf ftstage == 2 (Self As Quest).SetStage(1020) ElseIf ftstage == 3 (Self As Quest).SetStage(1030) ElseIf ftstage == 4 (Self As Quest).SetStage(1010) EndIf lfvr_ftstage.SetValue(0) lfvr_inpip.SetValue(0) EndIf Self.UnRegisterForMenuOpenCloseEvent("TerminalMenu") Self.UnRegisterForMenuOpenCloseEvent("PipboyMenu") EndEvent I just can't figure out what's stopping it the first time around. Any help would be greatly appreciated.
  5. The NIF for the caps isn't animated. For most animations, they also tend to use a grid of separate images, and with the DDS format you could end up with an absolutely massive file for something that does very little. If you know your way around NIFSkope you could probably use that to edit the NIF for the Cap object. If you're happy with it being static, then it's a simple asset flip.
  6. You're not playing in survival mode with a mod that allows mods are you? There's one that restores the console window ( https://www.nexusmods.com/fallout4/mods/26163 ) and has it borked for some reason? What happens if you try and open the window and type TM (toggle menu - it can also hide the console window)? Open the window, and wait until the game freezes and the cursor appears. Without clicking anything else, just press T, M and then return and see if the window reappears. I've never known toggle menu to be persistent across saves (I use it for screenshots a lot), although I tend to ALT+F4 out without a save. Having said that, TM also kills most of the UI so I guess it would be noticeable. If the menu comes back when you've done that, exit out (with a save) and reload and see if it still happens. If it does then I'd guess there's a mod playing up, glitching out or possibly even doing it by design.
  7. Do you have the Ballistic Ammo in Magazines mod installed? https://www.nexusmods.com/fallout4/mods/47878
  8. Like I say there's a trade off. For music files that are around 8 minutes long will break the maximum filesize which is actually a massive limitation. At that point you start dropping the bitrate and it introduces artifacts. I've managed to compress tracks in excess of an hour long, but there was a massive quality hit (although it did give the mod the authentic 15th generation copy of a mixtape effect ). If you want to mess around with it, I'd recommend Lazy Audio ( https://www.nexusmods.com/skyrim/mods/71749 ). It's for Skyrim, but Skyrim uses the same formats (same engine almost). If you want to experiment with long files then Yakatori Audio Converter ( https://www.nexusmods.com/skyrim/mods/73100 ) has a GUI, which makes altering bitrates easier. Basically, if you crash it (it will just fail the conversion) then you need to drop the quality.
  9. You can't use MP3 files. Try using MP3 and see what happens. Most of the dialogue in the game is compressed using the .xwm format, and if you listen closely you can hear the artifacts (little tinkling noises) when characters speak, and it's especially noticeable when you first meet Piper. If you extract the audio in the game BSAs and try and play the files in something that plays .wav, but doesn't support .xwm, you'll encounter files that seem to be corrupted wavs. These are just xwm format, renamed to wav. A mod that's audio heavy can benefit from .xwm because the files are reduced greatly, but they need to have the extensions changed to .wav for the game to see the files. I've done a few radio and mods with a lot of audio, and I can get 20+ hours of audio to fit in around 500MB. Yes, there is a trade off (there is a maximum file size that .xwm files can be) in terms of quality, but it's preferable to downloading and wasting 13GB. Even my conversions of videos for Videos of the Wasteland had to have the sound ran through a converter because I'd have ended up with around a gigabyte more added to the file sizes, and Razorwire even recommends it in his video tutorials (although you didn't need to rename them to wav).
  10. I guess the loop points lost if they're converted to wxm?
  11. You will need to add the pex files. The psc files are just your source code and can be opened in a text editor (I edit mine in Notepad++). The pex files are the compiled executables, and what works in the game. If you have a look in the script directory, and then in the source directory, there should be a corresponding psc for every pex that was supplied with the vanilla game (assuming you let the installer unzip the source files). You can take the psc away and the game works fine, but if you take the pex away then the quest scripts and so on won't function. As an asides, don't feel too bad about it, I completely left out the pex and psc of one of my first mods.
  12. I think that's what I'm going to have to do. I'm going to have to script an abacus as there's some maths involved, but easy enough.
  13. I've got a global variable that I need to display in the terminal. That bit works fine, but I'm wondering if there's any way to force it to display a number like 89 as 089. Thanks for any help in advance.
  14. I've got a levelled item (well actually 5 on one form) that's injected into various item lists like lunchboxes, chests, etc. The drop rate was too high, so I've updated it so it's not as high. Will this be automatically applied to the game at load, or do I need to write a function to remove the old forms first, and then reinject them? Thanks in advance.
  15. I've got a holotape which triggers a quest to transfer caps into the player's inventory. To do this is activates a quest which handles all the heavy lifting. Because of the limitation of only being able to add 65535 caps (or anything for that matter) at a time due to the 8-bit integer limitation, if the person tries to take more caps than that I need to split it down. I've done this, but the problem is it can take a little bit of time for the script to complete, and it's possible to spam it because I'm just using a force redraw on the button click. Is there a way to force the holotape to pause until the quest has completed it's run through?
  16. It looks like some of the NPCs were messed up somewhere in their forms. I remade them, swapped over to using aliases even when I had known values of the NPCs, and it seems to be working now.
  17. I've redone the script and moved it to the aliases (each alias handles it's own hits now), and it works as intended, but I'm still having a problem with kill() or killessential() not working. Please, does anyone have any ideas why my NPCs aren't dying?
  18. I've been trying to more or less script a fight with a life heart (see my Lucky 444 VRCade to get the idea). At the start of the fight there's a random roll to see who will win the fight, the correct fighters (one loser and winner) are spawned into the ring and the quest hands over to a secondary quest which tracks the fight. The problem is I was having all sorts of crazy going on with the life heart when I tried to track the health of the fighters (I think it was down to health regeneration). In an attempt to fix it (and stop the 10 minute long fights) I buffed up the fighters health and tracked attacks. I set a counter for each player, and for each OnHit there was a random percentage (between 1 and 5) deducted from the appropriate counter. As soon as one hits zero they're "killed", but as they're essential they go into bleed out. The problem is occurring when the player's fighter hits zero. It catches the event, but does absolutely nothing. They just carry on fighting. It works fine for the house fighter, but with the player it's not playing ball. Could someone please have a look at the script, and tell me where I'm going wrong. Thanks in advance. Scriptname lfvr_fr_lifeupdater extends Quest Actor Property PlayerRef Auto GlobalVariable Property lfvr_fr_brutality Auto GlobalVariable Property lfvr_fr_hmulti Auto GlobalVariable Property lfvr_fr_hstarthealth Auto GlobalVariable Property lfvr_fr_pstarthealth Auto GlobalVariable Property lfvr_fr_pmulti Auto GlobalVariable Property lfvr_fr_pwin Auto ObjectReference Property playerlifeheart Auto ObjectReference Property houselifeheart Auto ReferenceAlias Property cloneyclone Auto ReferenceAlias Property fighterclone Auto Quest Property FightRoomLite Auto Const Function StartMonitoring() Float pwin = lfvr_fr_pwin.GetValue() If pwin == 1 ;; Set multiplier to scale heart correctly. lfvr_fr_hmulti.SetValue(1) lfvr_fr_pmulti.SetValue(0.5) Debug.Notification("PLAYER WILL WIN!") ;; Debug notification to show expected result ElseIf pwin == 0 lfvr_fr_hmulti.SetValue(0.5) lfvr_fr_pmulti.SetValue(1) Debug.Notification("PLAYER WILL LOSE!") EndIf playerlifeheart.SetScale(1) houselifeheart.SetScale(1) playerlifeheart.Enable() houselifeheart.Enable() RegisterForHitEvent(cloneyclone) RegisterForHitEvent(fighterclone) Debug.EnableDetection() ;; Allow the fighters to start fighting. EndFunction Event OnHit(ObjectReference akTarget, ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked, string apMaterial) Actor housetoon = fighterclone.GetActorReference() Actor playertoon = cloneyclone.GetActorReference() Int pctorem = Utility.RandomInt(1, 5) Float hhealth = lfvr_fr_hstarthealth.GetValue() As Int Float phealth = lfvr_fr_pstarthealth.GetValue() As Int Float hmulti = lfvr_fr_hmulti.GetValue() Float pmulti = lfvr_fr_pmulti.GetValue() If akAggressor == playertoon && akTarget == housetoon ;; Cloney has hit hhealth = (hhealth - pctorem) lfvr_fr_hstarthealth.SetValue(hhealth) Utility.Wait(0.1) hhealth = (hhealth / 100) lighthouse.SetHealthPercent(housetoon, hhealth) lfvr_fr_brutality.Mod(pctorem) If hhealth > 0 hhealth = (hhealth * hmulti) houselifeheart.Disable() houselifeheart.SetScale(hhealth) houselifeheart.Enable() RegisterForHitEvent(housetoon) ElseIf hhealth <= 0 houselifeheart.Disable() housetoon.Kill() (Self As Quest).Stop() EndIf ElseIf akAggressor == housetoon && akTarget == Playertoon ;; House has hit phealth = (phealth - pctorem) lfvr_fr_pstarthealth.SetValue(phealth) Utility.Wait(0.1) phealth = (phealth / 100) lighthouse.SetHealthPercent(playertoon, phealth) If phealth > 0 ;; Is health over 0? If so rescale the heart. phealth = (phealth * pmulti) playerlifeheart.Disable() playerlifeheart.SetScale(phealth) playerlifeheart.Enable() RegisterForHitEvent(playertoon) ElseIf phealth <= 0 ;; Is heath at or below zero? If so kill the player fighter playerlifeheart.Disable() playertoon.Kill() Debug.Messagebox("Should be dead") (Self As Quest).Stop() EndIf EndIf EndEvent
  19. I created a texture (fully opaque) in Photoshop, and saved it as BC7. The texture isn't anything complicated, mainly green, and has a glow (Photoshop added - not anything in the material file) around it (similar to this, but without the scanline effect). In the CK it looks as intended, but in the game you can see a lot of colour banding (very similar to the first image in this example) , and weird artifacts (caused by the mipmap filter?). I had a look at what could be wrong, and I figured it was using a 24-bit mode on something that's going to display it as 8-bit. I then recreated the graphic as in 8-bit, and it didn't look too bad (or at least better than it did in the game). Once again I try it and there's colour banding and artifacting again. I spent ages going through various combinations and trying stuff, searching the net, and I'm having no joy. I'm literally learning as I go with this, and I'm really stepping out my comfort zone, and I'd really appreciate any help (or even just tips to minimise it would be great). Thanks in advance.
  20. It's a kind of escape room/maze (which can change the solution mid level, so you may go in one room and come out another) scenario I'm working on , but it's split over several "levels". The player needs to complete the levels in a global set time period which is real world time not game time, so they could take 3 minutes on one level, 5, minutes on the next, and then until the time ran out on the next level. The levels also aren't forced on the player, so when one level is completed the player can leave and go and do something else, then do the next level later on. I don't want the player feeling like they're "locked in" for the duration. As they progress through the levels they'll meet enemies which when killed drop power ups, some of which will add time when picked up. The only way I could see doing it was dividing the time needed by the update period and then adding (or possibly removing) it to the global value. Thinking about it, it could possibly cause more problems because I'd need to halt the timer, work out all the new values, and then start the timer again with the new ones. I'll need to do some research and see if I can figure it out. Thanks for the help :)
  21. Is there any way that I can detect how long is left on a timer. I want to be able to manipulate it to extend and shorten the timer. At the moment I've got a global I'm updating by setting a timer for 1 or 5 seconds which subtracts 1 from a global and then resets the timer, or fails the quest if zero. If an event happens it just adds or subtracts from the golbal. At the moment it means I'm running two quests (the actual quest and the timer quest, and the two interact), but I'd prefer to be be able to see how long the timer has left at the point needed, and then stop and restart the timer with the modified value. It's also not tying Papyrus up needlessly (if it's possible anyway) as there's quite a lot going on in the background. Is it possible?
  22. It seemed to be working kind of as expected except for the life heart magically refilling. I'm using Grab Attacks in conjunction with the mod (not a dependency, just a recommendation), and it seems that if it does a move that would be a kill move and would "kill" the character, because they're marked as essential, rather than enter bleed out they get a refill of health. It does seem to be when the health would enter a negative value, so I'm guessing it's some funkiness with that as opposed to anything I'm actually doing. I've already had to make a check script because I've had to check where the fighters are because they'd end up flying out the bounds of the cage sometimes and into the void stopping the fight from progressing, so that just checks their xyz location every 10 seconds and ports both fighters back to the start point to carry on if they're outside the bounds (which ironically hasn't happened since I wrote it, except for a move sinking them below the navmesh occasionally, which wouldn't cause an issue anyway because they snap back to it). I've tried to work out the refill, but it's probably the combination of the essential marker, Grab Attacks, and the amount of work Papyrus is doing that's causing it. It does work in the player's favour if they're the winner because every hit adds a "brutality bonus" (part of the inspiration was the Pit Fighter arcade game) to the prize purse. There's also the fact it can be considered to be putting on a show, like in WWE when a fighter gets totally fraggled and then has a magical second wind. The fight still plays out with the right fighter winning (although the event scripting on the aliases would still process an "upset" in the right way), so I can live with it I guess.
  23. I'm doing all sorts of crazy with properties (even the time scale) in scripts, because there's a lot going on. The script is standalone quest, but it runs in tandem with another 2 quests (the actual quest itself, and a fat controller that handles stuff like player restrictions in the background while in the cell) and is held together with hopes, wishes and dreams. It's probably overkill, but when they were all lumped in together I was having interesting effects, so I spun it off into separate quests so I know where is causing what and it's easier to edit that than end up recoding other bits of a script doing several things already.
  24. Many thanks to both of you. I updated with both suggestions and it works fine until the health goes into minus values and then it goes to 10 times the size :laugh: . I can get the script on the aliases to counter that though, so it's not too much of a problem. @RaidersClamoring: Can I ask why removing const could/would have an effect?
×
×
  • Create New...