Jump to content

rcoll

Premium Member
  • Posts

    75
  • Joined

  • Last visited

Nexus Mods Profile

About rcoll

Profile Fields

  • Country
    None

rcoll's Achievements

Enthusiast

Enthusiast (6/14)

  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. UPDATE: Turns out IsInDialogueWithPlayer() will not pickup hellos and one-liners either :sweat: It will also return false in a scene with multiple actors when your Dialogue Target starts talking to someone else, so IsInScene() would be the better choice here I think. Actually now that I think about it, hellos and one-liners don't actually need to be picked up for what I'm trying to do anyway. I'll need to do some testing with IsOnScene() though, as the Scene mechanic can be a bit odd at times. For greater context: I'm trying to have the game tell whether a dialogue scene is currently playing, for an issue I'm having with another mod. Player.IsInScene() works when I'm talking to one npc. But in a scene with multiple actors, when the dialogue shifts to npcs talking to eachother, Player.IsInScene() returns False (the initial scene has ended, and the game transitioned to another scene that doesn't include the player) until the player is involved in the conversation again. Ah that would make sense. It looks like the game does clear npc's dialogue targets after about 20-30 seconds, but the player's seems to just stick. Maybe it just takes longer though...Another interesting quirk I've noticed is that the player's target will change to themself when they say random lines in the world (or gasp for air when they run out of breath), meaning it will take even longer to clear.
  2. Aha! It looks like it can check if the player is actually in dialogue with the target (or at all) in a sort of roundabout way by running IsInDialogueWithPlayer() on the player's current dialogue target. Scriptname GetDialogueTargetTestScript extends Quest Actor Property Player Auto Mandatory int MyTimerID = 1 Event OnQuestInit() StartTimer(10, MyTimerID) EndEvent Event OnTimer(int aiTimerID) if (aiTimerID == MyTimerID) debug.messagebox("Player Dialogue Target Returns: " + Player.GetDialogueTarget().GetActorBase().GetName() + ", Is Currently talking to Target: " + Player.GetDialogueTarget().IsInDialogueWithPlayer()) debug.Trace("Player Dialogue Target Returns: " + Player.GetDialogueTarget().GetActorBase().GetName()) StartTimer(10, MyTimerID) endIf EndEvent I have to wonder what the purpose of holding on to the last npc you spoke to would be though. I suppose it could be useful in some situations, but it really should be pointed out on the function's wiki page.
  3. Thanks. I had hoped it wasn't just my install. I couldn't find much info on the function and the creation kit wiki was a bit...minimal. IsInScene() could work, but yeah that isn't ideal. I'll have another comb of the wiki and see if I can find anything. EDIT: Think I might have found something in the IsInDialogueWithPlayer() function. Need to test this.
  4. I've written this short test script. It's basically meant to bring up a message box every 10 seconds that displays the players current dialogue target. The problem is when outside of conversation, instead of returning a Null as I expected, it returns the last person I spoke to. Would anyone mind running this code in their game so I can see if it acts the same way? Scriptname GetDialogueTargetTestScript extends Quest Actor Property Player Auto Mandatory int MyTimerID = 1 Event OnQuestInit() StartTimer(10, MyTimerID) EndEvent Event OnTimer(int aiTimerID) if (aiTimerID == MyTimerID) debug.messagebox("Player Dialogue Target Returns: " + Player.GetDialogueTarget().GetActorBase().GetName()) debug.Trace("Player Dialogue Target Returns: " + Player.GetDialogueTarget().GetActorBase().GetName()) StartTimer(10, MyTimerID) endIf EndEvent
  5. Recently I've been wondering how exactly the special training perks seem to be automagically added to the player when they increase their stats through other means such as bobbleheads or the console. I'd assume that this would be done through the Story Manager SkillIncrease Event being sent whenever the player's stats increase, but that event node seems to have been removed in Fallout 4. Now I'm just thinking: How does the game know when your stats change? How does it track them? I haven't found any documentation that says anything about tracking actor values, so I'm asking the community if they might know anything that I don't.
  6. The Event does get sent in menu mode, just not when these perks are activated it seems. Anyway I ended up just creating 7 perks that set the different stages before the script runs a check to see if their respective Special < 10 and removes them from the player if true. They are working fine. I think it's probably that the training perks aren't really normal perks, since their ranks increase when the player's Special stats increase from Bobbleheads too.
  7. So I have this script: Scriptname MyScript extends Quest Quest Property PerksQuest Auto Event OnInit() StartTimer(3) EndEvent Event OnTimer(int aiTimerID) If aiTimerID == 0 Debug.Notification("Initialising") RegisterForRemoteEvent(PerksQuest, "OnStageSet") EndIf EndEvent Event Quest.OnStageSet(Quest TheQuest, int auiStageID, int auiItemID) Debug.Notification("Event Received") EndEvent The script is meant to detect when the Training Perks change the stage of the PerksQuest when the player unlocks them, and send a "Event Received" Notification. It work perfectly well, when the player is not in menu mode. When they are in a menu, the event just doesn't seem to fire. What is really strange though, is that this behaviour is exclusive to the Training Perks - If I create a new perk which also changes the stage of PerksQuest, the event is received and the notification shows when in menu mode. What is it about the Special Perks that stops this event being sent when they are unlocked while in menu mode?
  8. So, I've got a working skill system in this project that I've working on for a while. Player levels up, gets skill points, spends them. The problem I'm having is that removing the matching perks from the level up menu(Rifleman, Gunslinger etc) and replacing them with a new perk turns the swf into a little white ghost boy. Nothing I've tried has been able to fix this. The animation seems to be tied to the perk's FormID, so won't work with any other one. Really if anyone has any knowledge of flash they could spare I would really appreciate it. Also while I'm here, I was wondering what kind of perk system might be better: One that levels forever, with multiple ranks on most perks like we have now. Or one with a level cap of about 50, with most perks having only a single rank, similar to previous games.
  9. It isn't that. I've set the Rifleman perks to "Hidden" and "Unplayable" and replaced them with a new perk with the same conditions. It has only one rank and no "Next Perk"selected. I tried extracting the Rifleman swf perkclip_4a0b6.swf(4a0b6 is Rifleman01's formID), changing it's name to the FormID of the new perk and selecting it in the creation kit. But that only makes the animation appear when it's highlighted in the Pipboy's Perks tab with the Perk Chart still showing it as a grey vaultboy. It seems to be an issue with defining sprites in the levelupmenu swf.
  10. Basically hit a wall here. Can't figure out how replace a perk in the perk chart without it becoming a little grey ghost vault boy. Can anyone help with this? Is it even possible?
  11. In my experience it's best to have NMM opened before you download a mod. When it's finished you need to go into NMM and click on the mod tab. Then just go to the mod, right click it and select "Install and activate". After it's finished installing make sure it's box is ticked in the plugin tab. If it isn't ticked, tick it and you're ready to go!
  12. Hi. Sorry if this seems like a blatant self advertisement(I suppose it kinda is though lol) but, I've actually fixed this in my mod, BS Defence, just a few days ago.
  13. You're very welcome. I hope that actually works though because I didn't test it at all :)
  14. I could help you with that. You could add it as a starting perk. First of all, in case you're new to all of this, in the Creation Kit click on the File tab and then on Data. Double click on Fallout 4.esm. Make sure you have no active file selected (because you'll be making a new plugin) and click Ok. Ok now, when that's loaded up, create a new perk. Tick the ​Hidden ​and ​Playable ​boxes.​ Add a new perk entry, set the entry point as "Mod Incoming Stagger" and set the function to "Multiply" and set that to 0. That's your perk done, now you just have to add it to your guy without conflicting with other mods. The best way to do this is to do it through a quest that fires up a script that adds it. It's really simple don't worry. Create a new quest, tick the "Start Game Enabled" "Run Once" boxes and click ok. Open it again and go to the scripts tab. Click on Add and then on [New Script]. Name it "MyNoStaggerScript" (Or Whatever you want, but it HAS to be the same as what it is in the first line of the script). Now, right click on the script and click on "Edit Source". Underneath the first line, you can just copy and paste what I've written below and it should work. Perk Property MyNoStaggerPerk Auto Event OnInit() Game.GetPlayer().AddPerk(MyNoStaggerPerk) EndEvent That's the end of the script. Now just compile it and save it. Next you'll want to right click on the script and select "Edit Properties". Click on the perk property and then "Edit Value". Select your perk from the dropdown list and click ok. Now just click ok on the quest and save your new plugin! That should be good for what you want :smile:
  15. Have you spoken to that guy sitting on the pavement in Freeside? Usually you can't understand what he's trying to say at all. But if you have low Intelligence the conversation becomes a high class gentlemanly exchange. It's hilarious haha.
×
×
  • Create New...