Jump to content

Follower : Map Marker


Recommended Posts

The quick and dirty:

 

You need to have a quest.

That quest needs an alias pointing to the actor/object you want to track.

Then you need to set up a quest objective that points to that alias.

Then in a script somewhere you would use the quest.SetObjectiveDisplayed() function to turn the objective on. https://www.creationkit.com/index.php?title=SetObjectiveDisplayed_-_Quest

 

 

Pictures

 

 

PnfEWio.png

 

nYDuBiU.png

 

 

Then papyrus code somewhere to turn on/off the tracking pip

 

Quest Property zmNPCLocator Auto
 
Function TurnOnTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, true) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, true) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, true) ; track Shin
EndFunction


 
Function TurnOffTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, false) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, false) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, false) ; track Shin
EndFunction


 

 

 

 

Link to comment
Share on other sites

  • 3 months later...

Hello! I've been wanting to add this same feature to my own NPC mods, just curious if you had any success with this?

Edited by justinglen75
Link to comment
Share on other sites

  • 3 years later...

The quick and dirty:

 

You need to have a quest.

That quest needs an alias pointing to the actor/object you want to track.

Then you need to set up a quest objective that points to that alias.

Then in a script somewhere you would use the quest.SetObjectiveDisplayed() function to turn the objective on. https://www.creationkit.com/index.php?title=SetObjectiveDisplayed_-_Quest

 

 

Pictures

 

 

PnfEWio.png

 

nYDuBiU.png

 

 

Then papyrus code somewhere to turn on/off the tracking pip

Quest Property zmNPCLocator Auto
 
Function TurnOnTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, true) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, true) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, true) ; track Shin
EndFunction


 
Function TurnOffTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, false) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, false) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, false) ; track Shin
EndFunction


 

 

 

 

Thanks for the explanation but where must the papyrus code go? When i copy it into my alias window where i created a new script it won't compile :/

Link to comment
Share on other sites

 

The quick and dirty:

 

You need to have a quest.

That quest needs an alias pointing to the actor/object you want to track.

Then you need to set up a quest objective that points to that alias.

Then in a script somewhere you would use the quest.SetObjectiveDisplayed() function to turn the objective on. https://www.creationkit.com/index.php?title=SetObjectiveDisplayed_-_Quest

 

 

Pictures

 

 

PnfEWio.png

 

nYDuBiU.png

 

 

Then papyrus code somewhere to turn on/off the tracking pip

Quest Property zmNPCLocator Auto
 
Function TurnOnTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, true) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, true) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, true) ; track Shin
EndFunction


 
Function TurnOffTracking()
    zmNPCLocator.SetObjectiveDisplayed(1, false) ; track Mirai

    zmNPCLocator.SetObjectiveDisplayed(2, false) ; track Renai

    zmNPCLocator.SetObjectiveDisplayed(3, false) ; track Shin
EndFunction


 

 

 

 

Thanks for the explanation but where must the papyrus code go? When i copy it into my alias window where i created a new script it won't compile :/

 

 

Wow, talk about necroing an old thread. I'm not entirely sure I understand what you mean by you put it in the alias window where you created a new script. The specifics of what Papyrus you put in and where depends on how you're having things work. The example I provided can't be used "as-is". It would need to be modified to suit your specific quest use case.

 

Usually you would do something like talk to an NPC and in the dialogue you have a fragment which then sets an objective. Or you would set a quest stage. Then in the quest stage fragment you would set the objective. The code snippet I provided as an example was for a totally different thing. I think it was on a debug book I made which had a series of menus that let you turn on and off different features.

 

Assuming you're doing it from a quest stage fragment, which would probably be the most applicable for people. The simplest code is to just put in the relevant SetObjectiveDisplayed call. Since it is being called from within the fragment of the script who's objective you want to set you don't need to specify a quest. If you were trying to remotely set it then you would specify the quest similar to something like in the CK wiki example, or the code I had.

 

A case for using a dialogue fragment instead of a quest stage, might be if you want to be able to granularly enable and disable the display of the objective. Possibly multiple times. So if you're doing it from a dialogue fragment, and the dialogue is part of the same quest that has the objective. Then you can use GetOwningQuest().SetObjectiveDisplayed(n, true/false) as appropriate.

 

Barring either of those being an appropriate case for you, then the way you would do it is adding a property of quest type to a script (likely a fragment of some type). Then in the fragment you use the PropertyName.SetObjectiveDisplayed(n, true/false). Which is what my code example illustrates. Albeit not in a fragment format. Note that in a fragment you don't put functions, but rather what's inside of a function. My code example is from something a bit more advanced.

 

https://www.creationkit.com/index.php?title=SetObjectiveDisplayed_-_Quest

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...