Main Menu
  • Welcome to The RPG Maker Resource Kit.

Quest Journal v. 2.1

Started by modern algebra, March 25, 2008, 08:05:14 PM

0 Members and 5 Guests are viewing this topic.

Mitsarugi

Quote from: JonFawkes on September 24, 2011, 05:31:50 PM
Quote from: Mitsarugi on September 24, 2011, 05:14:00 PM
Modern Algebra is it possible to add an option to show how much of an item you already have?
like a quest asks you to get 4 iron ore and when you get 1 or more it says so in the quest window?

Examples:
Objectives
Get 4 Iron ore  1/4

Objectives
Kill 20 Crabs 13/20
Since this script requires Paragraph Formatter and Special Codes formatter, you can probably just use \v[x] and store those quest objectives in a variable. For example:

Every time you kill a crab
Change Variable 0001: add 1

On the objectives, you would write
Kill 20 Crabs \v[1]/20

I don't know how you should tell it to complete the quest, but probably something that checks "When Variable 0001 >= 20, run script "complete_objective (1, 2)"


yes you could do that , but i'm looking at it and found the piece of code it needs ^^, still need to get it work tho :p

$game_party.item_number($data_items[1]) #which is the number of Potions the player has

self.contents.draw_text(0, 0, contents.width, WLH,[$game_party.item_number($data_items[1]), "/ ","4"] ) #this is how it could be used in a text but i can't get it to work otherwise :p

cozziekuns

Check the control variables event. There should be something which outputs:

Control Variables: [Variable] = [Item] in your inventory.

Mitsarugi

#477
Quote from: cozziekuns on September 24, 2011, 07:19:12 PM
Check the control variables event. There should be something which outputs:

Control Variables: [Variable] = [Item] in your inventory.

yeah but even so i would like it to show in the quest window without using 9999999 variables for it to work ;p
and with that piece of code i posted it should be possible if i knew how to use it

when 0 # Quest 1 <- Remember: Quest IDs MUST be unique!
      name = "Missing Iron ore"
      description = "Find the Iron ore Ralph Lost"
      objectives[0] = "Go to the mine"
      objectives[1] = [$game_party.item_number($data_items[1]),"/" ,"4"]
       


