Jump to content

SKKmods

Premium Member
  • Posts

    2844
  • Joined

  • Last visited

Nexus Mods Profile

3 Followers

About SKKmods

Profile Fields

  • Website URL
    https://skkmods.com
  • Discord ID
    SKK50#0625
  • Country
    United Kingdom
  • Currently Playing
    Creation Kit
  • Favourite Game
    Fallout 4

Recent Profile Visitors

185015 profile views

SKKmods's Achievements

Grand Master

Grand Master (14/14)

34

Reputation

  1. TRNS transforms adjust a mesh XYZ position and zoom in UI menus and inventory. They do not affect objects in the world.
  2. Well yes you can do it that way if you are mad, but alias scripts calling alias scripts is not best practice: ReferenceAlias[] myArray = (Alias_otherReferenceAlias as otherReferenceAliasScriptName).myArray Shared data and functions is exactly what a central quest attached script is for.
  3. Define and manage the array on a central quest attached script and get the alias scripts to access it via: ReferenceAlias[] myArray = (Self.GetOwningQuest() as myQuestScriptName).myArray OR even more elegant is to put all the logic in the central quest attached script function and call it from the alias scripts: (Self.GetOwningQuest() as myQuestScriptName).myFunction(thisReferenceAlias = Self)
  4. What sort of move ... what is initiating or triggering it for a script to detect ? e.g. for a workshop object there is Event OnWorkshopObjectMoved() for other objects there is ... nothing.
  5. Lock a script with long Utility.Wait() or While loops that use framerate bound functions and it will miss events which seem to queue for a while and are then cleared or lost. Or the world state has moved on and the event is no longer relevant. Best practice is to never mix latent functions and long running loops with events, put them in seperate scripts and never have a problem. Read up on LATENT and FRAME BOUND script functions to learn more.
  6. Putting Utility.Wait into event driven scripts it really bad, the script can miss events whilst frozen. You need to read up on long running latent functions locking scipts. Before getting all clever with arrays it looks like you need to get your basic functions and events working with a single object.
  7. Of course the script will not receive the event because you changed: Self.RegisterForRemoteEvent(thisTree, "OnTranslationComplete") to TreesArray.RegisterForRemoteEvent(TreesArray, "OnTranslationComplete") Be interesting to understand WHY you changed Self to the ObjectReferences which receive the native events anyway, but probably dont have a script attached to process them. Also there is no need for two seperate loops through the array, just do it once; Function GetSh1tDone() Int i = 0 While i < TreesArray.Length ObjectReference thisTree = TreesArray [ i ] ; spaces added for the nexus editor which thinks its markup Self.RegisterForRemoteEvent(thisTree, "OnTranslationComplete") thisTree.TranslateTo(TreeEndPosition.GetPositionX(), TreeEndPosition.GetPositionY(), TreeEndPosition.GetPositionZ(), 0.0, 0.0, 0.0, moveSpeed) i += 1 EndWhile EndFunction
  8. How does the (While True) loop ever get broken/stop ? That looks like a guaranteed stackdump bfore worrying about anything else. You should be using events like OnTranslationComplete() to reset, not nasty while loops. If your new to this, the format for a non object attached script would be; Self.RegisterForRemoteEvent(thisTree, "OnTranslationComplete") and Event ObjectReference.OnTranslationComplete(ObjectReference akSender)
  9. MoveTo() may not fully complete before EvaluatePackage() If the actor is supposed to be 3d loaded (cant remember if EvaluatePackage actually works with unloaded 3d) you can add; Bob.Moveto(BobHouse) Bob.WaitFor3dLoad() (Bob as Actor).EvaluatePackage()
  10. Sorry, but trying to look at that lot just hurts my eyes. 99% of the time quest not starting because it has non optiopnal aliases that are failing to fill, so check that.
  11. If you have just created the alias you need to save it, save the quest, save the ESP then open again. Also if your trying to use "defultrefonadditem that will start my quest." to start this quest it wont work .... as the alias will not be filled and script active until the quest is started.
  12. My observations are: (a) Faction or actor hostility trumps any nutral/friend/ally faction relation. Which is why Aggression=2/3 and Aggro Radius on nutrals is toxic cancer to try manage/override for my random spawning. (b) An actor being hostile to a target via FactionA is SOMETIMES transitive to other actors in factions they are a member of Faction B, C, D typically when there is a trigger event like crime/combat rather than passive. SetCrimeFaction() are favorite for this. I have not run any tests on the actual conditions, so get going with Actor.IsHostileToActor() and Actor.GetFactionReaction() and let us know.
  13. Start game enabled runs the quest when it first loads into a game. Otherwise another script must start it via StartQuest or SetStage. Run on start automatically runs that quest stage script fragment after the quest starts and all aliases fill. Exactly the same as a quest attached script OnQuetInit() event. If a quest is starting and you are not seeing a startup SWF, likely it doesnt have one and its dialog is triggering another quest via a setstage fragment that does have SWF UI. This is often done by the Dialogue* quests.
  14. I believe the author of this https://www.nexusmods.com/starfield/mods/10682 looked into it and found no native script functions that would do it.
  15. Captive faction will not supersede Aggression=VeryAggressive or AggroRadius AI package which attack neutrals. If you do not control or hack the ActorBase form you will need to: (a) thisActor.SetValue(pAggression, 0 or 1) (b) Put them in a high priority quest alias with an AI package that does not have Aggro Radius checked. (c) Remove from ALL base game factions and thisActor.AddToFaction(pCaptiveFaction) "friends with everyone" and hope if the opponent is from a mod that the author has respected CaptiveFaction with their own factions (most dont seem to know or think about it). This is the basis of my "Protect Innocents" setting for many random spawning solutions.
×
×
  • Create New...