KQuest

KQuest

This plugin provides a way to create quests on your server.

Tekkit Or Bukkit

This plugin will work with Tekkit or Bukkit.

This plugin uses undocumented internals behind Bukkit therefore it will likely not work except for the version of Bukkit that the KNPCBukkit.jar was compiled against. If this happens just send me mail at [email protected] and I will come update the support library for the plugin. Also, the same applies to Tekkit even thought it does update much more slowly than Bukkit does.

IMPORTANT

When you download the package it will be in a zip file. You must extract this ZIP file to a temporary location. Then copy the KQuest.jar into your plugins folder. Now, the important part, you must either copy the KNPCBukkit.jar or the KNPCTekkit.jar into the plugins folder but NOT both of them. Only One

The NPCBukkit.jar is for someone running the latest version of Bukkit. The KNPCTekkit.jar is for someone running the latest version of Tekkit.

Quest Conditions

You can specify certain conditions for each quest for it to be completed such as:

  • [implemented] talk to specified actor or actors for completion
  • [implemented] kill specified actors
  • [implemented] provide specified items (from player inventory)
  • [implemented] provide specified special items (not from player inventory) [like a quest specific book..]
  • [implemented] prerequisite quests for quest acceptance
  • [implemented] actor can say something specific to a quest when they are spoken too for that quest
  • [implemented] actor can say something specific to a quest when they die
Actor Types

The type of actors you can create are:

  • [implemented] static actors have no movement and just stand there and can accept or complete quests (uses little CPU)
  • [implemented] dynamic actors can move their head to face players or turn their body but stay in a set location (moderate CPU)
  • [not-implemented] path following actors can move around the world and also move their head and face players they may even stop when near a player (more CPU)
Actor Conditions

The conditions for actors can be such as:

  • [implemented] specified time in second until actor is re-spawned
  • [implemented] random spoken lines which could contain clues for quests or just chatter (also requirements can be imposed to quests being completed)
Player Data Storage

The data for all players is stored in a file named kquest.players.yml in the server root directory. At the moment I do not have really great error reporting. So if you change something be sure to watch for any exceptions during start up of the server.

Also at the time of this writing player quest data is only saved out when the server is properly stopped.

Commands
quest.reload

This can only be executed on the console. It will reload the quest data file. This allows you to add more quests, actors, or edit existing quests and actors with out restarting the server. Changes will not modify the player's quest data meaning if you remove a quest that some players had completed they will still show as completing that quest. If you change the ID of quest then players may still hold the old ID which should not harm anything but could confuse the players. I hope eventually to add some more management commands to help with these types of problems.

quest.show

Show any quests that are currently in progress for you.

quest.showall

Show all completed quests and any quests that are in progress.

quest.accept

Accept a quest that was offered. Type /quest.offered to see last set of offered quests.

quest.offered

Show quests that were last offered to you.

quest.read

Read a quest.

quest.drop

Drop a quest. This can drop both in progress quests and completed quests. I may add a drop all command which would allow a player to start over if they so wished to do so.

Quest Data

The quest data is stored in YAML format in the root directory in a file named kquest.yml. This allows anyone to edit, remove, or add actors and quests. Here is the development YAML used for testing as a showcase of most of the features and how they are specified. Also remember that you can reload this file into memory with out stopping the server. To do this use the command quest.reload in the server console.

At the time of this writing if you remove an actor they will not properly disappear from the game world until you restart the server.

debugLineUp

The debugLineUp and debugLineUp[XYZ] allow you to have an easier time testing your quests. For example you may have 8 actors or 100 actors, and they may be spread all across your map. Let us say you wish to quickly test a new quest or test a long quest line. By using these configuration entries you can have all your actors spawn and spread out in a horizontal line allowing you to easily walk to each one and test. Once you have finished testing you can comment out the entries and all actors will spawn where they are specified.

To note make sure you pick an area with plenty of space. I can not remember if they are spread across the X or the Z axis, but just experiment to find out.

Config:
  debugLineUp: true
  debugLineUpX: 132.0
  debugLineUpY: 63.0
  debugLineUpZ: 324.0
  #debugLineUpX: 29.47
  #debugLineUpY: 63.0
  #debugLineUpZ: 326.0
  ticksPerLookAt: 40
