Staff Pick: Example Quest for QuestGUI
By 
AnthonyCreated: 2016/04/03 12:52:32 UTC-07:00 (9 years and 216 days ago)
Edited: 2016/04/04 11:32:32 UTC-07:00 (9 years and 215 days ago)
Likes: 2
Staff pick as of: 2016/04/19 17:46:00 UTC-07:00 (9 years and 200 days ago)
Denizen Version: 0.9.8-DEV_b548
Script Version: 0.2
Description:
This is an example quest for use with QuestGUI. It is a simple quest that will show you just a little bit about QuestGUI. It is not a tutorial on how to use it, but rather just makes a quest about navigating through the GUI. It is really intended to server as an example to scripters of how to integrate their existing quests with QuestGUI.
Assing the Example Quest to an npc
  /npc assignment --set QuestGUI_ExampleQuest_1
The rest should be automagical ;)
You can get QuestGUI 
here
Download script | 
View raw script################################################################################
#
#                          Q u e s t   E x a m p l e
#                        An Example Quest for QuestGUI
#
#
#   Authors: |Anthony|
#   Version: 0.1
#   dScript Version: 0.9.8-DEV_b548
#_______________________________________________________________________________
#
# This is an example quest for use with QuestGUI. It is a simple quest that will
# show you just a little bit about QuestGUI. It is not a tutorial on how to use
# it, but rather just makes a quest about navigating through the GUI. It is
# really intended to serve as an example to scripters of how to integrate
# their existing quests with QuestGUI.
#
# Assing the Example Quest to an npc
#  /npc assignment --set QuestGUI_ExampleQuest_1
#
# The rest should be automagical ;)
#
################################################################################
#
# Example Icon script
#  - Quests must have a valid _Icon script. Think of this as a config file for
#    your quest. QuestGUI will reference this script container to generate
#    the displays.
#
QuestGUI_ExampleQuest_1_Icon:
  type: item
  debug: false
# Unused in the gui
  display name: Quest Journal
# The material used as the gui icon for this quest
  material: i@iron_chestplate
# A flag required to mark the quest as Available or LOCKED.
# Leave this empty '' if you do not want your quest to be repeatable.
  quest_unlocked_flag: ''
# Set to true to not display this quest if the player does not have the specified unlock flag.
# Set to false to show the quest as LOCKED if the player does not have the specified unlock flag.
  hide_ifLocked: false
# A flag for repeatable quests. Flag must store the number of times the quest has been completed.
# Once completed, repeatable quests will only show up in the quest journal if they are in the
# Active_Quests player flag, but will always display in the completed gui after the first completion.
# There's potential for stale data to display in the Objectives view, so we might need to address that in the future.
  times_completed_flag: QuestGUI.ExampleQuest.1.Completed
# What to display the quest title as
  quest_title: An example quest
# What to display for the description of this quest
  quest_desc: Learn how to integrate your existing quests with QuestGUI.
# A flag to store the number value for the players current objective
# If the player is currently doing objective 3 than the value of this flag should be 3
  quest_progress_flag: QuestGUI.ExampleQuest.1.Objective
