-
Posts
1814 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Posts posted by rickerhk
-
-
Make sure the box on the NPC 'Can be all races' is ticked.
You may need to start a new game to test this afterward because I've found this setting to be baked in the save.
Make sure you are running the function on the REFiD:
MyNPCREF.Matchrace Player
This is the the way Dad's race is matched to the player in FO3, so you're on the right track.
-
You might ask here: https://www.nexusmods.com/newvegas/mods/58277
You could try this syntax:SetEventHandler "OnCrosshairOn" "first"::vMOLacey AScript
or
SetEventHandler "OnCrosshairOn" AScript "first"::vMOLacey
-
I'm assuming you made an activator using the static model. On the script for the door, in the 'On Activate' block, Activate another container in the Cell, or a remote cell. Do not activate the door itself.
The Footlocker01Empty container works well for remote containers.
This is an example of the 'on activate' block of your dlc04shackcabinet01door:
BEGIN ONActivate Player
MYRemoteContainerREF.Activate Player
END
-
What I do is place an Xmarker in the Geck somewhere, with a RefID. Then when I need it, I move the xmarker to where I need it, wait a couple frames, then do whatever I need with it. When done, I just leave it where it is till I need it again. An Xmarker placed in the Geck is persistent so it will always be available. A spawned xmarker won't be persistent. I think this may be where the CTD are coming from.
MyXMarkerREF.MoveTo Ralph ;then wait a couple frames MyXMarkerREF.Playsound3D TSo
You know you can get the same effect by just doing this:Ralph.Playsound3d TSo
-
In our mod we have a computer named Maria. The computer itself is a Talking Activator with this script on it (simplified here):
scn PBrazilPQSQ1MariaScript
BEGIN OnActivate
SetTalkingActivatorActor PBrazilPQSQ1MariaREF
Activate
END
PBrazilPQSQ1MariaREF is an NPC in another cell. All the dialog has the condition GetIsID on the NPC object. The 'No low level processing' box on the NPC is unchecked.
Also, the 'voicetype' in the TA is left as 'NONE'
We have four of this type of TA setup.
-
PlaceAtme is not immediate. So I would skip a few frames. Or loop to check if 'Bob' is valid (not null).
-
Try putting a script using 'StartConversation' on the NPC. I believe this will bypass those animations, if I recall correctly.
scn MyNPCScript
BEGIN OnActivate
if (GetActionREF == Player)
StartConversation Player. GREETING
endif
END
-
I would start with changing the line:
Begin OnTrigger Player
to
Begin OnTriggerEnter Player
the 'OnTrigger' block type runs every frame that the player is in the trigger. So the part after the 'else' is running every frame. May be a problem if 'enableplayercontrols' runs every frame.'ONTriggerEnter' block type only runs one frame when entered by the player -
Try making it a dummy NMC.esm instead of esp. With the esm bit set.
-
Also, on the NPC object, un-tick the box 'no low-level processing' if they need to follow you through portals consistently.
-
Performing a 'ResetAI' on the actor will also force it to evaluate its speed.
-
Did you flag the dead NPC object as a quest item so they don't get cleaned up on the cell reset?
-
Try this instead ... http://geck.bethsoft.com/index.php?title=SetQuestDelay
I managed to accomplish what I need by using the GetSecondsPassed and adjusting it to the time scale. This worked out better since it doesn't have to run faster for people that use the default timescale of 30, and it's more accurate since the script is not always processed exactly every 5 seconds (the default process time). To help debug the script, I set some stuff to output things to the console and noticed the script processing time would vary by up to 0.1 seconds, which isn't much, but over time would add up to a significant error. The only down side is that more in-game time will pass for people with higher timescales before things update.
You should probably leave fQuestDelayTime alone. That set's the default quest delay for every quest in the game.
I can't find the page on the GECK Wiki where it gave an example using fQuestDelayTime, but the link it gave for help on the fQuestDelayTime pointed to the Elder Scrolls Construction Set Wiki, which says:
fQuestDelayTime is a special float variable used by quest scripts to determine how often the script should run.
It must be declared in each quest script that you want to use it in, and can be set like any other variable (set fQuestDelayTime to .01).
The variable unit is in seconds, so if you set it to 1 the script will run once every second, 0.5 will run twice a second (every half second), etc. but will never run more than once a frame.
If fQuestDelayTime is 0 (or undeclared) the script will run every 5 seconds (default value).
It appears this is no longer used in the GECK and is replaced by the SetQuestDelay instead.
I misread it and thought it was a gamesetting rather than a quest variable. I've never seen that used in FO3 or FNV. I've always used setquestdelay.
On this page: https://geck.technodeep.net/index.php/Special_Variables
-
You should probably leave fQuestDelayTime alone. That set's the default quest delay for every quest in the game.
-
You realize that this NPC script runs every frame, so you are applying the script package 60 times per second if you are running at 60fps and probably locking up the AI.
Try:
If (HasBeenHired == 1)
if (ALAmicusREF.GetIsCurrentPackage ALAmicusSandBox == 1)
ALAmicusREF.removescriptpackage ALAmicusSandBox
endif
endif
If (HasBeenHired == 0)
if (ALAmicusREF.GetIsCurrentPackage ALAmicusSandBox == 0)
ALAmicusREF.addscriptpackage ALAmicusSandBox
endif
endif
Also the armor is being added every frame. Put another 'DoOnce2' on that section, or some other check, like 'GetItemCount'
Edit: And what madmongo said - it's better to avoid scriptpackages except for very short times - when the player is not going to be exiting the cell where the NPC is located. For the sandbox package, it will be ok, but for the follower packages, you should place them on the NPC object.
-
You should just turn off logging unless you are using it during development of your own mod.
-
I actually tested this little bit the other day - actors ('no low level processing' flag unchecked) that have a follow package targeting the player are 'dragged through' the portal on just the player's activation of the portal. So you have to change their package to wait outside, in the same frame (or before) the player activates the portal.
I'm assuming you don't want to put a script on every door in the game :)
It sounds simple but it will probably get complicated fast. The only starting point at the moment that I can think of is a script on a token in the player's inventory, with 'GetcrosshairREF' as the basis of a script to detect when the player is targeting a portal, and changing the followers package based on that. -
On the NPC/Creature object, the first package from the top of the list, that has true conditions, will be the one in effect. Actors evaluate their packages periodically - every 15 seconds? If no packages have true conditions then the actor will just stand there by default, unless they are in combat. So if you want a package to take effect right away, set the conditions for the package and do the evp function on the actor - ActorREF.evp - http://geck.bethsoft.com/index.php?title=EvaluatePackage.
Removescriptpackage is only used for addscriptpackage like you found out. -
Does your actor effect record have an area and a small duration?
This is my Actor effect record: https://dl.dropboxusercontent.com/u/55759080/Nexus/ActorEffect.JPG
From what I can tell, your scripts should work.
The if/else structure is just an optimization to avoid checking an expression for zero.
if (GetInFaction ProjectBrazilVault18EnclavePatriot == 1)
else
return
endif
is the same as:
if (GetInFaction ProjectBrazilVault18EnclavePatriot == 1)
;do nothing
else
return
endif
and it's faster than:
if (GetInFaction ProjectBrazilVault18EnclavePatriot == 0)
return
endif
-
If you don't want to use NVSE, use a 'touch' spell (actor effect) with a large radius like 5000 or so, that also ignores LOS. That way the scripteffectstart block runs on every actor and you can do stuff to them. You have a quest script that bouces the spell off the player every few seconds to scan the cell. I call them 'radar' effects. If you want to see examples I have on in my wendy gilbert mod RHKWendyCBRadarEffect, and I'm using them in Project Brazil - PBrazilEncSTVRadarEffect. set the flags on the base effect to self, touch, no mag, painless, no hit effect. On the actor effect, 'force touch explode' ignore LOS'.
scn PBrazilCH1STVRadarEffectScript
BEGIN ScripteffectStart
if (IsActor)
if (GetDead) || (GetDisabled)
return
else
if (GetInFaction ProjectBrazilVault18EnclavePatriot == 1)
else
return
endif
if (GetIsReference PlayerREF == 1)
return
endif
set PBrazilCH1Save.iCH1PatriotAlive to PBrazilCH1Save.iCH1PatriotAlive + 1
endif
endif
END
scn PBrazilCH1SaveQuestScript
short iCH1PatriotAlive ;roll call of live ENC during battle
short iEnableRadar
short iCH1STVBattleDone
short iCH1BraggRevive ;flag to revive Bragg once during STV (if no limbs missing)
float iCH1BraggReviveTimer
short iCH1HYDVSecControl ;package flag for remaining V-sec to follow player to the atrium
short iFailOnce
;Quest delay 5 seconds
;Bounce a touch spell off the player to detect Enclave that are alive. The Base Effect script is PBrazilCH1STVRadarEffectScript
BEGIN GameMode
if (iEnableRadar == 1)
if (Player.IsSpellTarget PBrazilEncSTVRadarEffect == 1)
else
set iCH1PatriotAlive to 0
Player.cios PBrazilEncSTVRadarEffect
set iEnableRadar to 2
endif
elseif (iEnableRadar == 2) ;will be here on the next loop in 5 seconds
if (iCH1PatriotAlive) || (iCH1BraggRevive < 4) ;Not done with battle, Bragg not dead-dead
set iEnableRadar to 1
else
set iCH1STVBattleDone to 1 ;No ENC responded
endif
endif
END
-
Anything in the meshes/texures folder will also load in the Geck.
If you have a lot of hi rez textures, the Geck could run out of RAM when loading that area. Set the LAA bit on Geck.exe using NTCore: http://ntcore.com/4gb_patch.php
Also, a modded mesh could also be causing the geck to crash.
-
I read somewhere that Oblivion Lip files will work in place of Skyrim files using that method as well. (Added to the "Creating Mods" article.)
-Dubious-
You can use the old Oblivion construction kit to make lip files, but the lip movement is better if you use the Skyrim file.
-
If you have Skyrim, you can do it this way: http://www.nexusmods.com/newvegas/mods/48239/?
-
If you want to regenerate health, you use "restoreactorvalue". Modactorvalue will increase your permanent health value but not heal the damage. http://geck.bethsoft.com/index.php?title=RestoreActorValue
You put this script on the armor itself and don't bother with object effects.
scn HealthRegenerateScript
ref rContainer
short iMaxHealth
short iCurrentHealth
float fRegenInterval
BEGIN GameMode
if (fRegenInterval > 0)
set fRegenInterval to fRegenInterval - GetSecondsPassed
else
set rContainer to GetContainer ;get the actor wearing this armor
if (rContainer) && (rContainer == Player)
set iMaxHealth to GetPermanentActorValue Health
set iCurrentHealth to GetActorValue Health
if (iCurrentHealth < iMaxHealth)
RestoreActorValue Health 10
set fRegenInterval to 1 ;these two values mean 10 HP per second
endif
endif
endif
END
MatchRace Command not working?
in Discussion
Posted
Yeah that's odd.
It may have something to do with Facegen textures: Export NPC Face Textures - GECK (geckwiki.com)
You might try setting bLoadFaceGenHeadEGTFiles=1 in your fallout.ini before going through all the trouble of exporting facegen textures though.