Jump to content

corpseletter

Premium Member
  • Posts

    10
  • Joined

  • Last visited

Posts posted by corpseletter

  1. 1 hour ago, SKKmods said:

    Attach scripts to the base forms which are creating the spawned object ... sc_craftworkbenchname things.

    Ah, to the furniture themselves? They do have the workbenchscript attached. Should I try to make a different one and try OnActivate in it?

    image.thumb.png.05f66ef21486d8c32168a5225ed75b46.png

    And just for full disclosure, here's the current script that I have.

    ScriptName SimpleCraft:sc_qust_StartupQuest Extends Quest
    
    ;-- Variables ---------------------------------------
    ObjectReference InvisibleFurniture
    
    ;-- Properties --------------------------------------
    Actor Property PlayerRef Auto Const
    Perk Property sc_CraftPerk Auto Const
    Furniture Property sc_CraftbenchArmor Auto Const
    Furniture Property sc_CraftbenchWeapon Auto Const
    Keyword Property sc_kywd_AnimArmor Auto Const
    Keyword Property sc_kywd_AnimWeapon Auto Const
    
    ;-- Events    ---------------------------------------
    Event OnQuestInit()
      If !PlayerRef.HasPerk(sc_CraftPerk)
        PlayerRef.AddPerk(sc_CraftPerk, False) 
      EndIf
    EndEvent
    
    Event Actor.OnGetUp(Actor akSender, ObjectReference akFurniture)        
      Utility.Wait(0.2) 
      InvisibleFurniture.Disable(False) 
      InvisibleFurniture.Delete() 
      UnregisterForRemoteEvent(PlayerRef, "OnGetUp") 
    EndEvent
    
    ;-- Functions ---------------------------------------
    Function CreateFurniture(ObjectReference akFurnitureRef)
      If akFurnitureRef.HasKeyword(sc_kywd_AnimArmor)
        InvisibleFurniture = akFurnitureRef.PlaceAtMe(sc_CraftbenchArmor) 
      ElseIf akFurnitureRef.HasKeyword(sc_kywd_AnimWeapon)
        InvisibleFurniture = akFurnitureRef.PlaceAtMe(sc_CraftbenchWeapon)
      EndIf
      Utility.Wait(0.1)
      RegisterForRemoteEvent(PlayerRef, "OnGetUp")    
      InvisibleFurniture.Activate(PlayerRef, True) 
    EndFunction

     

  2. 16 minutes ago, SKKmods said:

    A script attached to a quest form will not receive OnActivate events from arbitrary objects.

    That quest script needs to remote register for the event https://falloutck.uesp.net/wiki/RegisterForRemoteEvent_-_ScriptObject

    example: 

    Self.RegisterForRemoteEvent(akFurnitureRef, "OnActivate")

    and then ...

    Event ObjectReference.OnActivate(ObjectReference akSender, ObjectReference akActionRef)

    ;do stuff and dont forget to Self.UnregisterForRemoteEvent(akSender, "OnActivate") when complete

    EndEvent

    Thanks! I was doing this before I came back and checked my thread:

      RegisterForRemoteEvent(InvisibleFurniture, "OnActivate")
      If !RegisterForRemoteEvent(InvisibleFurniture, "OnActivate")
        Debug.MessageBox("Failed to Register")    
      Else
        Debug.MessageBox("Registered")    
        InvisibleFurniture.Activate(PlayerRef, True) 
      EndIf

    Does it have to be akFurnitureRef? With this, I was able to compile. In-game was showing a message box with "Registered" so it seems the event is registered but OnActivate event isn't happening:

    Event ObjectReference.OnActivate(ObjectReference akSender, ObjectReference akActionRef)
      Debug.MessageBox("Hello")
    EndEvent
  3. I am trying to trigger the workbenchscript so my invisible workbench can access it and use items/components stored in settlements during crafting.

    Function CreateFurniture(ObjectReference akFurnitureRef)
      If akFurnitureRef.HasKeyword(sc_kywd_AnimArmor)
        InvisibleFurniture = akFurnitureRef.PlaceAtMe(sc_CraftbenchArmor) 
      ElseIf akFurnitureRef.HasKeyword(sc_kywd_AnimWeapon)
        InvisibleFurniture = akFurnitureRef.PlaceAtMe(sc_CraftbenchWeapon)
      EndIf
      Utility.Wait(0.1)
      RegisterForRemoteEvent(PlayerRef, "OnGetUp")
      RegisterForRemoteEvent(InvisibleFurniture, "OnActivate")
      InvisibleFurniture.Activate(PlayerRef, True) 
    EndFunction

    All these works, but I'm stuck on

    Event OnActivate(ObjectReference akActionRef)
    EndEvent

    I can't compile it. CK throws this error:

    sc_qust_StartupQuest.psc(31,0): new event onactivate cannot be defined because the script is not flagged as native

    I tried doing ObjectReference.OnActivate but CK threw out a different error:

    sc_qust_StartupQuest.psc(31,0): the parameter types of function objectreference.onactivate in the empty state on script simplecraft:sc_qust_startupquest do not match the original script objectreference
     

×
×
  • Create New...