this doesn't work tho  :'(



EDIT: + i don't know how to let it check the number of items to see if you have the required number

JonFawkes

I think the program is interpreting
objectives[1] = [$game_party.item_number($data_items[1]),"/" ,"4"]
As an array and not a string. I'm not sure how to fix this, but maybe something like this?
objectives[1] = $game_party.item_number($data_items[1])+"/4"
I don't think that's quite correct, I think you need a way to draw text for the item_number variable

Mitsarugi

Quote from: JonFawkes on September 24, 2011, 09:17:30 PM
I think the program is interpreting
objectives[1] = [$game_party.item_number($data_items[1]),"/" ,"4"]
As an array and not a string. I'm not sure how to fix this, but maybe something like this?
objectives[1] = $game_party.item_number($data_items[1])+"/4"
I don't think that's quite correct, I think you need a way to draw text for the item_number variable
nope your code doesn't work -> gets to title screen and crashes while going in game
my code gets in game , in quest scene then crashes when selecting the quest with the code

Mitsarugi

#480
i got it to work for half of it :D

add       text.gsub! (/\\MIID\[([0-9]+)\]/i) { $game_party.item_number($data_items[$1.to_i]) }
at the end of line 228 in "Special Codes Formatter"
then in "QJ2 - CONFIGURATION" objectives[2] = "\\MIID[1]/4"
this will show you how much potions you have (1/4 , 2/4, ect) ....still trying to make it work so it completes the quest once you have the required amount of items ;p


EDIT: lol it doesn't update more then once -_-', it only shows the number of items the first time i go to the Quest scene, then after doesn't update, i'll try to fix it (i am a noob scripter ;p)

EDIT2: Modern Algebra your variable call for the texts doest work either (\\V)

EDIT3: Would be nice to be able to do something like this
when 0 # Quest 1 <- Remember: Quest IDs MUST be unique!
      name = "Missing Iron ore"
      description = "Find the Iron ore Ralph Lost"
      objectives[0] = "Go to the mine"
      if $game_party.item_number($data_items[1]) >= 4 #potions
        objectives[1] = "Find the lost Iron ore.  \\c[3]Complete!\\c[0]"
      else
        objectives[1] = "Find the lost Iron ore.  \\MIID[1]/4"
        end

and then it should stop updating once it says "Complete!"
but i dont even know how to update the number because even the \\V command doesn't update

pacdiggity

That's unnecessary. The problem with JonFawkes' code was that $game_party.item_number returns an integer, and that you were adding string to it. You also cannot store the objective as an array. The way to do it would be this:
when 0 # Quest 1 <- Remember: Quest IDs MUST be unique!
      name = "Missing Iron ore"
      description = "Find the Iron ore Ralph Lost"
      objectives[0] = "Go to the mine"
      objectives[1] = $game_party.item_number($data_items[1]).to_s + " / 4"

Notice the .to_s in the last line that converts the number to string, so you can add the " / 4" to it.
However, I don't think that'll work. I'm not familiar with the way quests are handled in this game, but I don't think that they're updated. Basically, if it's updated then it'll be fine. If it's not, then it'll say 0 / 4 forever.
it's like a metaphor or something i don't know

Mitsarugi

#482
Quote from: Pacman on September 25, 2011, 12:37:12 AM
That's unnecessary. The problem with JonFawkes' code was that $game_party.item_number returns an integer, and that you were adding string to it. You also cannot store the objective as an array. The way to do it would be this:
when 0 # Quest 1 <- Remember: Quest IDs MUST be unique!
      name = "Missing Iron ore"
      description = "Find the Iron ore Ralph Lost"
      objectives[0] = "Go to the mine"
      objectives[1] = $game_party.item_number($data_items[1]).to_s + " / 4"

Notice the .to_s in the last line that converts the number to string, so you can add the " / 4" to it.
However, I don't think that'll work. I'm not familiar with the way quests are handled in this game, but I don't think that they're updated. Basically, if it's updated then it'll be fine. If it's not, then it'll say 0 / 4 forever.

yes that works but doesn't even update once and the way i did update at least once :)
so i guess it's updated but only the first time you enter the Quest scene....tested it and yeah it only updates the first time, so when entering and having 0
it'll stay 0/4 forever and when entering and having 51 it'll stay 51/4 forever

Mitsarugi

My little addon which will show the items needed for a quest and the number owned , i show in the demo how it works ;p


http://www.mediafire.com/?uw5i71wvrmwxx1i


WillCGjr

Hey guys i know I'm pretty late with RMVX, or any of the RPG makers. but i just found this script from another website, but i wanted to come to the source. I love the script, i downloaded a demo from a different website, and it was finding a stick for a dog. I'm probably completely dumb, since i am very new at creating games but is it possible to create a quest like "talking to someone">finding a key>bring the key back to complete the quest.
Ive been tampering with this quest system, i like how it looks, I'm showing credit for M.A's script, lol can someone help a confused person...thanks...

modern algebra

The demo with finding a stick is for v. 1.1, so you may want to test out v. 2.1. It does include a quest like the one you are referring to, though it is talk to someone > get mushrooms > bring mushrooms back to complete.

With both 1.1 and 2.1 though, the script doesn't really make the quests - it is just a graphical representation of quests you make through eventing or other means. While 2.1 has more scripted options for tracking quest progress, etc. all that you need to do is update this script once the player reveals/fails/completes a quest objective.

So, in your example, the actual quest would all be through eventing and, in particular, through switches and conditional branches.

So, your quest giving event would be like this:

Page 1:

@>Text: -, -, Normal, Bottom
  :        : Hi. Can you help me find a key?
@>Show Choices: Yes, No
  : When [Yes]
    @>Text: -, -, Normal, Bottom
      :        : Thanks! I dropped it down the sewer.
    @>Control Self-Switch: A is ON
    @>
  : When [No]
    @>Text: -, -, Normal, Bottom
      :        : Aww, what can I possibly do?
    @>
  : Branch End



Page 2:
Condition: Self-Switch A is ON

@>Conditional Branch: Self-Switch B == ON
    @>Text: -, -, Normal, Bottom
      :        : Thanks again for finding my key!
    @>
  : Else
    @>Conditional Branch: [Key] in Inventory
        @>Text: -, -, Normal, Bottom
          :        : Wow! You found my key! Here's money!
        @>Change Gold: +100
        @>Change Items: [Key], -1
        @>Control Self-Switch: B = ON
        @>
      : Else
        @>Text: -, -, Normal, Bottom
          :        : Have you found my key yet? I told you it's in the sewers.
        @>
      : Branch End
    @>
  : Branch End
@>


Then you'd have some event in the sewers somewhere where you actually receive the Key:

Page 1:

@>Conditional Branch: Self-Switch A == OFF
    @>Text: -, -, Normal, Bottom
      :        : You found a key!
    @>Control Self-Switch: A = ON
    @>
  :  Branch END


So, that would functionally be the quest (though you'd likely want to add graphical flourishes and sound effects, etc.), without any updating of the Quest Journal.

All the quest journal does is give you a way to graphically show progress in the quest - it doesn't modify anything else.

So you would set the quest up in the Configuration section of the script (let's say it's Quest 10), and maybe you'd set it up like this:


    when 10 # Quest 1 <- Remember: Quest IDs MUST be unique!
      name = "Sewer Key"
      description = "Quest Giver lost his key! Find it for him so he can go back home."
      objectives[0] = "Search in the sewer for Quest Giver's key"
      objectives[1] = "Return the key to Quest Giver"
      icon_index = 80


Then, the only changes you'd make to the events of the quest itself are script calls to update progress. Since I don't know if you are using 1.1 or 2.1, I will provide versions of both:

[spoiler=Quest Journal 2.1a]
Quest-Giving Event

Page 1:

@>Text: -, -, Normal, Bottom
  :        : Hi. Can you help me find a key?
@>Show Choices: Yes, No
  : When [Yes]
    @>Text: -, -, Normal, Bottom
      :        : Thanks! I dropped it down the sewer.
    @>Control Self-Switch: A is ON
    @>Script: reveal_objective (10, 0)
    @>
  : When [No]
    @>Text: -, -, Normal, Bottom
      :        : Aww, what can I possibly do?
    @>
  : Branch End


Page 2:
Condition: Self-Switch A is ON

@>Conditional Branch: Self-Switch B == ON
    @>Text: -, -, Normal, Bottom
      :        : Thanks again for finding my key!
    @>
  : Else
    @>Conditional Branch: [Key] in Inventory
        @>Text: -, -, Normal, Bottom
          :        : Wow! You found my key! Here's money!
        @>Change Gold: +100
        @>Change Items: [Key], -1
        @>Control Self-Switch: B = ON
        @>Script: complete_objective (10, 1)
        @>
      : Else
        @>Text: -, -, Normal, Bottom
          :        : Have you found my key yet? I told you it's in the sewers.
        @>
      : Branch End
    @>
  : Branch End
@>


Key giving event

Page 1:

@>Conditional Branch: Self-Switch A == OFF
    @>Text: -, -, Normal, Bottom
      :        : You found a key!
    @>Control Self-Switch: A = ON
    @>Script: complete_objective (10, 0)
      :        : reveal_objective (10, 1)
    @>
  :  Branch END
[/spoiler]

[spoiler=Quest Journal 1.1]
Quest-Giving Event

Page 1:

@>Text: -, -, Normal, Bottom
  :        : Hi. Can you help me find a key?
@>Show Choices: Yes, No
  : When [Yes]
    @>Text: -, -, Normal, Bottom
      :        : Thanks! I dropped it down the sewer.
    @>Control Self-Switch: A is ON
    @>Script: q = $game_party.quests[10]
      :        : q.reveal_objective (0)
    @>
  : When [No]
    @>Text: -, -, Normal, Bottom
      :        : Aww, what can I possibly do?
    @>
  : Branch End


Page 2:
Condition: Self-Switch A is ON

@>Conditional Branch: Self-Switch B == ON
    @>Text: -, -, Normal, Bottom
      :        : Thanks again for finding my key!
    @>
  : Else
    @>Conditional Branch: [Key] in Inventory
        @>Text: -, -, Normal, Bottom
          :        : Wow! You found my key! Here's money!
        @>Change Gold: +100
        @>Change Items: [Key], -1
        @>Control Self-Switch: B = ON
        @>Script: q = $game_party.quests[10]
          :        : q.complete_objective (1)
        @>
      : Else
        @>Text: -, -, Normal, Bottom
          :        : Have you found my key yet? I told you it's in the sewers.
        @>
      : Branch End
    @>
  : Branch End
@>


Key giving event

Page 1:

@>Conditional Branch: Self-Switch A == OFF
    @>Text: -, -, Normal, Bottom
      :        : You found a key!
    @>Control Self-Switch: A = ON
    @>Script: q = $game_party.quests[10]
      :        : q.complete_objective (0)
      :        : q.reveal_objective (1)
    @>
  :  Branch END
[/spoiler]

WillCGjr

Awesome! thanks Modern Algebra! and if i didnt come to the source, my computer would probably be on the floor in pieces cuz i would still be pulling my hair out!! lol thanks again!

WillCGjr

I have a new problem after setting up the quests...sorry guys...
it says:

Script 'QJ2=Implementation Line 875: Nomethoderror occurred.
undefined method 'formatter' for
#<Paragrapher::Paragrapher:0x3a2bc88>

i dont under stant it, and i read carefully what Modern Algebra put, even checked the Tutorial Demo.
everything is correct unless im not seeing something? Can someone help?

modern algebra

Did you add the Paragraph Formatter?

Quote from: modern algebra on March 25, 2008, 08:05:14 PM
NB: This script REQUIRES the Paragraph Formatter! The Special Codes Formatter (found under the Addons in that same topic) is also recommended. If you want the Description box rounded, then you need the Bitmap Addons script.

WillCGjr

yes i added the formatter. I set up the quest just like the tutorial and tried the way you did on your post, i dont kno whats going on?

modern algebra

Well, the Quest Journal 2.1a requires the Paragraph Formatter 2.0. Maybe you're still using the paragraph formatter from the 1.1 demo? Because that would be outdated, so you'd need to replace it with the Paragraph Formatter 2.0.

WillCGjr

yupp im an idiot...thats what it was...haha thanks again. Sorry to keep ya busy over an idiot like me lol

IXFURU

Modern,

I've been using version 1.1 of the Quest script for a very long time.  I just recently noticed that in August you updated the script.  I wouldn't normally get the newer version of the script, (as the original suits my needs just fine).  However, I noticed that in the 2.1b, you are able to scroll the side with the objectives, which is something I've been having to work around for quite some time by creating more than one quest out of longer quests with more objectives.   

At any rate, I put in the new script, and simply replaced the 'when' section with the section I had created with 1.1 as instructed.  The problem is that there now seems to be a compatibility problem with the Neo Save System 3.0.     This problem occurs when I try to continue a previously saved game, or after I access the save system from a new game, it causes the error when I move the cursor down from the first save position.   Here's the error:



And here's the part of the Neo Save System which gets the error  It's line 416, which is the line that reads
"data[slot_id]['gamepar'] = Marshal.load(file)"


  def load_save_data(slot_id)
    file_name = make_filename(slot_id)
    if file_exist?(slot_id) or FileTest.exist?(file_name)
      @exist_list[slot_id] = true
      @data[slot_id] = {}
      # Start load data
      file = File.open(file_name, "r")
      @data[slot_id]['time'] = file.mtime
      @data[slot_id]['char'] = Marshal.load(file)
      @data[slot_id]['frame'] = Marshal.load(file)
      @data[slot_id]['last_bgm'] = Marshal.load(file)
      @data[slot_id]['last_bgs'] = Marshal.load(file)
      @data[slot_id]['gamesys'] = Marshal.load(file)
      @data[slot_id]['gamemes'] = Marshal.load(file)
      @data[slot_id]['gameswi'] = Marshal.load(file)
      @data[slot_id]['gamevar'] = Marshal.load(file)
      @data[slot_id]['gameselfvar'] = Marshal.load(file)
      @data[slot_id]['gameactor'] = Marshal.load(file)
      @data[slot_id]['gamepar'] = Marshal.load(file)
      @data[slot_id]['gametro'] = Marshal.load(file)
      @data[slot_id]['gamemap'] = Marshal.load(file)
      @data[slot_id]['total_sec'] = @data[slot_id]['frame'] / Graphics.frame_rate
      @data[slot_id]['map_name'] = get_mapname(@data[slot_id]['gamemap'].map_id)
      file.close
    else
      @exist_list[slot_id] = false
      @data[slot_id] = -1
    end
  end

LoganF

Putting in new scripts pretty much renders your old save files unusable. When you try to load the game, it's trying to load a state that no longer exists any more.

It's partly due to version 2 of this script being a complete rewrite. As such a lot of the names used for modules/variables etc were changed and no longer exist. For example, in v1.1 the module for handling quests was called "ModAlg_QuestData". It is now called "QuestData".

It's a very common issue people run into and is likely to be solved simply by starting a new game.
(Why do I always feel like it's the end of the world and I'm the last man standing?)

micusficus

I'm just having a little bit of conflict with Yanfly's System Options script. Apologies if I missed this in an earlier post but I feel like I've scoured the internet with a fine tooth comb and have come up empty.

My problem is that System Options changes your window style to one of several options in a graphics/windows folder, but Quest Journal still wants to use the old graphics/system/window image. How can I get it to accept the default?

Adrien

Line 271 of the config script: WINDOWS_SKIN = "custom" where custom is your window skin

micusficus

Sorry for not being more specific with the codes and whatnot.

Quote# The following adjusts the window skins used for your game. Match the
    # Window skins with the names accordingly. Within the windowskin hash,
    # the following settings are adjusted as such:
    #     Name - File Name
    #     Opac - Back Opacity
    #     Bold - Bold font?
    #   Italic - Italic font?
    #   Shadow - Use shadows?
    #     Size - Font Size
    #     Font - Font Set
    DEFAULT_SKIN_VALUE  = 3
    WINDOW_HASH ={
    # Window ID => [      Name, Opac,  Bold, Italic, Shadow, Size,    Font],
              1 => [   "Plain",  200, false,  false,   true,   14, DEFAULT],
              2 => [    "Mint",  200, false,  false,   true,   14, DEFAULT],
              3 => ["Strawberry",  200, false,  false,   true,   14, DEFAULT],
              4 => [  "Banana",  200, false,  false,   true,   14, DEFAULT],
              5 => [     "Nut",  200, false,  false,   true,   14, DEFAULT],
              6 => [  "Wasted",  200, false,  false,   true,   16, "Monofonto"],
    } # Do not remove this.

Is there any way to have the windows match no matter which of this six window styles they choose?

Adrien

if you want the same window skin no matter which si you choose change the text in the "" to that of your window skin name. is that what your getting at?

micusficus

I just want line 271 to accept the default that the system options script sets. I can't just type one thing in between those quotes because there's a possibility of six options. I don't even know how to direct it to graphics/windows instead of graphics/system. I just want all of my windows to be the same uniform style.

LoganF

The problem is that Yanfly's System Options script creates a method that is called during a new window's creation that sets the default windowskin in the base Window class, but then QJ comes along and changes those settings afterwards.

This can be fixed in a number of ways, but the version of Implementation script below prevents QJ changing those default values if the System Options script is being used. For everyone not using it, then QJ will set those values instead. Those values refers to both the window skin graphic and the opacity values. I only did a quick test to check that the set window skin was used in QJ after changing it in SystemOptions. There may be other issues since SystemOptions changes a lot more than just windowskin and opacity.

MA will probably make a more appropriate fix if and when he gets time to do so.

http://pastebin.com/mDHYHJq1
(Why do I always feel like it's the end of the world and I'm the last man standing?)