Jump to content

Jojash

Premium Member
  • Posts

    226
  • Joined

  • Last visited

Everything posted by Jojash

  1. This actually sounds like a pretty good project to get started with scripting - since you said you have experience with F3, you might find this to be useful: https://www.creationkit.com/fallout4/index.php?title=Differences_from_Previous_Scripting. Cipscis also has many good Skyrim scripting tutorials on his site - while there are differences between Skyrim and Fallout 4 they are similar enough that many of these tutorials are still very helpful. http://www.cipscis.com/skyrim/tutorials/beginners.aspx After that, this specifically tackles menu creation in Papyrus - again it's for Skyrim, but should be transferable to Fallout 4. https://www.creationkit.com/index.php?title=Options_Menu The best thing to do though is to try writing out your script and once you have errors in it, to work from there. It can be hard to know where to start with such a complete change from F3/NV's language to Papyrus, but once you start going you'll see how similar the two languages really are and that ought to make things a bit easier. If the links I've provided seem too daunting, try just looking at some vanilla scripts to get a general understanding of Papyrus, additionally you can try having a look at scripts that are closely related to what you're doing. Once you have some understanding of the language you can use this to find functions you'll need for your own scripts: https://www.creationkit.com/fallout4/index.php?title=Category:Papyrus. Good luck! :)
  2. So lately I've been playing around with making some UI elements for the HUD, which has been going pretty well except that these elements seem somewhat sluggish when I re-send messages to them (via HUDFramework). To give an example, I have an icon that pops up when the player presses a key and should then disappear if the player presses that key again. To achieve this I simply send a message to said icon and check its visibility - on the initial keypress (when the message is first sent) the icon appears promptly. However, upon subsequent keypresses there seems to be a considerable delay before the icon will disappear and reappear. Is there any way to fix this? Here's my Actionscript: Thanks in advance! :smile:
  3. Thank you very much for that article, it was extremely helpful! I've managed to fill up the owner struct correctly now (I think my inital hypothesis was actually returning a glove, rather than a weapon, switched to using aksource as the owner instead of the actor). Additionally I'm using GetAttackDamage, rather than GetDamageTypes, since the types aren't relevant for my purpose and everything seems to be working now! :)
  4. Would anyone be able to explain to me how InstanceData, Owners and DamageTypeInfo works? My best understanding currently is that I want to fill an owner with an instance of a weapon (for the purposes of use with GetDamageTypes). The best way to do this (I think) is to use GetInstanceOwner(35) with whatever actor I'm using (or possibly to use GetWornItem?) - I'm trying to use this within an onHit block, so I've been using "akAggressor" as my actor. Theoretically, I'll fill the Owner with whatever is in the aggressor's right hand. Now I'm pretty sure it doesn't work that way since when trying to do that I cannot compile. Anyway, here are my problem lines, Thanks in advance! :smile:
  5. Weird, oh well, thanks again - this is absolutely one of those things I would just never have even thought of!
  6. Thanks a ton! Switched from modvalue to setvalue (usually I'm apprehensive about using setvalue - it's a holdout habit from FNV modding) and apparently that now works, seems odd to me - do you know why it works that way? Anyway, thanks again, this has really been bugging me! :)
  7. Recently I've been attempting to modify aggression, confidence and assistance via script, however, using modvalue seems not to work, I've also tried to modify these values via a spell added to refaliases that my actors are attached to with similarly little luck. Is it possible to modify these values without touching them on the actor's form in the CK? Thanks in advance!
  8. Does anyone know where I might find a list of the strings used for OnControlDown? I found the one for Skyrim, but since that doesn't have a power attack/grenade hotkey it's unsuitable for my purposes. Thanks in advance! :)
  9. To talk about modpacks for a moment, no Moddrop talk specifically, I can't think of a good way to implement them. What a lot of us mod authors get out of modding is the feedback and interaction with our userbases. A modpack, in any form - hosted on the Nexus, ModDB, ModDrop, you name it - would cut out that communication, or worse complicate it. For example, if a mod in a pack is suspected of causing problems within that pack, many users may go to that mod author's page and complain to them about it, when, in reality, it is not that author's responsibility to ensure compatibility within a pack. Regardless, users will bombard them with requests to do something that, firstly, isn't their responsibility and secondly may not even help. On the other hand, should the pack work exactly as intended, there is still a very real problem in that people wouldn't be leaving comments on these mod authors' pages - even if they wanted to. Assuming that the page itself has a comment section - they comment there, where the authors of the mods can't see it, or if they do see it, won't know who it is addressed to. Alternatively, were we to cut out a comments section on a pack in an effort to encourage direct communication with the authors, that actually only leaves the mod user with three options. 1, Figure out which mods in the pack they're enjoying (this could be out of hundreds of mods), go to those authors' pages and leave a comment (this seems to me to be the least likely scenario). 2, Leave comments on every author's page saying that they're enjoying the pack - this is a little meaningless since the author doesn't even know if you are enjoying their mod in particular. 3, Leave no comments - this requires the least work and is by far the most likely. Should modpacks be implemented regardless and gain popularity, modding then enters a stage of exclusivity, wherein modpacks are the only things being downloaded because they're easier and more convenient. This (I'd imagine) would make modding less attractive to newer modders who won't immediately be able to gain the popularity that a modpack can. One of the biggest things I like about the Nexus is that, no matter who you are or what you upload, your mod gets time on the front page where people can see it - modpacks may well erase that advantage. "Is this new mod in a pack? No? Not interested, moving on". On the face of it, modpacks are a great idea - a bundle of bugfree compatible mods that don't take up too much space in your LO, I don't think I could find a single person who, when presented with that idea would have any problems with it. The issues come from when you start to examine the cost of such a thing for the mod authors, what we put into these mods and what we expect out of them. Modpacks are too impersonal. The convenience that these packs would offer is the very same reason why many authors will not want or accept them. Of course, if anyone can think of a way to cut out those problems from packs, please feel free to say - I honestly cannot conceive of a way to do it without cutting out interaction - if you can, I'd be more than happy to listen.
  10. That's actually a much better idea than what I suggested, you should do that instead.
  11. Yes, that would be very simple. You'll need to create an activator that will trigger the script using this function: https://www.creationkit.com/fallout4/index.php?title=OnTriggerEnter_-_ObjectReference After that it's just a simple matter of using these functions: https://www.creationkit.com/fallout4/index.php?title=GetPositionZ_-_ObjectReference https://www.creationkit.com/fallout4/index.php?title=SetPosition_-_ObjectReference https://www.creationkit.com/fallout4/index.php?title=StartTimer_-_ScriptObject https://www.creationkit.com/fallout4/index.php?title=OnTimer_-_ScriptObject You'll probably end up with something that looks like this: So you'd attach that script to an activator that the player would walk through to trigger the rising water.
  12. The cripple legendary effect is a little more complex than it seems. From what I can tell, that effect actually gives your player a perk and that perk is what does all the limb damage. Take a look at the "ModLegendaryCommonPerk" perk and the "mod_Legendary_Weapon_DamageLimb" object mod in the CK, these show how it all works. To achieve a similar effect what you'll want to do is create your own perk with its own "Mod Outgoing Limb Damage" entry point. To get it to always cripple, you'll want to put the function part of the perk to "set value" and the number to 100. There will still be some enemies you cannot cripple (for example, I'm pretty sure you can't cripple any parts of a Mirelurk Queen) but that ought to work for you - although it won't distinguish between shots in and out of VATS. To be fair though, I can't think of a way to do that anyway). You may also need to play around with the value in your perk - 100 is the amount of health any given limb will have, but I don't know if you'll need to also factor in damage resistances - so if it doesn't immediately work, that's the most likely reason why. Of course if you find that limbs are not taking any damage at all, you might need to try something different. Good luck!
  13. Unfortunately, to my knowledge, you can't remove or add packages via scripts anymore. What you can do is set conditions for those packages and then call evaluatePackage() on your NPC so they know which one they should be using. So in your specific example you'd add one condition to your StayAtSelf package which would check if the quest is not at the stage where they'd patrol. You'd also add a condition to your patrol package to check if the quest is at the patrol stage. Then when your quest is set to the patrol stage, in that stage's fragment you'd run something like: MyNPC.EvaluatePackage().
  14. If you mean that you put it somewhere in a settlement and can't find it, you might want to try using this in the future: http://www.nexusmods.com/fallout4/mods/10271/? Otherwise as Mighty Zog said, your best bet is the console.
  15. Recently I tried to make a scene for a quest that I'm working on. In the scene two NPCs are having an argument and at the end of it one of them leaves. As far as I can tell, everything is set up correctly - all my aliases are pointing to the right references, all my actors have the appropriate voice types and all my quests are running. Despite that, no matter what I do, the scene refuses to start. It's as though Start() simply isn't doing anything. I've tried starting the scene in a couple of ways - either from a fragment within the quest containing the scene itself or from within the activator the player walks through to advance said quest to no avail. To try and narrow down what might be causing the issue I attached a papyrus fragment to Phase 1 of the scene that would display a notification as soon as the scene started. Since the notification never appeared I can only assume that the scene is not being started, which confuses me since I've verified that the Start() command is indeed running via the same method. I'm at a loss here, my best guess is that my aliases might be pointing to the wrong people, but I know that can't be the case since the quest uses them as objective markers too and said markers appear over the right NPCs. Anyway, here are some screenshots of the scene/quest/etc: Thanks in advance! :smile: EDIT: Deleting and remaking the quest from scratch has fixed the problem. I have no idea why that worked though, and it's not a viable solution should it happen again with a more complex quest. Anyway, thought I'd put this here on the off-chance someone else was having this kind of problem and like me was at the end of their rope. :)
  16. I take it you've attached this script to both doors? Your logic is sound, the only thing suspect about the whole thing is GetIsReference - when you're comparing a dynamic reference (rDoor) to a persistent reference (D1Ref or D2Ref), you don't need that function - you can simply use a comparator (==, !=, <, >,). The other thing is to make sure that you've actually set up the persistent references for both your ghouls and your doors. The other thing I notice about your script is that this block: (if DoorCount == 1) Activate endifIs redundant since you activated your door when you disabled the ghouls. Hope this helps!
  17. Yes, I tested in game before I posted (probably should've said so and provided some screenshots, my mistake!) - as far as I can tell it's as though sections of the worldspace have LOD whilst others do not. No, my worldspace is not bigger than Skyrim, it's probably a little bit smaller than Dawnstar for reference. Anyway, I guess I'll try again from scratch and see if that'll work. EDIT: Looks like I goofed up with the lodsettings file, how I managed that is beyond me, but more or less the issue appears resolved. Thanks for the help, if I hadn't followed your advice and looked back at the video, I wouldn't have gotten this done! :)
  18. Hello, recently I've been playing around with a custom worldpsace, which has been all well and good, until I've come to the LOD generation portion of this experiment. I've followed this video: https://www.youtube.com/watch?v=kB2rqH7Ytko but I have met with little success. I suspect this is to do with the size of my worldspace and the sizes of the landmasses within it, essentially I've created an archipelago with each island being no larger than a couple of cells or so. Therefore my worldspace is mostly water (if that makes any difference; which I suspect it does). In Oscape when attempting to generate LOD, I only seem to have small pockets of water generated, while the rest of the map remains black, even after adjusting the height of the water. Here's a picture to more clearly illustrate what I mean: Any help would be greatly appreciated! :)
  19. Ah! Thank you so much, that was indeed the problem, by following this information I have been able to resolve the issue!
  20. So, I've tried to change the texture on a static object, which is all well and good, looks fine in-game, but since it's an object that is used for flooring (WHIntWoodFloorMid01), it makes a sound when the player walks on it. Originally this item was textured to look like wood, but I've switched it over to a stone texture, unfortunately it still sounds like wood when you walk/run/jump on it. As far as I can tell this is to do with the material type that is assigned to the static, but I can't seem to find any way of changing that. Any help would be greatly appreciated! :)
  21. Would you mind clarifying what you mean by that? Do you mean pointing to the alias used in the "FollowerDialogue" quest? Or is that a specific type of alias? Yes I did mean the generic follower alias, but in retrospect the Invisible Door idea is a better solution as it will work with custom followers too.(I think). 1. Add a door anywhere in your custom cell and create an object ref in your script that points to it. (MyDoor) 2. Link the door via the teleport tab to anywhere. 3. Position the teleport marker and then finalise your mesh. Hopefully you'll see a green triangle. 4. In your script add the lines.. Utility.wait(1) MyDoor.disable() For your return script you'll need to do the opposite but with no wait... MyDoor.Enable() It should work in theory. I know with Ben I had the opposite problem, whereby I needed to stop followers following when the player entered a dream state. In my case I simply removed the teleport marker an re finalised the mesh. You see, my point, is that a follower should be able to follow from anywhere provided there is a marker and mesh present. Hope this helps The door idea's a good one, but I've actually gotten it to work by pointing to the alias used in the DialogueFollower quest. The only reason I'm a little wary of using a door over the alias method is that I've seen a few videos where people will travel into a cave/building/whatever and none of their followers appear with them. Perhaps it's those specific places, rather than an issue in general but regardless. If I run into any issues later, I'll switch over to the door method. Anyway, here's the script I'm using now in case it's of any interest: Thanks again for all the help! :)
  22. Would you mind clarifying what you mean by that? Do you mean pointing to the alias used in the "FollowerDialogue" quest? Or is that a specific type of alias?
  23. I have not, I'd assumed that NPCs would teleport regardless since using MoveTo as a console command will bring them in. Thank you very much for this answer! :smile: EDIT: Added in Navmesh, but this made no difference. To make sure that I hadn't done something incorrectly, I changed the location I was teleporting to to somewhere I know is navmeshed correctly (Proudspire Manor) - my follower still didn't teleport with me. :\
  24. Hello, recently I got it into my head that I'd like to make a house that could be teleported to/from via the use of a ring. From there I created this script and attached it to my custom ring: Scriptname PocketDimensionHomeRingScript extends ObjectReference ObjectReference Property PlayerLocation Auto ObjectReference Property HomeMarker Auto Armor Property TeleportRing Auto Location Property PocketDimensionHomeLocation Auto EVENT OnEquipped(Actor akActor) if (PocketDimensionHomeLocation == akActor.GetCurrentLocation()) akActor.MoveTo(PlayerLocation) else PlayerLocation.MoveTo(AkActor) akActor.MoveTo(HomeMarker) endif akActor.UnequipItem(TeleportRing, False, True) EndEvent Which works fine for moving the player around, but leaves my followers behind. I've tried a lot of different things to move the followers along with the player, from cloaks to explosions but to no avail. I get the feeling that I must be missing something simple. Regardless, any help would be greatly appreciated! :)
  25. When the player activates the object in question the lines underneath "begin onActivate" are executed. This sets DoOnce to 1. Now, when the GameMode block runs, DoOnce has been set to 1, so a message (presumably the menu) is displayed. DoOnce is then set to 2. The next time the GameMode block runs, (since it cannot progress further down the script due to the elseif statement) DoOnce has been set to 2, therefore Button is set to GetButtonPressed (this allows the menu to detect which options the player selects). From there, Button will = -1 because the player has not selected an option. When the player selects the first option Button will be 0. Whenever the player selects any option DoOnce is set to 3. If the player selects the first option DoOnce is not called again. However, if they select the second option DoOnce is reset to zero and the script can restart anew. So essentially DoOnce dictates which stage the script is in. When DoOnce = 0, the player has not yet activated this object. When DoOnce = 1, the player has activated this object but the menu has not appeared. When DoOnce = 2, the menu has appeared but the player has not yet selected an option. Finally, when DoOnce = 3, the player has chosen an option presented by the menu and the menu has closed.
×
×
  • Create New...