# Define your quest objectives here. Must use a numbered node structure.
# Number corresponds to quest_progress_flag
  objectives:
    1:
    # The text to display as the name of this objective
      name: Accept the Quest
    # A long description of this objective
      description: Talk to Nilsentience and accept the quest.
    # Set to true to remove this objective from the list until the player is at this objective
    # Set to false to allow this objective to be displayed before they reach this objective
      hide: false
    # Set to true to show this objective as LOCKED hiding all info about it until the player reaches this objective
    # Set to false to show all info about this objective even if the player hasn't reached it yet
      lockDisplay: false
    # Set the icon to display for this objective
      icon: i@paper
    # A list of flags that hold stats for this objective.
    # Value must be set as a split list in the format statname/flagname
    # statname is the phrase displayed as the title of this stat
    # flagname is the flag that holds the value to display
      progress_flags:
      - 'Accept Quest/QuestGUI.ExampleQuest.1.Objectives.1'
    2:
      name: Open QuestGUI
      description: Use the command /qg to open QuestGUI
      hide: false
      lockDisplay: true
      icon: i@iron_sword
      progress_flags:
      - 'Open QuestGUI/QuestGUI.ExampleQuest.1.Objectives.2'
    3:
      name: Active Quests
      description: Cick on the icon to see your Active Quests
      hide: false
      lockDisplay: true
      icon: i@paper
      progress_flags:
      - 'View Active/QuestGUI.ExampleQuest.1.Objectives.3'
    4:
      name: View Objectives
      description: Cick on the quest icon to see your Objectives
      hide: false
      lockDisplay: true
      icon: i@paper
      progress_flags:
      - 'View Objectives/QuestGUI.ExampleQuest.1.Objectives.4'
    5:
      name: Trophies
      description: Cick on the icon to see your Trophies
      hide: false
      lockDisplay: true
      icon: i@paper
      progress_flags:
      - 'View Trophies/QuestGUI.ExampleQuest.1.Objectives.5'
    6:
      name: Completed Quests
      description: Cick on the icon to see your Completed Quests
      hide: false
      lockDisplay: true
      icon: i@paper
      progress_flags:
      - 'View Completed/QuestGUI.ExampleQuest.1.Objectives.6'
# Script run when an admin resets this quest for a player
  reset:
    - flag %player% QuestGUI.ExampleQuest.1:!
    - flag %player% QuestGUI.Trophies:<-:QuestGUI_ExampleTrophy_1_Flowers
    - flag %player% QuestGUI.Trophies:<-:QuestGUI_ExampleTrophy_1_Cake
    - flag %player% QuestGUI.Trophies:<-:QuestGUI_ExampleTrophy_1_Cookie
    - flag %player% QuestGUI.QuestsCompleted:<-:QuestGUI_ExampleQuest_1
    - flag %player% QuestGUI.Active_Quests:<-:QuestGUI_ExampleQuest_1
# Script run when an admin completes this quest for a player
  complete:
    - flag %player% QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Flowers
    - flag %player% QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Cake
    - flag %player% QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Cookie
    - if <def[player].flag[QuestGUI.QuestsCompleted].as_list> !contains QuestGUI_ExampleQuest_1 {
      - flag %player% QuestGUI.QuestsCompleted:->:QuestGUI_ExampleQuest_1
      }
    - flag %player% QuestGUI.ExampleQuest.1.Completed:++
    - flag %player% QuestGUI.Active_Quests:<-:QuestGUI_ExampleQuest_1
# Script run when an admin activates this quest for a player
  activate:
    - run player:%player% MyQuestGUIQuest_1_Dialogue_2
# Script run when an admin deactivates this quest for a player
  deactivate:
    - narrate "stub"
#
#
# END Example Icon script
#--------------------------------------
#
#  Quest Trophies
#   - Item script containers for all obtainable quest trophies
#   - Must have the quest: node with the scriptname of the quest it belongs to
#
QuestGUI_ExampleTrophy_1_Flowers:
  type: item
  material: i@blue_orchid
  debug: false
  display name: Pretty Flowers
  description: Just a sign of my appreciation
  quest: QuestGUI_ExampleQuest_1
QuestGUI_ExampleTrophy_1_Cake:
  type: item
  material: i@cake
  debug: false
  display name: Newb Cakes
  description: You have started learning how to use QuestGUI!
  quest: QuestGUI_ExampleQuest_1
QuestGUI_ExampleTrophy_1_Cookie:
  type: item
  material: i@cookie
  debug: false
  display name: You are Special
  description: You have learned how to use QuestGUI! You deserve a cookie!
  quest: QuestGUI_ExampleQuest_1
