-
Posts
373 -
Joined
-
Last visited
gigantibyte's Achievements
-
I have been playing Tale of Two Wastelands with most of the mods included in the Wasteland Survival Guide. Of those mods, JIP Companions Command and Control has been a real joy to use. However, when I dismiss a companion, it would be cool if I could 'resettle' them in a new location, instead of being transported back to their original location by JIP CC&C. Basically, I want to turn NPCs into collectibles. For instance, I can use the console to bring the raider NPC 'Lug-Nut' to Goodsprings, remove his factions and default AI packages, and give him the same idle package as a Goodsprings settler. However, he immediately leaves and seems to beeline towards Union Station, presumably so he can get back to the Capitol Wasteland and Marigold station. I'm guessing NPCs have an innate desire to return to the cell they were referenced in, but I'm not sure. So I was thinking of using the GECK to create a dummy orphaned cell where I could spawn in copies NPCs I want to resettle. Then use the console to move the NPC to a location of my choice. But what does an NPC do when it is impossible to return "home". If I teleport them into Goodsprings will they just wander aimlessly around Nevada? Eager to test this myself, but away from my gaming PC atm.
-
Like all the other ESP mods, but for ginseng flora. There's so little of it in the game, and it can be difficult to see among the other plants. Required component of Steeped Aster Tea.
-
Is it possible to create a script that will call up an advanced options menu, within the game? Preferably, I'd like to create a MCM menu that the player can view instantly, rather than Options > MCM > mymenu. But if MCM is not required, that's great too. I'd like to present the player with something that looks like this: The default Message Script can only be pushed so far in presenting the player a variety of options. With my mod Container Magic, I had to create over 100 message menus to cover all the possibilities. With check boxes, dropdowns, and sliders, I could have the options on one page and eliminate the mod's current clunky interface..
-
How to pass data between scripts?
gigantibyte replied to gigantibyte's topic in Fallout 4's Creation Kit and Modders
Casting does seem to be a good alternative to having several different functions tor type conversions, like string(integer). When my mod is finalized, may I post the scripts here for review? The first script is just for adding a tool to inventory, and the other two are fairly short. Initial tests are producing the desired results, but there are any number of things I could be doing wrong. -
How to pass data between scripts?
gigantibyte replied to gigantibyte's topic in Fallout 4's Creation Kit and Modders
Of course that's what's it called! :laugh: Turns out, casting was the last little bit I needed to get the fundamentals of my mod working. In the end, no quasi global exposed variable wannabes were required, but they were useful for debugging, Thanks for the advice! If I ever publish my little mod, a fetch quest might be more interesting than just adding the utility to the player's inventory. -
How to pass data between scripts?
gigantibyte replied to gigantibyte's topic in Fallout 4's Creation Kit and Modders
-
How to pass data between scripts?
gigantibyte posted a topic in Fallout 4's Creation Kit and Modders
In the old days, I'd just create some quest variables which were easy enough to manipulate from other scripts. With Papyrus I'm ignorant. Is there a tutorial on this subject somewhere? Specifically, I'd like to obtain and save an Object Reference in one script, then use that object reference in another script. Also, for debugging purposes, sometimes it would be useful to see the contents (like the form ID) of an object reference variable in a debug.messagebox. Is that possible? -
My mod has a few form lists that contain base ids of various static objects. Originally these lists could be customized by the user in-game, but it was too much of a performance drain. So "edit mode" will be resurrected in the mod's forum section, where players can submit new base IDs to be included in the next version's default sets. In the top forum post, I will list the base IDs already included and update the post with new entries. Is there any way of sending my mod's form list information to a text or log file? I don't mind copying the information form by form, but I'm hoping a better method or tool exists. It's easy enough to view the information in FNVEdit for instance, but the program doesn't appear to feature any copy-to-text options. Ideas? Any help appreciated. Thanks.
-
Perhaps you guys already know this, but I have come to notice a peculiarity with form lists that are modified via scripts. If a player loads a save file after starting the game for the first time, the form list contains the correct data from the last save. However, if the form list is modified through the course of play and then the same save file is loaded again, the form list retains the the newer modified version. Only restarting the game "resets" the form list information back to what it should be. At least, this is what I'm experiencing. Please let me know if there's something on my end that could be causing this behavior. If not, my question is, would I have better results if my script used arrays to store object form information instead of form lists? Edit: To answer my own question, the answer is yes. Arrays work better at storing a dynamic list of forms, and don't exhibit the behaviour as form lists I described above. Dang. I've got a bit of re-scripting to do.
-
Project Nevada Reblance and Economy
gigantibyte replied to coldfirezerox's topic in Fallout New Vegas's Discussion
Do you have the Mod Configuration Menu installed? I don't know much about the internal mechanisms of Project Nevada Rebalance, but there are several settings that can be tweaked. -
Creating a campfire with a healing area effect
gigantibyte replied to gigantibyte's topic in Fallout New Vegas's Discussion
Thanks. I just got back into playing NV because of mods like Tales of Two Wastelands and Project Nevada. I felt an alternative to instant heal stations were needed to go with my hardcore mode. Btw, I think I figured out the mystery additional health points awarded to other actors. It may have had something to do with setting the duration to 0 on the effects. Setting them to 1 second seems to have prevented the spell from awarding more than it should... within a few decimal points at least. -
Creating a campfire with a healing area effect
gigantibyte replied to gigantibyte's topic in Fallout New Vegas's Discussion
To be honest, I'm not a fan of multi-level nests in any case. I reconfigured the script as you suggested, and you can view the new campfire script below, verified as working. I also uploaded the latest version of my mod which contains this here: http://www.nexusmods.com/newvegas/mods/57418/? scn UltmSCampfireScript Ref User ref rActor int MenuChoice int awaitingInput int LightFire Short Burning float timer ref FireSmall01ref ref MPSFireSmall01ref ref Fire420ref ref FXFireSmallFortSummit02ref ref FXSmokeSmall01ref ref Light short doonce int count int rCount int BurnTime int NewHealth int Healing array_var rActorArray Begin OnActivate Set User to GetActionRef If GetActionRef != Player User.Activate Elseif GetActionRef == Player if Burning player.showrecipemenu CampfireRecipes else let awaitingInput := 1 messageboxEX "Scavenger Campire options:|Light campfire|Reclaim wood|Cancel" endif Endif End Begin MenuMode if awaitingInput == 1 Let MenuChoice := GetButtonPressed if MenuChoice == -1 return endif let awaitingInput := -0 if MenuChoice == 0 let LightFire := 1 elseif MenuChoice == 1 player.additem UltmScrapWood UltmSMainQuest.ScrapWoodCount disable markfordelete endif endif end Begin GameMode if LightFire let LightFire := 0 PMS Smoke01 set FireSmall01ref to placeatme FireSmall01 1 set MPSFireSmall01ref to placeatme MPSFireSmall01 1 set Fire420ref to placeatme Fire420 1 set FXFireSmallFortSummit02ref to placeatme FXFireSmallFortSummit02 1 set FXSmokeSmall01ref to placeatme FXSmokeSmall01 1 set Light to placeatme FireBrightOrangeAmb 1 set Burning to 1 let BurnTime := 10 * UltmSMainQuest.ScrapWoodCount endif if Burning && Healing == 0 if timer < BurnTime let timer += GetSecondsPassed if count <= timer let count += 1 ; make sure a full second passes, not a fraction let Healing := 1 endif else sms Smoke01 FireSmall01ref.disable FireSmall01ref.markfordelete MPSFireSmall01ref.Disable MPSFireSmall01ref.MarkForDelete Fire420ref.Disable Fire420ref.MarkForDelete FXFireSmallFortSummit02ref.Disable FXFireSmallFortSummit02ref.MarkForDelete FXSmokeSmall01ref.Disable FXSmokeSmall01ref.MarkForDelete Light.Disable Light.MarkForDelete Disable MarkForDelete set burning to 0 set timer to 0 endif endif if Healing if GetDistance player <= 150 player.CastImmediateOnSelf UltmSCampFireSpell endif ;look for other actors in the same cell let rActorArray := Ar_Construct "array" set rActor to GetFirstRef 200 1 ; * 200 == actors while rActor != 0 if rActor.GetDead || rActor.GetDisabled || rActor.GetIsCreature ; skip else let rActorArray[rCount] := rActor let rCount += 1 endif set rActor to GetNextRef ; * make sure this is within the loop or CTD loop ;heal found actors who are close enough to campfire while rCount > 0 let rCount -=1 let rActor := rActorArray[rCount] if GetDistance rActor <= 150 rActor.CastImmediateOnSelf UltmSCampFireSpell endif loop let Healing := 0 endif end Begin Onload if DoOnce && Burning ;player left the scene before the campire expired FireSmall01ref.disable FireSmall01ref.markfordelete MPSFireSmall01ref.Disable MPSFireSmall01ref.MarkForDelete Fire420ref.Disable Fire420ref.MarkForDelete FXFireSmallFortSummit02ref.Disable FXFireSmallFortSummit02ref.MarkForDelete FXSmokeSmall01ref.Disable FXSmokeSmall01ref.MarkForDelete sms Smoke01 elseif DoOnce == 0 let DoOnce := 1 endif endOne strange result though. An effect magnitude of 10 on limbs now restores 10 units of limb health, on both the player and actors. I had to reduce it down to 1 to get 1 unit of health a second while the campfire is burning. No idea why that happened. -
Creating a campfire with a healing area effect
gigantibyte replied to gigantibyte's topic in Fallout New Vegas's Discussion
@ It seems to be functioning properly. Is there any danger other than not finding the target to heal? -
Creating a campfire with a healing area effect
gigantibyte replied to gigantibyte's topic in Fallout New Vegas's Discussion
Woohoo! I finally got the effect functioning as desired. ^ This is indeed the best solution. Modifying the health values in a controlled fashion through script alone is tricky. So I created a new "spell" that used several effects. There is an inherent effect called 'Restore Health Stimpak' effect, which modifies both health and conditions, but the magnitude value works on different scales for health and limbs. A magnitude of 1 for instance restores 1 unit of health, but only 0.1 units of limb condition. Here's what the "spell" looks like: http://i.imgur.com/7UrXjbU.jpg There's also a separate restore effect for all limbs, but without checks to prevent condition values over 100. I had to add that condition myself for each limb like this: http://i.imgur.com/KGl2IEu.jpg Finally, although 'Restore Health' didn't allow the player's health to go over the maximum, it did set the companion's health over the limit. Since each companion would have a different maximum health value, I had to add a check for this in my script, and "damage" the health back down to normal. Here's the script section for regeneration: if Burning == 1 if timer < BurnTime let timer += GetSecondsPassed if count <= timer let count += 1 ; make sure a full second passes, not a fraction if GetDistance player <= 150 player.CastImmediateOnSelf UltmSCampFireSpell endif set rActor to GetFirstRef 200 1 ; * 200 == actors while rActor != 0 if rActor.GetDead || rActor.GetDisabled || rActor.GetIsCreature ; skip else if GetDistance rActor <= 150 rActor.CastImmediateOnSelf UltmSCampFireSpell if rActor.GetBaseActorValue Health < rActor.GetAV Health rActor.DamageAV Health 1 endif endif endif set rActor to GetNextRef ; * make sure this is within the loop or CTD loop endif elseRestoration is slow, but a distance of 150 seems reasonable in-game. Move too far away, and the regeneration stops. As for the speed, I think I'll leave it the way it is, and wait for comments. At present it takes 100 seconds to fully restore a limb from a condition of 0, give-or-take a few decimal points. Also, my companion ended up with a Health value of 1 over the base. An acceptable result I think. No limbs went over 100 which is great. -
Creating a campfire with a healing area effect
gigantibyte replied to gigantibyte's topic in Fallout New Vegas's Discussion
It doesn't hopefully through the use of a control variable, but maybe my script is configured incorrectly and the scrap wood will never disappear. Could you review the following? scn UltmScrapWoodScript ref User int awaitingInput int MenuChoice int DoOnce Begin onActivate let UltmSMainQuest.ScrapWoodCount := GetRefCount Set User to GetActionRef If GetActionRef != Player User.Activate Elseif GetActionRef == Player let awaitingInput := 1 messageboxEX "What would you like to do?|Assemble wood for campfire|Take|Cancel" endif end Begin MenuMode if awaitingInput == 1 Let MenuChoice := GetButtonPressed if MenuChoice == -1 return endif let awaitingInput := -0 if MenuChoice == 0 if GetRefCount >= 5 let UltmSMainQuest.CamfireRef := placeatme UltmSCampfire 1 let UltmSMainQuest.ScrapWoodCount := GetRefCount disable markfordelete else messageboxEX "Not enough wood" endif elseif MenuChoice == 1 player.additem UltmScrapWood UltmSMainQuest.ScrapWoodCount disable markfordelete endif endif end Begin Onload if DoOnce disable markfordelete else let DoOnce := 1 endif end Right now though, I'm having fun trying modify health and body parts gradually. Using a Setav can make a body part health go over the base of 100, and since Setav affects base, I can't use it on Health. RestoreAV on the other hand seems to restore up to the value given, so I can't do a RestoreAV Heath 1 every second to restore 1 unit of health. Maybe something like this: if (rActor.GetBaseAV Health) > (rActor.GetAV Health) let NewHealth := (rActor.GetAV Health) + 1 rActor.RestoreAV Heath NewHealth endif then repeat for each body part, like PerceptionCondition, but with 100 instead of GetBaseAV. Edit: "let UltmSMainQuest.CamfireRef := placeatme UltmSCampfire 1" above is actually useless. It turns out I didn't need to pass the reference anywhere.