[DEV/FUN]PuzzleQuest v0.1 - Redstone-Powered Questing [740]

Discussion in 'Inactive/Unsupported Plugins' started by MichaelBurge, May 4, 2011.

  1. Offline

    MichaelBurge

    PuzzleQuest: Redstone-Powered Questing

    Version: v0.1

    Have you seen uQuest, thought it'd be nice to give quests to your users, but were disappointed with only gathering and killing quests? PuzzleQuest builds on that framework, using the RedstoneChips library to allow you to design dungeons for your users to explore.

    This is a private plugin I've been using on my server for roughly a month(as of May 5, 2011), to help users go through tutorial areas.

    Features:

    • Adds a variety of quest-related circuits to your server.
    • Tracks quest completion, so you can guarantee starter kits or tutorials are only given/done once.
    • Is used on a live server with live users finding live bugs. This guarantees it won't get *too* outdated.
    Setting Up the Plugin:
    For the plugin itself:

    1. Install RedstoneChips v0.9 and uQuest 1.20.
    2 Put the PuzzleQuest.jar file and PuzzleQuest folder in your /plugins/ directory. data.yml contains the quest data for your server's players.
    3(optional). Put the sample Quests.yml in your uQuest folder, to see the 2 tutorial quests I use on my live server.


    For the circuitry:

    3. Make a RedstoneChips circuit with 1 output, 1 input, and 1 interface block. The circuit will activate in a 10 radius around the interface block whenever the input receives a signal. Every user in the radius will be affected.
    4. Make a sign on the chip that says


    Code:
    questcircuit
    <quest id>
    <subtype>
    
    where "<quest id>" is the numerical quest code in your uQuest file, and "<subtype>" is one of these:

    • "give": Attempts to give the quest to the user, outputting a signal if it was successful.
    • "detect": Outputs a signal if the quest is currently active
    • "finish": Attempts to finish the quest for the user. Outputs a signal if it was successful.
    • "drop": If the quest is currently active, drops it and outputs if successful.
    • "clear": Clears the quest from the user's list of completed quests. Outputs a signal if the quest had actually been completed.
    • "completed": Outputs a signal if the quest has been completed.
    Video Tutorial:
    This tutorial introduces each of the circuits above and shows how to make a simple quest using my plugin.
    Part 1: http://www.youtube.com/watch?v=6Pc_vP6j6GI
    Part 2: http://www.youtube.com/watch?v=MRdNE3UDQ_0

    Planned Features:
    • Allow you to add an optional "radius" argument to the sign.
    • Add direct iConomy support, allowing you to detect if the user has enough money to buy dirt from the tutorial's shop and give him money if not.
    • Monster spawning for dungeons.
    • A circuit for resetting levers to a default state.
    • Teleportation circuits for advanced hedge mazes.
    • Fix some minor errors the logs will show on loading, relating to uQuest's obectives formatting.
    • Allow WorldEdit scripts to be run from a chip.
    • Allow the chip to listen on a broadcast channel for a quest.
    • Circuits for saving/restoring/wiping players' inventories.
    • Allow a range of quests to be given on the sign argument. So "10-50" will process on the first valid quest from 10 to 50.
    Changelog:
    Version 0.1
    • Initial release.
     

    Attached Files:

    ronix likes this.
  2. Offline

    Trainerdusk

    Pictures please?
     
  3. Offline

    Nitnelave

    Yeah, or even better, a video... I'm not really clear on how it works right now
     
  4. Offline

    Morphy

    sounds pretty nifty thought :3
     
  5. Offline

    MichaelBurge

    Just to clarify, you need to have both uQuest *and* RedstoneChips. The questing is a modified PIRsensor from the RedstoneChips Sensor Library that also gives/detects/drops/finishes quests from uQuest.

    If you're a reasonably experienced RedstoneChips user who knows how to build said PIRsensor, can you tell me if the documentation is still too confusing? I might add a video once our new maze is up, to show how to give questing support.

    For other users, you need to install these other libraries and become accustomed to them.
     
  6. Offline

    Anthemic

    .zip file appears to be invalid.
     
  7. Offline

    MichaelBurge

    I zipped it using WinRAR, and it comes up as a "WinRAR ZIP File" as the type.

    It might be a different ZIP than 7-Zip or such uses; does it open with WinRAR?

    Edit: It also opens fine in 7-ZIP, for me. Is anyone else having this problem?
     
  8. Offline

    Anthemic

    Ah ha! It does open with WinRAR, yes--but for some reason, doesn't default to that format. Maybe settings I have somewhere. But I got it to open. Thanks. :)

    I've been messing around with this for an hour now; I'm a reasonably intelligent server admin who can generally figure out all kinds of new systems given the right documentation. Redstone Chips are new to me, but I want to learn. I set up what I thought was the correct circuit, but I'm being told that the chip expects a clock pin. I can't find a clock input pin in the redstone chips documentation. What I can find is a clock chip, but I'm not clear on how I integrate that into the quest chip.

    I am sympathetic to the dilemma here--it's outside the scope of your job description to educate us all on redstone chips. :) Could you possibly post a picture of a working implementation / PIRsensor here? The documentation is not helpful over at the chips wiki.

    Cannot WAIT to get this up and running! :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
  9. Offline

    MichaelBurge

    "Clock pin" is a term for "Send a signal to this input to cause the chip to actually update." If you wanted to transmit a 10-bit wireless signal, for example, you wouldn't want 10 different signals to be sent out all at different times as the circuit gets them, so you'd make an 11th "clock pin" that sends the state of all inputs when it receives a high signal.

    In this case, when your 1 input pin receives a signal, it will cause the quest plugin to scan for users and perform its task. It won't do anything automatically, only when it receives this signal and only when it goes from low to high(so that putting a torch nearby won't cause it to be always on). You can use the "clock" circuit to generate signals repeatedly for this purpose, or do what I do and use a pressure plate.
     
  10. Offline

    Anthemic

    Oh no! I am more of a noob than I thought.
    From reading your post regarding the PIR sensor, I was under the impression that the necessary input was proximity of a player, not a pressure plate. So, I am confused.
     
  11. Offline

    MichaelBurge

    I'll release a video detailing how to make a simple "walk through this tunnel" quest later tonight, then.
     
  12. Offline

    Anthemic

    Your patience and willingness have scored major points with me. Thank you.
     
  13. Offline

    ronix

    Very cool! Some of the planned features could be copied from PailStone, NeoScript oder some other IC plugin. Also look at DungeonReward for cool teleporting features.
     
  14. Offline

    IronPython

    i was wanting to know if there is a way to set it up to give you a random quest ether by a list of quest to chose from or just a way to input a random number into the circuit? i was thinking of using this on my server as a Quest giver so that people why wish to earn some extra cash can do random quest.
     
  15. Offline

    MichaelBurge

    IronPython: You could physically create a separate chip for each quest, and then use a random number generator combined with a multiplexer to choose a random quest; but it's not as easy right now. I'll add that in the list of planned features, though.

    Rather than use NeoScript or something like it, I would likely use WorldEdit's scripting feature and give a circuit for calling those scripts from RedstoneChips.
     
  16. Offline

    Anthemic

    I got it to give me the quest--and the circuit stays active. So if someone else comes along (my testing account) and tries to use the pressure plate to initiate the quest, it won't give it to him. How do you turn the circuit off (short of hitting the output lever?)

    Edit: From Planned Features: "A circuit for resetting levers to a default state." Is this the answer to my question?
     
  17. Offline

    MichaelBurge

    @Anthemic
    @Trainerdusk
    @Nitnelave

    I've linked to my video in the original post. To Anthemic specifically, I've answered how to deal with the circuit constantly emitting power with its lever in the video as well.

    The first time I recorded it, the video was corrupted; so I had to rerecord. Hopefully it turned out alright and answered your questions, though.
     
  18. Offline

    Anthemic

    Thanks for the video, MB. I'm now up and running with the plugin just like I want it to run. Bravo. This is a huge benefit to the kind of server I've been wanting to create.
     
  19. Offline

    Nitnelave

    How about a sequential quest giver? if you have no active quest, it gives you the next one, in order, that you haven't done. This would actually be cool. But so far, it looks like a great plugin, even though it is not intuitive to use.
     
  20. Offline

    MichaelBurge

    I like this idea. I might allow you to put keywords like "next" in place of the quest ID for your suggestion, or an entire range of quests that it'll select the first valid one from.

    I could use one of these on my server, actually; though it might be 'dangerous' to free-handedly give out "the next quest". I'll probably go with a quest range, so "10-50" as the quest id would pick the first valid quest from 10 to 50.
     
    Anthemic likes this.
  21. Offline

    Anthemic

    I am a little surprised this plugin hasn't generated more traffic yet. It is quite wonderful. Please keep up the great work, MB!
     
  22. Offline

    DragonSupremacy

    Is there any way to implement some sort of Permissions, so only certain groups may get the quest offered?

    Edit: Also, Couple of issues:

    - uQuest doesn't seem to recognize a "puzzle" type of quest in the quest.yml
    (I've saved the server log and the quest file as txt so the bukkit forms would allow me to attach it :p)

    - Creating a "Clear" circuit gives me a message that I succesfully cleared the quest I am on, but doesn't actually do anything (and doesn't give out a signal)

    - When I don't have the necessary steps done for a quest (like acquire 20 logs), and I step on the plate, it still says "quest complete" but it doesn't output a signal, and it also (understandably), doesn't give a signal on the completed-check
     

    Attached Files:

  23. Offline

    MichaelBurge

    @DragonSupremacy

    I might expose the Permissions plugin via RedstoneChips; that would allow you to write the check yourself.

    2.) Quest isn't a valid type; he doesn't allow easy extension of quest types right now so it'll throw an error on that. Just ignore it for now.

    3.) If you haven't run the quest through a "finish" circuit, it doesn't have anything to do. It doesn't output a signal because you haven't finished it. Remember that PuzzleQuest maintains its own list of completed quests; if your users complete it with "/quest done" it bypasses the check. I have the permissions for it disabled on my own server.

    4.) I haven't tested it with uQuest's gathering/killing quests on my own server, but PuzzleQuest does not check for the conditions on those before completing it. I might add in a circuit type later that checks for conditions, but for now I don't recommend using it with the other types.
     
  24. Offline

    KyleCRat

    Ok, so Ive been setting this up. and I have made a quest to punch out 5 fire (by punching the netherrack underneath) and the quest is given like normal and works perfect. but then I go to the finish circut and it completes the quest even if the objectives are not finished. why is this?
     
  25. Offline

    EggRoll

    07:54:09 [SEVERE] Could not load 'plugins/PuzzleQuest.jar' in folder 'plugins': RedstoneChips
    org.bukkit.plugin.UnknownDependencyException: RedstoneChips
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129)
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:191)
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:115)
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:100)
    at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:218)
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:205)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:145)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:260)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)
    >

    CB 766
     
  26. Offline

    Nitnelave

    You have to have the plugin redstoneChips and uQuest installed for puzzlequest to work :
    http://forums.bukkit.org/threads/mech-redstonechips-0-9-integrated-circuits-plugin-740.1205/
    http://forums.bukkit.org/threads/fu...verly-customizable-quest-system-793-602.7092/
     
    EggRoll likes this.
  27. Offline

    EggRoll

  28. Offline

    Snaipe

    Hi,

    Great plugin, it'll be very userful :)

    I have one suggestion thought :
    could you try to add some kind of rewarding system, like on the completion the player gets an item ( of if failed, he looses an item ). i've been searching for such a function ( and redstone-capable ), but never find.

    Another great thing would be to run some commands that are normally unavailable ( like /heal, /shock of some trap, etc ) but I don't know if that's really possible.

    Anyway, i really love it.
     
  29. Offline

    lilalulelo

    I'm getting this error with Bukkit 803, RedstoneChips 0.9 and Uquest 1.5.

    Code:
    2011-05-24 17:53:46 [SEVERE] Could not pass event REDSTONE_CHANGE to RedstoneChips
    java.lang.NullPointerException
    at hawox.uquest.QuestInteraction.getCurrentQuest(QuestInteraction.java:201)
    at hawox.uquest.QuestInteraction.getCurrentQuest(QuestInteraction.java:212)
    at usa.MichaelBurge.PuzzleQuest.PuzzleQuest.detectQuest(PuzzleQuest.java:100)
    at usa.MichaelBurge.PuzzleQuest.questcircuit.inputChange(questcircuit.java:36)
    at org.tal.redstonechips.circuit.Circuit.redstoneChange(Circuit.java:160)
    at org.tal.redstonechips.CircuitManager.redstoneChange(CircuitManager.java:70)
    at org.tal.redstonechips.RedstoneChips$2.onBlockRedstoneChange(RedstoneChips.java:157)
    at org.bukkit.plugin.java.JavaPluginLoader$32.execute(JavaPluginLoader.java:461)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:310)
    at net.minecraft.server.BlockRedstoneWire.a(BlockRedstoneWire.java:110)
    at net.minecraft.server.BlockRedstoneWire.g(BlockRedstoneWire.java:40)
    at net.minecraft.server.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:285)
    at net.minecraft.server.World.k(World.java:388)
    at net.minecraft.server.World.applyPhysics(World.java:367)
    at net.minecraft.server.BlockRedstoneWire.g(BlockRedstoneWire.java:48)
    at net.minecraft.server.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:285)
    at net.minecraft.server.World.k(World.java:388)
    at net.minecraft.server.World.applyPhysics(World.java:367)
    at net.minecraft.server.World.update(World.java:336)
    at net.minecraft.server.World.setData(World.java:281)
    at net.minecraft.server.BlockTorch.e(SourceFile:73)
    at net.minecraft.server.BlockRedstoneTorch.e(BlockRedstoneTorch.java:55)
    at net.minecraft.server.Chunk.a(Chunk.java:270)
    at net.minecraft.server.World.setRawTypeIdAndData(World.java:232)
    at net.minecraft.server.ItemBlock.a(ItemBlock.java:73)
    at net.minecraft.server.ItemStack.placeItem(ItemStack.java:56)
    at net.minecraft.server.ItemInWorldManager.interact(ItemInWorldManager.java:217)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:535)
    at net.minecraft.server.Packet15Place.a(SourceFile:57)
    at net.minecraft.server.NetworkManager.a(NetworkManager.java:196)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:377)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:292)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)
     
  30. Offline

    lilalulelo

    Is it possible to give a quest after another in a row, like a storyline ?

    I've tried with one chip to finish the quest, then another one activated with a delayer to check if the quest was completed and then give the next one, but it seem to react with this weird bug i've posted above.
     

Share This Page