#
#  END Quest Trophies
#--------------------------------------
#
#  END Requisite Data for QuestGUI
#  - The actual quest is upto you!
#
################################################################################
#
# QuestGUI Example Quest
# - Assign this to an NPC and click on him. He'll walk you through the rest.
#
QuestGUI_ExampleQuest_1:
  type: assignment
  debug: false
  actions:
    on spawn:
      - inject locally init instantly
    on assignment:
      - inject locally init instantly
    on click:
      - inject locally click instantly
    on damage:
      - inject locally click instantly
    on enter proximity:
      - if <util.random.int[1].to[10]> > 5 {
        - if <player.has_flag[QuestGUI.ExampleQuest.1.Completed]> {
          - random {
            - narrate "<&b><npc.name><&f><&co> Oh, hello again."
            - narrate "<&b><npc.name><&f><&co> Haven<&sq>t we met before?"
            - narrate "<&b><npc.name><&f><&co> It<&sq>s <player.name>!"
            - narrate "<&b><npc.name><&f><&co> That QuestGUI is pretty neat, isn<&sq>t it?"
            - narrate "<&b><npc.name><&f><&co> Gotta check those quests!"
            }
          }
          else if <player.flag[QuestGUI.Active_Quests].as_list.contains[]||false> {
          - random {
            - narrate "<&b><npc.name><&f><&co> Why have<&sq>t you finished the quest yet?"
            - narrate "<&b><npc.name><&f><&co> You still have to finish the QuestGUI Quest!"
            - narrate "<&b><npc.name><&f><&co> Come on <player.name>! It is taking you longer to do the quest than it took me to make it!"
            - narrate "<&b><npc.name><&f><&co> What is taking so long?"
            - narrate "<&b><npc.name><&f><&co> It really isn<&sq>t that difficult!"
            }
          }
          else {
          - random {
            - narrate "<&b><npc.name><&f><&co> Hey have you seen the QuestGUI?"
            - narrate "<&b><npc.name><&f><&co> Did you see the QuestGUI yet?"
            - narrate "<&b><npc.name><&f><&co> I have a task for you <player.name>!"
            - narrate "<&b><npc.name><&f><&co> <player.name> let<&sq>s talk for a minute."
            - narrate "<&b><npc.name><&f><&co> Come here <player.name>! I have something to tell you."
            }
          }
        }
  init:
    - trigger name:chat state:false
    - trigger name:click state:true cooldown:1 radius:8
    - trigger name:proximity state:true cooldown:5 radius:7
    - trigger name:damage state:true cooldown:3
    - lookclose true range:5 realistic
    - vulnerable state:false
    - if <npc.name> != 'Nilsentience' {
      - adjust <npc> 'name:Nilsentience'
      }
  click:
    - if <player.flag[QuestGUI.Active_Quests].as_list||li@> contains 'QuestGUI_ExampleQuest_1' {
      - narrate "<&b><npc.name><&f><&co> Yeah... you are already doing this quest. Try finishing it before you restart it."
      - queue clear
      }
    - if !<player.has_flag[QuestGUI.ExampleQuest.1.NPCclick]> {
      - flag <player> QuestGUI.ExampleQuest.1.NPCclick duration:5s
      - narrate "<&b><npc.name><&f><&co> Click me again if you would like to learn about QuestGUI."
      - queue clear
      }
    - flag <player> QuestGUI.Active_Quests:->:QuestGUI_ExampleQuest_1
    - flag <player> QuestGUI.ExampleQuest.1.Objective:1
    - flag <player> QuestGUI.ExampleQuest.1.Objectives.1:Complete
    - if <player.has_flag[QuestGUI.ExampleQuest.1.Completed]> {
      - narrate "<&b><npc.name><&f><&co> I know this quest was super fun, but I really didn<&sq>t expect so much love and attention!"
      - wait 10t
      }
    - narrate "<&b><npc.name><&f><&co> Ok, let<&sq>s get started!"
    - wait 10t
    - narrate "<&b><npc.name><&f><&co> Start by opening the QuestGUI."
    - wait 10t
    - narrate "<&b><npc.name><&f><&co> You can type the command <&e>/questgui<&f> or <&e>/qg<&f> for short."
    - wait 10t
    - narrate "<&b><npc.name><&f><&co> OR..."
    - wait 10t
    - narrate "<&b><npc.name><&f><&co> You can just use the Quest Journal."
    - wait 10t
    - if !<player.inventory.contains[i@QuestGUI_Journal]> {
      - give i@QuestGUI_Journal
      - narrate "<&b><npc.name><&f><&co> Hold it in your hand and right click to open it up."
      }
      else {
      - narrate "<&b><npc.name><&f><&co> You already have the Quest Journal"
      }
    - flag <player> QuestGUI.ExampleQuest.1.Objective:2
    - flag <player> QuestGUI.ExampleQuest.1.Timer:<server.current_time_millis>
