49.99 EUR


Create simple quests.

  • Fully configurable
    • Unlimited quests and quest steps.
    • Totally modular.
    • Configure your own quest dialog backgrounds.
    • Configure requirments and rewards each quest step (based on VorpInventory - items, weapons, gold and money).
    • Configure completed quests as prerequisites for further quests. 
    • Configure how often a quest can be completed.
    • Optional:
      • Restrict quests to specific jobs (and job grades).
      • Use job (and job grades) blacklist to create exceptions.
      • Restrict quests to specific in-game times (and real world days of week).
      • Configure styles, like color and shadow of quest title and text.
      • Configure server side hooks on step completion.
      • Create daily quests (add delay to restart a quest). 
      • Create markers for each quest step.
      • Create blibs for each quest step.
      • Configure blip radius (area) for each quest step.
    • Configure prompt radius
    • Configure prompt open key
    • Discord webhook available.
    • Quest log
      • Configure quest log as inventory item.
      • Or configure command to open quest log (e.g. to use in nss_emotes).
    • Languages (EN and DE already included)
  • No frustration: Stores progress persistently in a database.
  • Full responsive design: Suitable for all common screen resolutions.
  • Never miss updates again: Automatic version check included.
  • Easy understanding: Validator checks your configuration.
  • Know how it works: Everything is documented in detail in the README.md.


  • Support for timed quests
  • And all your (useful) ideas ;)




  • Discord
  • Read the README.md for setup and quest creation instructions.
  • This script is encrypted.
  • The price of the product will increase the more features are added.


  • v1.6.3 (2024-07-03)
    • Add optional command to open the quest log. So you can use this command as alternative to the quest log item, e.g. in the nss_emotes script.
    • The quest log item to open the quest log is now optional if you use the command to open the quest log.
    • The quest log item and command can be used together.
  • v1.6.2 (2024-04-15)
    • Fix nil pointer exception in `getCharData` method.
    • Add listener for job changes to update job restrictions/blacklists.
    • If a quest is not available after job change it will be still shown in quest log but with a hint that it is not available for the current job or job grade. Those quests are not clickable.
  • v1.6.1 (2024-03-02)
    • Remove unnecessary prints.
    • Fix issues with prompt restrictions.
    •  Allow quest prompts in water.
  • v1.6.0 (2024-03-01)
    • Add time windows for quests. See `quests/quest_demo.lua` for an example and README.md#quest-properties  at `in_game_time_windows` for more information.
    • Documentation of the properties of quests and quest steps moved to separate files. See QUEST.md and  STEPS.md.
  • v1.5.0 (2024-02-26)
    • Add blacklisted jobs that are not allowed to use the related quests. See `quests/quest_demo.lua` for an example and [README.md](README.md#quest-properties) for more information.
    • Extend the documentation (README.md) to make it more clear.
  • v1.4.0 (2024-02-23)
    • Add jobs as requirement for quests. See `quests/quest_demo.lua` for an example and README.md for more information.
  • v1.3.0 (2023-12-11)
    • Add gold as reward/requirement type.
    • Add weapons as reward type.
    • Fix requirements check for money.
  • v1.2.1 (2023-10-29)
    • Add optional quest property `show_previous_step_in_quest_log`. See `quests/quest_demo.lua` for an example and  README.md for more information.
    • Add a delay to wait for vorp inventory to be loaded. Delay can be changed in config  via `Config.CheckInventoryAfterCharSelectedDelayInSeconds`. Default is 10 seconds.
    • Ensure that only one quest log item is in the inventory on char loaded (duplicates will now be removed automatically).
  • v1.2.0 (2023-08-03)
    • Add optional marker for quest steps. See `quests/quest_demo.lua` for an example.
    • Add optional blip for quest steps. See `quests/quest_demo.lua` for an example.
    • Add optional radius blip for quest steps. See `quests/quest_demo.lua` for an example.
    • Switch from hardcoded prompts to `nss_libs` prompts.
    • Add configuration validation (it tells you if something is wrong in the config and/or quests).
    • Add config file existence check (it tells you if config file does not exist).
    • Add quest log.
  • v1.1.1 (2023-02-05)
    • Quests with only one step each now store the number of completions correctly in the database, so that `max_solved` is considered correctly.
  • v1.1.0 (2022-12-31)
    • Add "daily quests" to the quest system.
    • Internal improvements.
  • v1.0.15
    • Important: nss_libs version 0.17.0 or higher is required.
    • Switch to nss_libs NssButton ui component.
    • Move loading indicator to nss_libs NssLoadingIndicator ui component.
    • Add "Quest completed" sound.
    • Fix ERR_FAILED on NUI requests.
  • v1.0.14
    • Code refactoring.
    • Move changelog from README.md to CHANGELOG.md.
  • v1.0.13
    • Switch to nss_libs NssConfirm ui component.
    • Remove dev files for local browser testing.
  • v1.0.11 / 1.0.12
    • Internal improvements based on nss_libs changes.
  • v1.0.10
    • Initial release


---@type NssQuest
QuestDemo = {
    id = "halloween",
    name = "Creepy Creatures",
    description = "Just a test quest",
    max_solves = 3,
    steps = {
            id = "start", -- only letters and numbers, no spaces or other special characters!
            name = "Strange footsteps...",
            btn_text = "Strange footsteps...",
            location = { coords = { x = -858.72, y = -1340.31, z = 44.43 }, radius = 2.0 }, -- Blackwater Schwarzes Brett
            quest_text = "You see some strange footsteps on the floor. You think it might be some wolf footsteps but they are very large.\n\n"
                    .. "Go and find some coal and bring it back to the current place.",

            id = "middle",
            name = "More strange footsteps...",
            btn_text = "Mark the footsteps...",
            quest_text = "You use the coal to mark the footsteps with a magical symbol. This symbol prevents the people for bad wolfes.\n\n"
                    .. "Go and find some agave and bring it back to the current place.",
            location = { coords = {x = -858.28, y = -1334.57, z = 44.4}, radius = 2.0 }, -- Blackwater Schwarzes Brett
            requires = {
                items = {
                    { name = "coal", count = 1, remove = true, label ="Crazy shit coal" },

            id = "end",
            name = "Banning the curse",
            btn_text = "Clear the air...",
            quest_text = "<strong>Congratulations!</strong> You have cleared the air with the help of the agave. The curse is gone and the people can live in peace again.\n\n",
            location = { coords = {x = -868.34, y = -1326.33, z = 43.29}, radius = 2.0 }, -- Blackwater Schwarzes Brett
            requires = {
                items = {
                    { name = "coal", count = 1, remove = true },
            rewards = {
                items = {
                    { name = "coal", count = 2 },
                    { name = "agave", count = 2 },
                money = {
                    amount = 10,

            ---@param _source number
            ---@param step NssQuestStep
            ---@param char NssQuestCharacter
            callback = function(_source, step, char)