Jump to content

user826

Premium Member
  • Posts

    152
  • Joined

  • Last visited

Everything posted by user826

  1. Hey, all! So, let's say hypothetically that I'm super-OCD and it bothers me that the Form IDs in the plugin I just made aren't in sequential order. Are there any negative consequences to manually changing them in FNVEdit? For example, if I have entries with the Form IDs xx000ADD, xx000ADF, xx000AE0 and xx000AE4, will it screw anything up if I manually change them to xx000000, xx000001, xx000002 and xx000003 respectively?
  2. Thanks for the reply! I'll give this a shot and report back after. EDIT: Okay, so I tried this out and it didn't quite work. When I entered the cell, the racks were still empty but I could hear a weird rattling sound. Turns out the guns were no longer in the rack but had somehow spawned behind the rack and were being pushed through the wall and out of the cell. I'm going to try changing it to an AddItem call and see if that does anything. EDIT 2: Using an AddItem call has the same result as if I hadn't used the script at all. The gun can be found in the rack's inventory (except without any ammo this time) but the rack still appears empty when the cell loads.
  3. In case anyone's curious, adding it via a script that triggers when the player enters the cell doesn't work either.
  4. Hey, all! I'm working on a player home in Creation Kit and I want to use Contraptions DLC weapon racks to hold the custom weapons I'm including with the home. Now, when I tried to do it like I would with any other container (i.e. making a duplicate of the rack and placing the gun in its inventory, then placing the duplicate in the cell), the weapon rack does contain the weapon (along with a handful of ammo for it) but when you first enter the cell, the rack appears empty. You have to activate the rack, take the weapon and ammo out, then put the weapon back into the rack before it will display. Does anyone know how to make it so that the weapon starts off on display by default? Many thanks if you can solve this one for me, or point me in the right direction!
  5. I'm currently working on a mod that adds a small team of four custom NPCs that I want the player to only be able to hire together as a group. So far, I've successfully managed to make it so that the player can only hire the team by talking to the commanding officer, and if you try to hire the other three individually, they tell you to talk to the guy in charge. I've also managed to get them to all follow me together. However, I'm experiencing a weird issue whenever I tell them to wait. I've made it such that the hire, fire and wait commands have to be done through the commanding officer, and affect the entire group. So, I talk to the CO and click "Wait" on the companion wheel. The commanding officer will then wait where I tell him to but as soon as I do so, the other three run off back to their spawn point. Then, when I tell the commanding officer "Let's go," the other three exit the building and come running back to us. Anyone know why? In each of their AI packages, I have it set for them to wait near a specific reference (that reference being themselves) with a maximum wander radius of 256, but these three subordinates are running a lot farther than that every time I tell the team to wait. I also tried setting the packages for the three subordinates to tell them to wait near the commanding officer's reference, but the same thing happened and I can't figure out why! I have it set up so that the quest dialogue result script updates all four NPCs' packages at the same time (instead of just one, like the tutorials I'm following) but I don't see why that should cause this issue. Any help would be appreciated! EDIT: I figured it out! I accidentally left the Guard Location on the three subordinates' Wait packages set to "Near Editor Location" instead of "Near Current Location"
  6. Aha, that was it! I'd left both those values at 0, since whenever I make clothing or weapon enchantments, I can just leave it. Old habits die hard, I guess. It's working perfectly now. Thanks for your time! EDIT: The Concise Step-By-Step Guide (for anyone stumbling across this thread in the future) Create the Base Effect (Effect Archetype: Script, Assoc. Item: {your script}, [x] Self, [x] Touch, [x] No Magnitude, [x] No Hit Effect, [x] Painless) Create the Actor Effect ([x] Area Effect Ignores LOS, [x] Force Touch Explode) Attach the Base Effect to the Actor Effect (Effect: {base effect}, Range: Touch, Area: {a number greater than 0}, Duration: {a number greater than 0})
  7. Thanks, rickerhk! This looks like it could be just what I need. I'm still trying to parse your example scripts to see how I'd need to modify them but it's a solid start. Thanks again! EDIT: Is there a reason why there isn't any code to run between the if and else conditions like in the following snippets? if (GetInFaction ProjectBrazilVault18EnclavePatriot == 1) else return endif if (Player.IsSpellTarget PBrazilEncSTVRadarEffect == 1) else set iCH1PatriotAlive to 0 Player.cios PBrazilEncSTVRadarEffect set iEnableRadar to 2 endif Is that necessary for the script to run properly? Because I did everything else like you said, created the Base and Actor effects with the proper flags but it's not working for whatever reason. Here are my scripts as they currently stand: Base Effect Script: scn SCPTHologramDisruptorEffect begin ScriptEffectStart if (IsActor) if (GetDead) || (GetDisabled) || (GetIsReference Player) Return else if (GetInFaction NVDLC01HologramFaction == 1) || (GetInFaction NVDLC01HologramSecurityFaction == 1) || (GetInFaction NVDLC01HologramStarletFaction == 1) if (GetDistance Player <= 5000) SetActorsAI 0 ShowMessage MESGHologramDisruptorActive elseif (GetDistance Player > 5000) SetActorsAI 1 endif endif endif endif end Quest Script (Priority 55, Start Game Enabled, Script Processing Delay of 5.000): scn SCPTHologramDisruptorQuest short DisruptorActive begin GameMode if (DisruptorActive == 1) Player.CIOS SPELHologramDisruptor set DisruptorActive to 2 elseif (DisruptorActive == 2) set DisruptorActive to 1 endif end Armor Object Script: scn SCPTSignalJammer begin OnEquip Player ShowMessage MESGSignalJammerEquipped set QUSTHologramDisruptor.DisruptorActive to 1 end begin GameMode if (player.GetEquipped ARMOSignalJammer == 1) if (NVDLC01BombCollarQuest.fCollarTimer < 10) PlaySound UIPipBoyStatic ShowMessage MESGSignalJammerActive set NVDLC01BombCollarQuest.fCollarTimer to 10 endif else ;Do nothing endif end begin OnUnEquip Player ShowMessage MESGSignalJammerUnEquipped set QUSTHologramDisruptor.DisruptorActive to 0 end
  8. I originally wanted to do it that way, but then how would I apply the script to the target? The script is on a piece of armor that the player is wearing. Using GetSelf would therefore target the player. To use GetSelf, I'd have to make it into a weapon and then run GetSelf in an OnHitWith block to target the holograms, and in that case it wouldn't be a passive effect. I'd have to actively hunt down and shoot each hologram with the weapon to run the script...
  9. I'm trying to create a hologram disruptor for Dead Money. Basically, I have a piece of gear that I want to, when equipped, disable all holograms within a certain radius of the player. What would be the best way to go about this? I'm working on an effect script that currently looks like this, but I would prefer to do this using vanilla New Vegas GECK commands (i.e. I want to avoid using GetFirstRef/GetNextRef if I can help it, so the mod doesn't require NVSE) and without touching the NPCs vanilla game scripts ref Victim float Distance begin ScriptEffectStart set Victim to GetFirstRef 43 1 ;* 43 = Creature, 1 = cell depth radius while Victim != 0 if Victim.GetDead || Victim.GetDisabled ;Ignore elseif (Victim.GetInFaction NVDLC01HologramFaction == 1) || (Victim.GetInFaction NVDLC01HologramSecurityFaction == 1) || (Victim.GetInFaction NVDLC01HologramStarletFaction == 1) set Distance to Victim.GetDistance Player if (Distance <= 1000) Victim.SetActorsAI 0 elseif (Distance > 1000) Victim.SetActorsAI 1 endif endif set Victim to GetNextRef loop end How else can I achieve the effect? Could I do it by creating a custom explosion, maybe? An object effect or custom quest? Or some other method that I haven't thought of? I'd appreciate the help!
  10. Well I'm no expert, but the way I understand it, the only thing the container itself actually holds is a handful of leveled lists. A script will never find the actual GECK ID (i.e. Ammo308Caliber, Caps001, etc.) of the item listed in the container's inventory because the leveled list just tells the game to randomly "roll" to see how many of each item on the list should be displayed in the window that pops up when the player opens the container. It doesn't actually add that item to the container's inventory. This is backed up by the fact that most of the loot containers in the wasteland aren't named persistent references, so they wouldn't be able to be referenced in scripts anyway. In short, I don't think the caps are stored in the container at all. The container is only used to store a set of rules for the game to interpret regarding the items that should be shown to the player. Like, for instance, an NPC wouldn't be able to reach into a random loot fridge in the wasteland and pull out food to eat because there isn't actually anything in the container at all. Only when the player opens it does it generate a list of contents that the player can take. Therefore, I think each vendors barter caps are stored in a variable or a global or some other game setting somewhere in the GECK, and not actually represented by the item "Caps001" in the game at all until they're transferred to the player.
  11. Yeah, just that snipped in an OnActivate block should do it. Here's my exact code: scn VendorChestChecker begin OnActivate if (IsActionRef Player == 1) VendorChestChetREF.Activate Player endif end And make sure you remember to give the chest itself that Reference ID. Anyway, the game occurrence I'd like to fix is that when a vendor accrues over 32,767 caps in their barter menu, any items you sell them in exchange for caps, they will take the items from you but you will not receive any caps in return and their barter caps will not go down, so you can't fix the problem by buying more stuff. I know that the vendor caps glitch exists in Fallout 3 as well (and Oblivion too). It's a pretty well-known engine limitation that can't be fixed at a fundamental level, hence my attempt at a workaround. A vendor could surpass 32,767 caps surprisingly easily in a number of ways. Mostly, it's if you buy a lot of expensive stuff from them using caps (i.e. the unique Gun Runners' Arsenal weapons, or equipment repairs from The Sink in Old World Blues) Also, as far as I know, their caps don't reset every three days. They keep their caps and restock more on top of it, so if you don't visit a vendor in a while, and put a hundred hours into the game, then come back, their inventory has been resetting every three days of game time you've been away but their caps have been accruing all that time as well, pushing them over the glitch threshold. This happens a lot with Lacey at the Mojave Outpost, since I think she has one of the highest starting cap totals in the game. I visited her, then went and did all the DLC in a row before coming back only to find that she no longer paid out for anything I sold her. EDIT: One more issue that I just thought of. A vendor does not actually have caps in their vendor chest. Any caps that show up in their barter menu are placed there through leveled lists, therefore any script placed on the container that says something like... ref ContainerREF short ExcessCaps begin GameMode set ContainerREF to GetSelf set ExcessCaps to (ContainerREF.GetItemCount Caps001 - 30000) if (ContainerREF.GetItemCount Caps001 > 30000) ContainerREF.RemoveItem Caps001 ExcessCaps endif end ...would have absolutely no effect because the number of caps in the chest is always zero. I need to find out where the actual integer that represents a vendor's total number of available barter caps, is stored before I can affect it with a script.
  12. Thanks for responding, and for doing your own testing as well! To answer your question, I used the GECK to give his vendor chest a Ref ID (It was already a persistent reference, so I just gave it a name) and then placed an activator in the general store that ran a "VendorChestChetREF.Activate Player" script when interacted with. My concern with the disparity is if it compounds. Right now, it's only 36 caps (or 4%, as you pointed out) but depending on how it's calculated, 4% could easily turn into several thousand caps as the game progresses. Like right now it might be (Vendor Chest Caps + Inventory Caps) x 1.04 = Total Caps, but then after three days, it could be another 4% on top of that first total. Three days after that, 4% on top of the 4% on top of the first total, and so on. Eventually, that 4% could total over 30,000 caps if left unchecked! I also had another thought. When I first found the 36 cap disparity, I had 18 caps in my inventory, which is exactly half of 36. This led me to wonder if the player's caps play any role in the formula. I did another test, this time ditching all my caps outside before even entering the store, but there was still a disparity (of only 13 caps this time, but still, more than twice the number of caps I had on me). I'm not sure if this proves anything but I'm passing it on as food for thought.
  13. I'm trying to script a workaround to the glitch where if a vendor has over 32,767 caps, they'll stop paying out for items that you sell them. The scripting itself isn't an issue, but the problem is, I can't seem to figure out how the game calculates the total number of caps each vendor has available. I did a test with Chet. Talking to him and accessing his barter menu showed that he had 811 caps available to trade. Then, using the 'OpenTeammateContainer 1' console command, I found that he had 55 caps on his person. Opening his vendor chest showed 720 caps. Adding those two numbers together only gives me 775 caps, with 36 caps coming from some mystery source. If I'm going to add a script either to him or his vendor chest, I need to know how the game calculates the total so that if it exceeds, say, 30,000 caps then I can tell it to ditch the excess. Does anyone here know the answer?
  14. Holy crap, a lot of new replies all of a sudden! Thanks for the advice so far, everyone! I'll have to take some time to read over all of them, but in the meantime I've just been using a perk-based system since it seemed like less hassle. I created an 'ICE Breaker' MISC object and scripted it with an OnAdd block to give the player the perk, and an OnDrop block to remove it when the item is dropped. So far it's working out and seems lore-friendly enough so if I'm smart, I may just leave well-enough alone, haha
  15. Hmm, that sounds super complicated, haha! I may have to rethink this. As far as the compatibility concerns, I was thinking more about if I share my mods with my friends who aren't hardcore modders and either don't know how or can't be bothered to install FOSE. I always like to stick to vanilla game assets and scripting (I even try to avoid using official DLC content) so that even if all they have is the original game, the mod still works.
  16. Thanks for the reply! Is there no way to do it without FOSE? I'd prefer not to have to use it, to maximize compatibility...
  17. I'm trying to make a gun that unlocks terminals when they are shot, but my script doesn't seem to be working. Could someone more familiar with GECK scripting please give me some pointers? Currently, I've got an effect script set up as follows: scn ICEBreakerEffect ref victim begin ScriptEffectStart set victim to GetSelf victim.Unlock endI've then linked this script to a base effect (Self, Touch, Target, No Magnitude) and made an object effect with the conditions (GetIsObjectType Terminal == 1) and (GetLocked == 1). However, when I apply the object effect to a gun, it doesn't work! Where am I going wrong? Thanks for your time!
  18. As the title suggests, is there any way to modify the total play time for a save? I have a self-made player home and I want to make my first save there and reset the clock to 00:00:00 so that I can get an accurate count of the actual time I've spent playing, not including the time it takes to play the intro or pick my stats, to do the tutorial quest, etc. I did find a tool online called the New Vegas Save Editor that claims to let you do this but it only changes the time displayed for the save in the load menu. For instance, if you change the total play time from 00:16:54 to 00:00:00, load the edited save and then make another save immediately after, the new save will still show 00:16:55 instead of 00:00:01. Alternately, is there a way to edit .fos files directly? This is driving me nuts! Any help would be much appreciated!
  19. Hey, all. I'm experiencing a weird issue where equipped weapons automatically repair themselves. Whenever I equip a damaged weapon, the condition bar will incrementally fill itself up until it reaches 100%. So far, this only seems to happen when I enter my custom player home, except I never gave it this functionality! This only started happening today, after I tried scripting a weapon repair kit, so I thought maybe one of the scripts had run rampant but it keeps happening even if I revert to a saved copy from before I tried making the repair kit. Also, restarting my computer has no effect. Any idea what might be causing this? In case it helps, I've attached a copy of the .esp I'm using - this being the saved copy I reverted to from before I tried making the repair kit. I overwrote the one that was giving me problems, thinking that would fix the issue, but it didn't. EDIT: There is one weapon in this pack that uses a script to "recharge" itself by repairing the weapon to 100% condition if it gets damaged, but I don't understand how this script got applied to all weapons! When I deleted the script from the .esp entirely, it fixed the issue, but when I added it back under a new Form ID, the problem came back. I'm so confused!
  20. As the title suggests, how do I adjust the size of headwear? I'm asking because the Breathing Mask from Lonesome Road has a huge gap between the mesh and the character's face that bugs me (See attached photo). I tried editing the mesh directly, setting its scale to 0.9 in NifSkope, but the change didn't show up in the game. How can I fix this?
  21. Hey, I was hoping that someone who knows how to use Blender could help me out. I've been tearing my hair out trying to do this myself but it's not working and now I'm just getting frustrated. Anyway, what I want to make is a modified Lil Devil 12.7mm pistol that's Derringer-sized so that I can turn it into a lore-friendly holdout gun. In my head, I see it as a powerful little last-ditch weapon that can only fire maybe one or two shots before it's spent. Here's a mock-up I made to show what I want it to look like: (Backup Image: https://i.imgur.com/8Bg0UYg.jpg) The changes I tried to make are as follows: - Under barrel block removed - Grip enlarged - Trigger enlarged and moved forward - Trigger guard cut down 'Fitz Special' style If anyone who's more proficient with Blender than I am could help me out, I'd really appreciate it!
  22. Can you use the Fallout Mod Manager's BSA Browser tool to root around inside the Data/Fallout - Voices.bsa? You may have to extract the entire archive to your hard drive and play each sound individually to find the ones you want, but if I had to do it, that's the way I'd go about it.
  23. Well, since I can't seem to figure this out, I'll share the alternate solution I employed, in case anyone in the future has the same problem and stumbles across this thread. Instead of making it act like a radio, I wrote an object script to make it function more like an actual jukebox. Here's the script: scn SCPTJukebox short button short checkButtons begin onActivate if IsActionRef player == 1 if (player.GetItemCount Caps001 >= 1) set checkButtons to 1 showMessage MESGJukeboxMENU elseif (player.GetItemCount Caps001 < 1) showMessage MESGJukeboxNOCAPS endif endif end begin GameMode if (checkButtons == 1) set button to getButtonPressed if button > -1 if button == 0 JukeboxREF.playSound3D MUSJukeboxTrack01 player.RemoveItem Caps001 1 elseif button == 1 JukeboxREF.playSound3D MUSJukeboxTrack02 player.RemoveItem Caps001 1 elseif button == 2 JukeboxREF.playSound3D MUSJukeboxTrack03 player.RemoveItem Caps001 1 elseif button == 3 JukeboxREF.playSound3D MUSJukeboxTrack04 player.RemoveItem Caps001 1 elseif button == 4 ;Do nothing endif set checkButtons to 0 endif endif end Basically, what it does is show a menu where you can choose the track, and then it'll deduct one cap from your inventory and play the song. If you have no caps, it'll display a failure message. You'll need to create a message box (Miscellaneous >> Message, in the GECK's Object Window) to function as the track selection menu, with one line of button text per track that you want the jukebox to play. You'll also need to create a new sound (Miscellaneous >> Sound) for each track you want to use. This is a really rough and dirty script that will make the jukebox work but it won't be perfectly realistic. For one thing, if you select another track while one is already playing, it will play the second track anyway, on top of the first. As far as I know, the GECK does not have a 'StopSound' command, so I'm not sure how to proceed further here. If game immersion is super-important to you, you'll just have to be smart about it and not purposely try to break the sequence. I hope this helps somebody!
  24. So I managed to create my own custom radio station and I can hear the music when I select the station on the PipBoy, but if I make a custom vintage radio or jukebox and select my custom station from the drop-down menu, it doesn't work - I only get silence. There's a tutorial thread over on the New Vegas forum that says jukeboxes need to use an OGG file with "_mono" tacked on to the end of the file name but that doesn't work for me. Anyone have any ideas?
  25. Heh, you can probably tell I'm not much of a scripter and that I mostly just copy/paste from pre-existing code. Most of the stuff you pointed out is just me imitating what worked in other scripts I found. As for the "Activate", I'd replace that with the exploding code, once I've found/written it.
×
×
  • Create New...