QuestGUI_ExampleQuest_1_World:
  type: world
  debug: false
  events:
    on player opens inventory:
      - if '<c.inventory.notable_name.split[_].get[1]||null>' != 'QuestGUI' {
        - queue clear
        }
      - define objective '<player.flag[QuestGUI.ExampleQuest.1.Objective]||null>'
      - choose '<c.inventory.notable_name.split[_].get[2]>':
        - case 'MainMenu':
          - if %objective% != 2 {
            - queue clear
            }
          - title 'title:QuestGUI' 'subtitle:Objective Complete<&co> Main Menu'
          - flag <player> QuestGUI.ExampleQuest.1.Objective:3
          - flag <player> QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Cake
          - flag <player> QuestGUI.ExampleQuest.1.Objectives.2:<server.current_time_millis.sub_int[<player.flag[QuestGUI.ExampleQuest.1.Timer]>].div[1000].as_duration.formatted>
          - flag <player> QuestGUI.ExampleQuest.1.Timer:<server.current_time_millis>
        - case 'Overview':
          - if %objective% != 3 {
            - queue clear
            }
          - title 'title:QuestGUI' 'subtitle:Objective Complete<&co> Quest Overview'
          - flag <player> QuestGUI.ExampleQuest.1.Objective:4
          - flag <player> QuestGUI.ExampleQuest.1.Objectives.3:<server.current_time_millis.sub_int[<player.flag[QuestGUI.ExampleQuest.1.Timer]>].div[1000].as_duration.formatted>
          - flag <player> QuestGUI.ExampleQuest.1.Timer:<server.current_time_millis>
        - case 'Objectives':
          - if %objective% != 4 {
            - queue clear
            }
          - title 'title:QuestGUI' 'subtitle:Objective Complete<&co> View Objectives'
          - flag <player> QuestGUI.ExampleQuest.1.Objective:5
          - flag <player> QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Cookie
          - flag <player> QuestGUI.ExampleQuest.1.Objectives.4:<server.current_time_millis.sub_int[<player.flag[QuestGUI.ExampleQuest.1.Timer]>].div[1000].as_duration.formatted>
          - flag <player> QuestGUI.ExampleQuest.1.Timer:<server.current_time_millis>
        - case 'Trophies':
          - if %objective% != 5 {
            - queue clear
            }
          - title 'title:QuestGUI' 'subtitle:Objective Complete<&co> Trophy Room'
          - flag <player> QuestGUI.ExampleQuest.1.Objective:6
          - flag <player> QuestGUI.ExampleQuest.1.Objectives.5:<server.current_time_millis.sub_int[<player.flag[QuestGUI.ExampleQuest.1.Timer]>].div[1000].as_duration.formatted>
          - flag <player> QuestGUI.ExampleQuest.1.Timer:<server.current_time_millis>
        - case 'Complete':
          - if %objective% != 6 {
            - queue clear
            }
          - title 'title:QuestGUI' 'subtitle:Objective Complete<&co> Completed Quests'
          - flag <player> QuestGUI.ExampleQuest.1.Objective:Complete
          - if <player.flag[QuestGUI.QuestsCompleted].as_list||li@> !contains QuestGUI_ExampleQuest_1 {
            - flag <player> QuestGUI.QuestsCompleted:->:QuestGUI_ExampleQuest_1
            }
          - flag <player> QuestGUI.ExampleQuest.1.Completed:++
          - flag <player> QuestGUI.Active_Quests:<-:QuestGUI_ExampleQuest_1
          - flag <player> QuestGUI.Trophies:->:QuestGUI_ExampleTrophy_1_Flowers
          - flag <player> QuestGUI.ExampleQuest.1.Objectives.6:<server.current_time_millis.sub_int[<player.flag[QuestGUI.ExampleQuest.1.Timer]>].div[1000].as_duration.formatted>
          - flag <player> QuestGUI.ExampleQuest.1.Timer:!
        - default:
          - queue clear
#
#  END QuestGUI Example Quest
#
################################################################################
 
View History