Variable Quest menu

I know, it’s something ridiculously easy to script, and there’re probably more advanced alternatives to do this, but I needed this feature on my project and I’m going to use anyone else’s scripts on it. Thought I may share it anyway:

VARIABLE BASED QUESTS MENU

script | molegato functions

This simple script doesn’t provide a quest system. It just helps you making more user firendly the use of variables for making quests. To put it simple, you set a quest to be ridden by the variable 3. The variable value is 0, so the quest is invisible on the menu. Someone starts the quest, just by changing the variable 3 value to 1. Whenever the quest requeriments are fulfilled, any event can change the variable to 3, or any greater value, and grant a reward. The menu will show if the quest is completed or not based on that variable. You can set custom icons to any quest, and optionally, an image to show on the window. Now it also let you use the ‘activate’ function. This feature lets your player to select a certain quest, and mark it as the main one for the time being! Useful if those quests are some sort of ‘mission’ and you cannot do two of them at the same time!

That’s all. Remember you need molegato functions 1.2.1 or newer to run it!

As an example, something I was making back in the day:

Games that use this script:

Advertisements

57 thoughts on “Variable Quest menu

  1. Did you intend for the script link to go to the Functions script or was that a mistake?

  2. This is cool. Its simple enough that I understood how it worked immediately, but still customizable.

  3. […] gives us a Variable Quest Menu script.  This is simple, but cool, worth giving a […]

  4. snatch says:

    I’m a total noob, lol

    How do I “program” this menu?
    I’m using some of Yanfly’s scripts, which alters the ingame party menu.
    I have no idea what I’m doing and I’m really confused XD

    pls help .-.

    • molegato says:

      Hi, what do you mean with “program” it?
      You just need to place the script above main.
      To create quests, you have to write them on the configuration module, wich is the first part of the script. There’re instructions on how to do so and a couple examples already. Just copy/paste them and edit the information fields/texts/whatever. After that, it’s only matter of using variables to activate/complete them. Hope that puts you on your way to use it!

      • No I mean like, the ingame quest menu. I have no idea how to open it, or create a link to it in the ingame party menu. I’m a total kltuz at scriptin. I’m aware how to create quests.

      • molegato says:

        Easy peasy.
        The line of code that calls the quest menu is:
        SceneManager.call(Scene_Quests)
        You can either use a script call on an event, or add it as an option for the menu. Those are very general things, so I’m sure you’ll figure them out on your own, as they’re useful for many things.

  5. Oh god I’m so embarassed. I have no idea wtf I’m doing ._.
    Where am I supposed to look for the scene_quests thingy. Sorry for putting you through this 😦
    I think I’ve degraded myself really badly asking you this :/

    • molegato says:

      That line of code I wrote is what you should write inside of a script call on an event. There’s an action on the third tab. You know, in the first one you add messages, the second one has teleporting, and the third one also has battle things. Down there in the third one there should be a ‘insert script’ or ‘execute script’ option. Just use that one and paste the code I gave to you.

    • molegato says:

      Any event is ok. For example, if you put it on a common event, and assign that common event to an item, using the item you could open the menu. If it’s a normal event, lets say, a guy on a bar, talking to the guy could open the menu.
      By the way, I’m getting the impression you’re not very familiarized with rpgmaker yet. Probably you’d rather learn a bit how to use it by making a couple of more simple project, before attemping to use scripts or complex eventing engines. Just an opinion.

      • You’re half right, I’m really trying to familiarize myself with the maker’s variables, though I am working on a basic project, though at the same time trying to extend control over events and such/variables/scripting. I think I understand what you mean by assigning the event to objects and npcs and such.

  6. Lj says:

    I get the following error:

    Line 184 NoMethodError
    Undefined method ‘draw_system’ for #

  7. […] a look on the script’s post, I’m updating it right […]

  8. Minu says:

    i don’t understand with the variable?
    how can i active the quest?
    do i need to make same variable?
    or i can make a different variable?
    i hope you understand -_-

    • molegato says:

      Hi!
      You can configure what variable is what quest on the config part of the script. For example, you can use the variable 21 for the quest ‘Find the bad guy’, just follow the templates set as example on the script. If you want to activate the quest in mid-game, you just need to set that variable’s value as 1, and it’ll already appear in the menu! To complete it, just set it to 3.
      2 is reserved for ‘current main quest’, when you set a quest as the current main one by changing its variable value to 2, the previous one becomes just active.
      Long story short, this scrip just makes the menu for something you would just event normally. Hope it’s clear now 🙂 !

  9. Deathspark says:

    I have a question =3
    The first screenshot seemed to have a custom background.
    I want to do the same, but I’m not sure how it’s done :/
    Perhaps explain to me how you erase the blue boxes and out your custom background?

    • molegato says:

      Hi! You mean the orange one? That’s a customized version I made for a project of mine. You can edit the script (make backup first) and get all sort of interesting effects. For that one, I just drew the background as I would draw any other image, and just changed the windowskin for the windows. I’m sorry for not being more precise on what to edit or what code to write, but it’s been a while and my ruby is kind of rusty. (I’m working with unity now, probably soon I’ll have something to show). Just remember to erase the background when you leave the menu, or you’ll end up having it all over the game (it happened to me at first!).

  10. Deathspark says:

    Nyeah! The orange one!
    Hm 0_o;
    I’m not a scripter XD
    Perhaps send me a demo?

    • molegato says:

      Sorry, I’m not on rpgmaker lately, so I can’t make a demo for you right now. Maybe it’s time to start with the basics of scripting! I started by modifying menu scripts, actually, since that’s the easiest thing to do. Just try changing parameters and replacing chunks of code with other chunks that you suspect do something. I know this is not the best of the indications, but you’ll see that messing around with the code is fun.

  11. Deathspark says:

    0_o; I’ll try I guess… Thanks by the way.

  12. Sir Eiridan says:

    Hey. I wanted to use this in a project of mine, but I feel I’m making it more complex then it should be. I’m not entirely sure exactly how this works and how to use it to write out quest and get them to work properly. I’m such a noob and scripts, even just editing tiny little details, make me extremely nervous. I’m lucky enough I managed to get it to work with the mean I’m using in my current game, but it’s blank and I don’t know how to fill it up with quests. Any help with be greatly appreciated and I wouldn’t want to have to discard this awesome script from my game because I’m just such a noob at scripting.

    • molegato says:

      Hi! It’s simple, see the example quest? Just copy it a couple of times, and then edit the text in each copy.
      Also change the variable number and remember said number, as later you’ll need it to make the quest progress. Enjoy!

      • Sir Eiridan says:

        I was trying to do that, but I got confused as to what I’m supposed to copy(which I now assume is the bit under “QUEST_DATA=[“) and where to put it. Also, some thing that confused me were the definitions above it that say “TEXT_UNSOLVED=”-Aviable-“or “TEXT_ACTIVE=”-Active-“. I don’t want to seem like a bother, but I just can’t seem to wrap my head around the whole procedure. And like I said in the last comment, messing with scripts scares me so I’m possibly making this more difficult then it should be for anyone else.

      • molegato says:

        Ok, first look at the example: there are 3 quests. First quest, second quest and third quest.
        First one looks like this:

        [“first quest” ,1 ,1 ,”” ,”this is a first quest set up for testing.”,
        “yadda yadda yadda yadda
        more yadda yadda
        and a bit of bla bla blah”],

        Notice it ends in a comma.
        Second one is basically the same, with a different name. So, just copy that one and paste it after the third, or modify its values.
        The whole block I pasted up there was a quest, everything from [ to , compounds one, and everything before the first [ and the last , must remain the same.
        Long story short:
        DON’T CHANGE:
        #list of quests. Please follow the pattern shown on the commentary.
        QUEST_DATA=[

        DON’T CHANGE:
        ]
        end

        Everything in between are quests. I hope that clears that up! 🙂

  13. Sir Eiridan says:

    Alright, that cleared up a lot for me. Thank you. So then, all I have to do is copy the examples, place them before each other, and change the variables? But then shouldn’t the example quest show up in game once the menu is brought up? When I bring up the Quest log, it’s only three blank boxes.

    • molegato says:

      Yeah, because those quests are ‘hidden’. As said on the instructions, if the variable value is 0, the quest is invisible.
      if it’s 1, then it’s visible,
      if it’s 2, the quest is ongoing, and if it’s 3, it’s completed.

  14. Sir Eiridan says:

    Alright well I just set up a simple quest for testing purposes. It looks like this:

    [i][“Find Ser Eiridan” ,1 ,233 ,”window” ,”Locate Ser Eiridan”,
    “It’d be best to find him
    before doing anything else.
    He may be at the Training
    Grounds.”][/i]

    I set the variable to ‘1’ so it could be visible. So, this script doesn’t make the quests, only makes them simpler to access, if that’s correct. So, now my question is how do I go about setting up an event where the character receives the quest? Do I take the name of the quest and make a variable in an event or make a switch?

    Also, sorry for all the questions and being such a bother.

    • molegato says:

      Let’s see, the variable you set in the script is a number, you decided that the ‘Find Ser Eiridan’ quest will use the variable number 1, right?
      Now, inside any event, just change the value of that variable to 1 and that quest will be visible on the menu.
      What this script makes is a menu with quest names and descriptions, while you have to event the quest progress as you would normally.
      And don’t worry that much about the questions. I take you’re fairly new at RPGmaker, and doubts just happen! ^^

  15. Sir Eiridan says:

    Alright so let me see if I get this now…

    Hazzah I did it 😀 I got it to work 😀
    Even though it’s placed the “window” image, it worked 😀 Now I can continue working on my game with much more ease at mind.

    Thank you so much for your help and this Quest Log script. It will become invaluable to me from here on out.

  16. Sir Eiridan says:

    So, after all you did to help me, I managed to get the quests to show up on the menu, but, they either all show up at the same time or a random times. I’m thinking it’s because I have a variable that uses 1 as well, but it’s for a chest. Would that interfere with the script since the variable ‘1’ is already in use to show the quest to the player? Also, are the variable restricted to only 0-3 or could you use more then that?

  17. Sir Eiridan says:

    Mmh this changes things then. I’ve already made some conditional branches in my project which means variable since switches aren’t something I’m used to. So, say I have a condition branch that, once the player has interacted with it, it adds a variable of ‘1’ so that the player doesn’t experience a repeat, and I have a quest that uses the variable ‘1’ to make it available. Neither of them have anything to do with each other but once the player has spoken to the NPC and the variable is added, will that make the quest become available, even though I preferred to make it available at a certain time.

    • molegato says:

      It appears to me that you’re not familiar with the concept of variable.
      See, a variable is a ‘bucket’ for a value to be in.
      In rpgmaker, variables are numered and differenced by that number. Let’s suposse you use the variable number 4 to check how many times you’ve talked to a guard, so that he stops repeating himself after a while. Each time you talk to him, you add 1 to the value of the variable number 4. Later on, if you want to check how many times you talked to that guy, you just need to check the value of the variable number 4. However that variable can only hold one value at a time! If you need two different values, you need two variables. So, if you’re using the variable number 4 for the guard thing I said before, you cannot make a quest that uses that same variable, or talking with the guard will affect the state of the quest. RPGmaker lets you add a name to each variable number, and with a good reason. Just name variable number 4 ‘times talked to guard’, and variable number 36 (or whatever number you use for the quest) ‘Potion quest’.

      You can select ANY variable for the quests, you don’t need to use 1,2,3…
      A good thing to do is to pick a good bunch of variables (like from 20 to 50) and use it only for quests, while using the rest for your eventing needs.

  18. Sir Eiridan says:

    See, last night as I was going to bed, I was going over all the reason why I could be messing this up myself and I finally realized what it was xD I was placing the numbers 0-3 as the variables instead of the number I placed the variable one. I did it that way and now it works completely.

  19. AlliedG says:

    Easy to follow and what I needed for my game – thank you for your time 🙂

  20. Invisible One says:

    Holy…
    When I first wanted a journal/quest thing, I thought I’d have to ask my cousin and be laughed at by her before she helped me.
    Then I found this.
    I am overly proud of myself for figuring this out without knowing anything about scripting. ^_^
    Anyway… Thanks so much for putting this out there! 🙂

  21. Raichu says:

    Hi there, script is working great so far, but is there any way to change a quest description during the game? ie. make an event that changes the quest description?

  22. […] Nom : Variable Quest menu Auteur : Molegato Langue : anglais Catégorie : divers Démo : non Site : LIEN […]

  23. How do I change the color of the quest status? So far, I see 0 = White, 1 = reddish brown, 2 = green, 3 = dark blue and 4 = light blue. Where can I adjust that? The blue and green are hard to see with the menu background color I have.

    • molegato says:

      In the config part, there’s this:
      # color of the text in both cases
      COLOR_SOLVED=1
      COLOR_UNSOLVED=2
      COLOR_ACTIVE=3
      The color is an index, the window image has the colors defined there. (that’s what the colorful squares are on the lower right part of the image). If you’re not replacing it, just change the numbers until you find the colors you like.

  24. Hi Molegato.

    Great script and wanted to add that I am using it for my project Promise

    Screenshot in imgur link

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s