Quests:
  Q_IL_1:
    titleMajor: Iron Legion
    titleMinor: Joining The Legion
    title: Find The Outpost
    # This is the first quest to get aquainted with the iron legion
    text: A strange character by the name of Artanis has told me that I can find some friends at the Iron Legion outpost. He said to head south from the prison to X:Y:Z and talk to CaptainOfCats.
    canRepeat: false
    giveItem:
      # Normal items are specified as TypeId:Data:Amount while special items
      # are specified with "special:Ledger Book" for example. These names are
      # global for special items so you could get a special item for one quest
      # and use it for another quest! This can be good or bad depending on if
      # it was intended, LOL.
      Artanis:
        - 30108.-1.1
        - special:Ledger Book:1
    needItem:
      CaptainOfCats: 
        - 30108.-1.1
        - special:Ledger Book:1
    talkTargets:
      CaptainOfCats: Ah, Yes. From the looks of you I would say your in need of some friends.
  Q_BSMUG_1:
    titleMajor: Smugglers
    titleMinor: Revenge For The Theif
    title: Find The Thief
    text: I have been entrusted to find the guy who stole some booze which was about to be smuggled off the planet. I was told I could likely find the guy at the barren pub out in the desert a little ways.
    canRepeat: false
    killTargets:
      Cicerol: No this must not be. I shall.. *gurgle*
Actors:
  pilkin:
    w: world
    x: 116.69
    y: 64.0
    z: 304.0
    hpitch: 0.0
    hrot: 0.0
    respawnDelay: 60000
    hitpoints: 500
    talk:
      std1:
        text: Prisoner if you want to find yourself in one of these cells you better be moving along.
      std2:
        text: Yep, and you thought being locked in a cell was bad. How about being released onto a planet with murders and the likes.. HAHA.
  aidandz:
    w: world
    x: 222.76
    y: 73.0
    z: 209.96
    hpitch: 0.0
    hrot: 0.0
    respawnDelay: 60000
    hitpoints: 500
    talk:
      std1:
        text: Go away.. You piece of shit scum.. Go away.. Let me drink in peace.
      std2:
        text: Are you an idiot.. Can you not see I am trying to relax?
      std3:
        text: You are a blight on the world with all your machines.. and devices..
  Adramos96:
    w: world
    x: 225.69
    y: 73.0
    z: 213.69
    hpitch: 0.0
    hrot: 0.0
    respawnDelay: 60000
    hitpoints: 500
    talk:
      std1:
        text: Would you like something to drink? Maybe something to eat? ...
  Cicerol:
    w: world
    x: 221.0
    y: 73.0
    z: 213.0
    hpitch: 0.0
    hrot: -55.0
    respawnDelay: 15000
    hitpoints: 100
    talk:
      std1:
        text: Oooh.. would you like to buy my shiny things? Yes.. Yes.. Yes.. Shiny things? No I did not steal them! How absurd of a question..
  CaptainOfCats: 
    w: world
    x: 393.0
    y: 66.0
    z: 1489.0
    hpitch: -60.0
    hrot: 55.0
    respawnDelay: 60000
    talk:
      std1:
        text: Why must I always be stationed here. I am starting to hate this place.
  Artanis:
    w: world
    x: 133.0
    y: 64.0
    z: 322.0
    hpitch: 30.0
    hrot: 180.0
    respawnDelay: 60000
    talk:
      std1:
        text: There sure is a lot of sand around here.
      std2:
        text: We been having a lot of new arrivals lately.
    offers:
      std3:
        req: 
          - Q_BSMUG_1
        text: For punishing this Cicerol fellow I shall reward you with this iron armor and tools.
        giveItems:
          - 256.0.1
          - 257.0.1
          - 258.0.1
          - 267.0.1
          - 292.0.1
          - 306.0.1
          - 307.0.1
          - 308.0.1
          - 309.0.1
        completeNow: true
        questId: Q_BSMUG_2
      std1:
        req:
        text: Look at you new arrival. You look tired. Maybe you need some friends? Well, I know some friends for you. Tell you what just head out to the Iron Legion output.. Oh you dont know where that is? Well just head south.
        questId: Q_IL_1
      std2:
        req:
        text: Look I prolly should not be telling you this, but I am in kind of a bind. You see we.. move.. goods for pay. And, someone has stolen some of our goods. If you could go and kill this person well you might find the reward to be quite nice. You can find them in the desert to the north east of here, and the name is Cicerol.
        questId: Q_BSMUG_1

Comments

Posts Quoted:
Reply
Clear All Quotes

About This Project

Categories

Members

Recent Files