WIP - [RPG] LDQuest - A True Quest System[1000]

Discussion in 'WIP and Development Status' started by Bilkokuya, Aug 26, 2011.

Thread Status:
Not open for further replies.
  1. Offline


    The ability to edit permissions as a "reward" is the only thing that I can think of that isn't too specific to waste time on - however, I seem to remember you mentioning you were already working on it?
  2. Offline


    Do you plan to add support for the more mindless quest types such as kill quests, or possibly go to x,y,z coordinate quests ?
  3. Offline


    I've actually got a system called "Counters" in the source right now - it's getting towards a working part slowly.
    It should allow you to set objectives for things such as Killing mobs, players etc; the usual placing blocks and so on.

    The goto x,y,z co-ordinates can already be achieved by placing a group for that. In the most basic form, you just add a marker to the quest which has no real point other than forcing you to talk to it*.
    When you set-up the group the holds it (for example, a group called "WayMarker22" or "Signpost5"** just don't add it to an inheritance group (unless you want multiple locations they can go to).
    Put that group (using a sign, instead of an NPC in most cases for this) in the game, at the location you want a player to travel to, and they are then forced to walk to it to complete that section of the quest.

    I hope that makes sense for the co-ordinate thing. As I say, I'm also working on the kill quests etc as best I can.

    * Please don't do that, good quests are ones where you don't feel like you have to walk there for no reason. You can instantly make it more interesting by giving them a good reason to goto that marker, and then add some interesting options (other markers) at that location.
    ** In theory...But really, it's 100 times more interesting for a player if they're interacting with an object such as something somebody lost - where you might give them the chance to steal it instead of returning it etc.

    That's very true - I am currently working on it. I am also currently struggling with it; however, I'm giving a look to some other plugins that successfully do it - so it shouldn't be too big a problem.
    sddddgjd likes this.
  4. Offline


    Very true, and one of the main reasons I'm interested in this plugin - it's a chance to tell a story, not to occupy a player's time.
  5. Offline


    When will the source be available ?
  6. Offline



    I didn't realise I'd forgotten to include a link.
    Sorry for that, it was intended to have the source up straight away.

    As a note on that source, I've had some issues with source control when swapping onto another PC - hence ending up with the master being outdated and DevBranch being current. I will try to figure out how to work this github stuff so I can merge it all properly; but right now I have to apologise for the mess it's in.
  7. Offline


    I hope I'm not being annoying, but when said tutorial for LDQuest is made, could you perhaps show us how to make that quest you made for the demo video? The quest with the farmers. It looks like it touches the surface of what to do with the plugin and how to do it. Thanks in advanced, and I'm looking forward to using the plug in.
  8. Hi,

    I am currently trying to make my own test quest but it does not seem to work properly. The NPC replies with his default awnser but I can't choose any points to awnser him.

    Here is the .qst file:

        UUID: "LD.Nigel.Test1.Exquest1"
        Limit: 1
        Description: "Nur ein Quest, zum Testen des SpQuest-Plugins."
            - Description: "(1) Der erste Marker. (start)"
              UID: 1
              Topic: "Interaktion des ersten Markers."
                Standard: "Das ist die Standart-Anwort des ersten Markers."
            - Description: "(2) Der Zweite Marker."
              UID: 2
              Topic: "Interaktion des zweiten Markers."
                Standard: "Das ist die Standart-Antwort des ersten Markers."
                - Type: AND
                    - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 1}
                    - Type: NOR
                        - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 2}
                - Type: ITEM
                  Logic: AND
                  ItemID: 5
                  Amount: 50
                  Probability: 100
            - Description: "(3) Der letzte Marker. (end)"
              UID: 3
              Topic: "Interaktion des letzen Markers."
                Standard: "Das ist der letze Marker. Der Quest endet nun."
                - Type: AND
                    - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 2}
              End: True
        - Description: "(Markus) Ein Test-NPC"
          Name: Markus
          Opening: "Hallo, ich bin Markus, der Test-NPC"
            - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 1}
            - Staff
            - TestNPCs
        - Description: "(Staff) (IH) Inheritance Group for Staff NPCs"
          Name: Staff
          Opening: Dies ist eine Inheritance Gruppe. Platziere sie NICHT in der Welt.
            - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 2}
        - Description: "(TestNPCs) (IH) Inheritance Group for TestNPCs"
          Name: TestNPCs
          Opening: Diest ist eine Inheritance Gruppe. Platziere sie NICHT in der Welt.
            - {UUID "LD.Nigel.Test1.Exquest1" , UID: 3} 
    Any help would be great!



    It is also throwing me this error in the console when right clicking a NPC:

    19:49:31 [SEVERE] Could not pass event CUSTOM_EVENT to LDQuest
            at LD.Bilko.LDQuest.Quester.Quester.isReachedLimit(Quester.java:247)
            at LD.Bilko.LDQuest.Group.Group.getPossible(Group.java:102)
            at LD.Bilko.LDQuest.Listeners.LDQuestNPCListener.onNPCRightClick(LDQuestNPCListener.java:90)
            at com.citizens.events.NPCListener.onCustomEvent(NPCListener.java:36)
            at org.bukkit.plugin.java.JavaPluginLoader$88.execute(JavaPluginLoader.java:862)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at com.citizens.listeners.EntityListen.onEntityTarget(EntityListen.java:114)
            at org.bukkit.plugin.java.JavaPluginLoader$64.execute(JavaPluginLoader.java:691)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at com.citizens.listeners.PlayerListen.onPlayerInteractEntity(PlayerListen.java:92)
            at org.bukkit.plugin.java.JavaPluginLoader$12.execute(JavaPluginLoader.java:321)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:870)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:89)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:454)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:363)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    And this one when I join the server:

    19:48:53 [SEVERE]       at LD.Bilko.LDQuest.DataHandling.Cache.LoadPlayer(Cache.java:815)
    19:48:53 [SEVERE]       at LD.Bilko.LDQuest.DataHandling.Cache.LoadPlayers(Cache.java:158)
    19:48:53 [SEVERE]       at LD.Bilko.LDQuest.Listeners.LDQuestPlayerListener.onPlayerJoin(LDQuestPlayerListener.java:123)
    19:48:53 [SEVERE]       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:244)
    19:48:53 [SEVERE]       at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    19:48:53 [SEVERE]       at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    19:48:53 [SEVERE]       at net.minecraft.server.ServerConfigurationManager.c(ServerConfigurationManager.java:124)
    19:48:53 [SEVERE]       at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:97)
    19:48:53 [SEVERE]       at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:74)
    19:48:53 [SEVERE]       at net.minecraft.server.Packet1Login.a(SourceFile:43)
    19:48:53 [SEVERE]       at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    19:48:53 [SEVERE]       at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:40)
    19:48:53 [SEVERE]       at net.minecraft.server.NetworkListenThread.a(SourceFile:91)
    19:48:53 [SEVERE]       at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:454)
    19:48:53 [SEVERE]       at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:363)
    19:48:53 [SEVERE]       at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    I found the bug for the NPC not having options to choose from. It was a missing colon in the last line -.-"

    The other two stack strace errors still appear though.
  9. Offline


    I've just had a look at the file, and found what's causing you the issue. As small, petty and annoying as it is - there's a typo in the final group that's causing issues for the rest of it.

    - Description: "(TestNPCs) (IH) Inheritance Group for TestNPCs"
          Name: TestNPCs
          Opening: Diest ist eine Inheritance Gruppe. Platziere sie NICHT in der Welt.
            - {UUID "LD.Nigel.Test1.Exquest1" , UID: 3} 
    The issue is that you are missing a colon ( : ) after UUID, which appears to be confusing the entire quest.

    - Description: "(TestNPCs) (IH) Inheritance Group for TestNPCs"
          Name: TestNPCs
          Opening: Diest ist eine Inheritance Gruppe. Platziere sie NICHT in der Welt.
            - {UUID: "LD.Nigel.Test1.Exquest1" , UID: 3} 
    This rectification (adding the colon, so it reads UUID: "LD......") seems to have fixed it in the game too.

    Other than that, it's a really good start. It all appears to work as expected and you really should be commended on using the description tags etc - it's a really nice, clean quest file (which made it easier to find the problem).

    It also goes a long way to show how the plugin can be used in different languages.
    I hope that helped, if you still get issues, just let me know and I'll do my best to sort it again.
    Another note; is that we have a BukkitDev site now - this is the best way to get in contact with me as it emails me everytime somebody posts something. There is a built-in bug-ticket system, so you just click the button and you can easily tell me what you think should be added/changed or what problems you've got.
    I'd recommend you all come and join us there - post your quest ideas on the forum section.
    That will also be the place I will be putting the tutorials once I get round to them (again I know I seem like a bad person for not having it done already - but it's week one of a new course, so I'm feeling a little overwhelmed).
  10. Offline


    So what's going on with this project right now? I'm kind of hoping that you would still release the interfaced quest writing system (as a repeated copy+paste operation over lots of NPCs with lots of dialogue nodes would get very tiring), to be honest.
  11. Offline


    Right now, since the main-stay seems to be holding up not badly; I'm redesigning it. Making it more expandable, less linear, and more designed with a quest-making tool in mind.
    The other big advantage of the re-write is making it more accessible to other plugins.
  12. Offline


    any news? i am kind of excited about starting to write a questline with this...do you think i should wait for the rewrite before i start or do you think it will be safe/compatible with whatever i make now?
  13. Offline


    Bilkokuya, I sent you a PM
  14. Offline


    Apologies for the lack of contact with you guys, I've just been extremely busy in the last few weeks.

    Ok, I've managed to settle down and actually do some work on the redesign today, which will hopefully mean I can do some coding on it tomorrow.
    The main ideas that are coming in, are ones that:
    • Make it easier to write a detailed quest
    • Make it possible to expand LDQuest through an API
    • Make it use less server-memory
    • Make it easier to maintain and update
    • Make it easier to write a GUI editor for
    • Allows full flow control - for repetitions and such like.
    • Allows comparisons with global statistics.
    I've done my best to reply to all the PMs I've had and I do apologise for taking so long. I hope you can understand that there will always be real-life priorities ahead of this.

    Once the design is finalised and ready to implement - I'll post you the MindMap documents that show how I'm tackling this - hopefully giving you an idea of what to expect, and an insight into how I design things.
  15. Offline



    Is this still in active development. This is by far the best quest system i have seen on bukkit, and ive looked through allot of them. My only request is superperms support.
  16. Offline


    I've got a lot going on, so development has been slow - especially in terms of it's design. One thing that's held me back a little is the fact that it's no longer unique in any real sense - there are a lot of new Quest systems that do the various things I set out to do originally.

    So what does this mean? Well, it luckily does not mean that I'm giving up. It means that I'm refocusing, and working on developing an entirely unique system that should hopefully fill the gap between linear-quests and player-to-player dialogue. What I mean is, most RP on a server, revolves around how smart your DM (Dungeon Master) is in terms of reacting to player ideas - currently no quest system delivers that, and few systems allow it even in AAA title games.

    What I'm working on developing now, is a system that will allow players to tackle a challenge, in whatever way they see fit; with less of a focus on following a pre-made story, and more focus on creating the story through your own actions. The idea also stems from the issue of overly complex quests creating difficulties for quest-makers. Hopefully I've figured out a method that solves this issue.

    I've been a bit reluctant to talk much about it, as it's only in the last few days I've realised how I could achieve this at all. I don't want to give people false hope of what I'm managing to accomplish - right not I do have to admit that this is getting a lot less time than it needs for it to progress properly.

    All the best, and thanks for the continued support - if it wasn't for you guys, this would have been killed a while ago.
    If it's something that would interest anybody, I can start a regular dev-blog of my work, so you know when to expect updates on what I've done.
  17. Offline


    Great idea! You will have less spam in your inbox :)
  18. Offline


    I have yet to see the "equivalent" quest plugin systems that you speak of, but I look forward to what you come up with all the same.
  19. Offline


    i agree with @HSAR there has not been anything close to this released yet. there was another wip thread about a plugin called questbook, but that has gone quiet long ago.
  20. Offline


    How have things been going? To date, this is still by far my best bet for a decent story-driven quest.

    Without meaning to put any pressure on, I'd just like to ask that you consider a few features for future inclusion - probabilities, node exclusion and global persistence.

    Branch probability is fairly self-explanatory - upon completion of a node, a given probability (or perhaps it could be restricted to equal probabilities) will be considered and the next stage drawn from multiple possibilities based on such chances. It would lead to less linearity and prevent players from making walkthroughs, with the downside that the quest creator has linearly-increasing workload.

    Node exclusion introduces a more RPG-like concept into the story, whereby completing certain nodes (or activating certain conversation options) closes off other branches that might otherwise have remained open. Killing a farmer's cows in return for a reward from a bandit might close off some dialogue about searching for a cure for the cows' diseases, for example. Consequences to player actions results in greater immersion, at the cost of (probably exponentially-increasing) creator workload.

    Global persistence, as mentioned before in this thread, allows the creation of server-driven (not just player- or story-driven) plots. It would probably take the form of "node X becomes available when Y people have completed CONDITIONS", and would mean that people have a real sense of the plot unfolding before them as opposed to the artificial, pregenerated writing it (technically is, to be honest) would be.

    Again, no pressure, these are just ideas that I thought about (and the reasons why I think they're important). Hope it's coming along well.
  21. Offline


    Any updates? I love the idea behind this.
  22. Offline


    Just wondering how much more of the plugin needs to be done for it not to be WIP?
  23. Offline


    Hmm I really do need to get my alerts sorted - they aren't letting me know when you guys ask me things.

    Bad News First Off:
    First off, I do have a lot more work that I'm ending up doing in C++ for my course, which has left me nearly no time for projects like this. I'm going to be blunt here - I do intend to work on this, I don't know whether I can. What I'd advise for now, is to try to find an alternate solution to what LDQuest did - hopefully I will end up being able to release anyway and everything will be fine; but things have changed so much from that start that it'd be wrong for me to promise anything to anybody on this.

    However, as I say, that doesn't mean I plan to stop - I just want everybody to be smart about this, and not pin their hopes on me getting this complete - I wish I could say something better than that. To put my time into perspective, I've not even played on my own Minecraft Server for the last month or so, let alone had time to really move development forward on this.

    Better News Though:
    I've found some time tonight I can get a little done, if it's successful, I'll let you know.

    I do really apologise for this all, but I always feel it's better that I tell you my situation exactly as it is; I'm not going to make things sound worse than they are, but neither will I ever kid you on that things are progressing when they are not.
    As I say, development isn't "dead", but it's moving so slowly that I can hardly claim that it's moving. I hope you all understand, and I hope this doesn't sound as gloomy as it did writing it. I've not given up on it, but compared to the coursework projects, this comes second.
Thread Status:
Not open for further replies.

Share This Page