Quest Journal by Modern Algebra *Question*

Status
Not open for further replies.

LTN Games

Indie Studio
Veteran
Joined
Jun 25, 2015
Messages
704
Reaction score
631
First Language
English
Primarily Uses
RMMV
Hey there, glad to be a part of the forums, I have a quick and simple question about the current script "Quest Journal"  I am using to make a game.

A little about me is I have a pretty basic understanding of all game engines and rpg maker is very simple to me, already got the basics down and can make complicated events seem fairly simple lol.

Anyways my question is the HUGE script for the "Quest Journal" by modern algebra , is so big and can get very confusing and annoying to scroll through lines and lines of code just to edit the quests. I was wondering if I can split the script apart so  I have one script section for the quests that I edit constantly and the other contains the core script that I can leave alone.

So basically 1. Can I split the script up in two parts ?
                    2. and  If need be. Can I maybe use a call function " Scripted" to call the quests from another "Script"  where the quests will be.

I added a picture for clarity of my question.

The script can be found here http://rmrk.net/index.php?topic=25533.0
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,355
Reaction score
7,666
First Language
German
Primarily Uses
RMMV
Not really - the part where Modern Algebra placed the quests is at exactly that position for a reason - it's part of a command series that begins above it and continues below it.


Theoretically you can distribute functions between several script slots (the "core" scripts basically do that for several scripters, and the requirements like "place this script above that one" are also there because code had been distributed), but such splits can only be at specific parts.


And the quest journal can't be split mid-command.


It would take a rewrite of several parts of the script to allow such a splitting.


Perhaps you find someone who knows enough of this script to be able to do this, but I consider that a low chance...


I've moved this thread to Script Support. Please be sure to post your threads in the correct forum next time. Thank you.


Also, please link to the script - you can't expect people to rewrite it without having access to it.
 

LTN Games

Indie Studio
Veteran
Joined
Jun 25, 2015
Messages
704
Reaction score
631
First Language
English
Primarily Uses
RMMV
Okay thank you for your input :) . I thought of an alternative solution, copy and paste the whole script into a Code editor, this way I have a full screen to look at the script while editing it.

I added the link to OP .Sorry about posting in wrong forum, I will make sure I check all forums before posting for support..Still a newbie here :D
 

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,162
Reaction score
822
First Language
Hungarian
Primarily Uses
RMVXA
Anything in a module can be split up in any number of parts.

You can split the settings part entirely into it's own separate script slots almost effortlessly, by cutting out the entire 'QuestData' module from the original script and paste it into a new script slot ABOVE the real code part of the script.

You can than further separate that part into the "General Settings" and "Quest Setup" parts just as easily.

This is exactly why I split my scripts into many setting parts, nobody like to scroll down thousands of lines just to edit one description line for a quest, for example.

So, here is how I split it up:

1. General Settings:

module QuestData #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # BEGIN Editable Region A #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # MENU_ACCESS - If true, you can access the quest journal through a command # in the menu. If false, there will be no such command. MENU_ACCESS = true # MENU_INDEX - If MENU_ACCESS is true, this determines where it appears MENU_INDEX = 10 # MAP_ACCESS - If true, this allows you to access the quest journal by # pressing a key on the map. MAP_ACCESS = true # MAP_BUTTON - If MAP_ACCESS is true, this determines which button calls the # Quest Journal MAP_BUTTON = :kL # OPEN_TO_LAST_REVEALED_QUEST - If true, then the first time you open the # quest journal after revealing a new quest, it will open to the new quest. OPEN_TO_LAST_REVEALED_QUEST = true # OPEN_TO_LAST_CHANGED_QUEST - If true, then the Quest Journal will open to # the last quest whose objective status has changed. OPEN_TO_LAST_CHANGED_QUEST = false # LIST_WINDOW_WIDTH - The width, in pixels, of the List Window LIST_WINDOW_WIDTH = 292 # BASIC_DATA_TYPES - This lets you set up additional types of data. Just # include an identifying signal in the Array. Then, you will need to give # each signal an icon (in the ICONS hash at line 322) and a signal text (in # the VOCAB array at line 333, though it can be an empty string). Then, you # can set the data itself when setting up quests by simply adding a: # q[:symbol] = "" # line to the quest. You will also need to include the data type somewhere in # the DATA_LAYOUT at line 306. As an example of this, I have included :client # and :location by default. You can CTRL+F for anything in this section with # one of those symbols (excluding and you will there need to add something # for any new data types you add. BASIC_DATA_TYPES = [:client, :location] # BASIC_DATA_WIDTH - This determines how much room, in pixels, is given to # any basic data types you set up in the data window. BASIC_DATA_WIDTH = 240 # CONCURRENT_ACTIVITY - If true, then when in the Quest Journal scene, you # can switch categories or scroll down the quest list at the same time. If # false, you will first need to select a category before you can start # scrolling through the quest list. CONCURRENT_ACTIVITY = true # HIDE_CATEGORY_CURSOR - If true, then the Category Window will not have a # cursor and will instead just highlight the currently selected category. # This is best when CONCURRENT_ACTIVITY is true. HIDE_CATEGORY_CURSOR = true # SHOW_QUEST_ICONS - If true, then the icon you choose for each quest will # be displayed to the left of its name in the Quest List window SHOW_QUEST_ICONS = true # MANUAL_REVEAL - If false, then quests will be revealed the moment you # first reveal, complete, or fail an objective. If this is true, you will # need to specifically reveal each quest via a separate script call: # reveal_quest(quest_id) MANUAL_REVEAL = false # DATA_LAYOUT - This controls the way that the quest window lays out all of # the relevant data. If you set one of the entries to be an array, then any # of the commands there will be drawn at the same y. With exception to :line, # none of the commands will be drawn if the quest is not set to have that # particular data. The symbols are: # :line - Draws a horizontal line across the window. # :name - Draws the name of the quest # :level - Draws the level of the quest # :banner - Draws the banner for the quest # :client - Draws the client set in the quest (basic data) # :location - Draws the location set in the quest (basic data) # :description - Draws the quest's description # :objectives - Draws all the quest's objectives that have been revealed # :rewards - Draws whatever rewards have been set # # You will also need to add an entry for any new BASIC_DATA that you place # in BASIC_DATA_TYPES at line 264. # # Remember to place a comma after each entry. Also note that this is only the # default layout. You can set a different layout for any quest, and when # viewing that quest, it will be the custom layout that is shown. DATA_LAYOUT = [ [:line, :name, :level], :banner, :client, :location, :description, :objectives, [:line, :rewards], :line, ] # <= Do not touch. # ICONS - This is where you setup many of the icons used in the script. The # purpose of each is listed next to it. Also, if you make any custom # categories, you NEED to give them an icon by placing a line like the # others. So, if the new custom category is :romance then you would need to # set it like this: # romance: 107, ICONS = { all: 226, # The icon for the All Quests category active: 236, # The icon for the Active Quests category complete: 238, # The icon for the Complete Quests category failed: 227, # The icon for the Failed Quests category client: 121, # The icon for client data. If none wanted, set to 0 location: 231, # The icon for location data. If none wanted, set to 0 reward_gold: 262, # The icon for gold rewards. If none wanted, set to 0 reward_exp: 117, # The icon for exp rewards. If none wanted, set to 0 } # <= Do not touch. # VOCAB - This lets you choose some of the words used in the quest scene VOCAB = { # menu_label: The command name in the menu if MENU_ACCESS is true menu_label: "Quests", # scene_label: The label at the top of the scene. If empty, no window scene_label: "Quest Journal", # description: The heading to identify the description description: "Description", # objectives: The heading to identify the objectives objectives: "Objectives", # objective_bullet: The bullet which shows up to the left of every # objective. If %d is included, it shows the objective's ID. objective_bullet: "♦", # rewards: The heading to identify the rewards. rewards: "Rewards", # reward_amount: For item rewards, this is the text to show the amount. # It should include %d to show the amount. reward_amount: "x%d", # reward_gold: Text to identify gold rewards reward_gold: "", # reward_exp: Text to identify exp rewards reward_exp: "", # level: If LEVEL_ICON is 0, this is the text which precedes the level level: "Rank: ", # location: The text label for quest location location: "", # location: The text label for quest client client: "", } # <= Do not touch. # CATEGORIES - This array allows you to set which categories are available # in the Quest scene. The default categories are :all, :active, :complete, # and :failed, and their names are self-explanatory. You can add custom # categories as well, but note that you will need to make sure that each new # category has an icon set in the ICONS hash, as well as a label set in the # CATEGORY_VOCAB hash (if you are using SHOW_CATEGORY_LABEL). It is also # advisable to give it a sort type, unless you are fine with it being sorted # by ID, as is default. CATEGORIES = [:all, :active, :complete, :failed] # SHOW_CATEGORY_LABEL - This allows you to choose whether to show the name # of the currently selected category. If true, it will choose the name out # of the CATEGORY_VOCAB hash. SHOW_CATEGORY_LABEL = true # CATEGORY_LABEL_IN_SAME_WINDOW - If SHOW_CATEGORY_LABEL is true, then this # options lets you choose whether the label is shown in the same window as # the category icons or in a separate window below. true = same window. CATEGORY_LABEL_IN_SAME_WINDOW = true # CATEGORY_VOCAB - If SHOW_CATEGORY_LABEL is true, this hash lets you set the # label for each category. For any custom categories you create, you will # need to add a line for each below and in the same format: # :category => "Label", # Don't forget to add the comma at the end of each line. CATEGORY_VOCAB = { :all => "All Quests", # The label for the :all category :active => "Active Quests", # The label for the :active category :complete => "Completed Quests", # The label for the :complete category :failed => "Failed Quests", # The label for the :failed category } # <= Do not touch. # SORT_TYPE - This hash allows you to choose how each category is sorted. # For each category, default or custom, you can set a different sort method # There are seven options to choose from: # :id - The quests are sorted from lowest to highest ID # :alphabet - The quests are sorted in alphabetical order # :level - The quests are sorted from the lowest to highest level # :reveal - The quests are sorted from most recently revealed on. # Every time a new quest is revealed, it will be at the top. # :change - The quests are sorted from the one whose status most recently # changed on. So, every time an objective is modified, that quest # will be thrown to the top. # :complete - The quests are sorted from the most recently completed on. # Every time a quest is completed, it will be thrown to the top. # :failed - The quests are sorted from the most recently failed on. # Every time a quest is failed, it will be thrown to the top. # # Additionally, you can put _r at the end of any of the sort options and it # will reverse the order. So, for instance, if the sort method for a category # is :alphabet_r, then the quests will show up from Z-A SORT_TYPE = { :all => :id, # Sort type for the All Quests category :active => :reveal, # Sort type for the Active Quests category :complete => :complete, # Sort type for the Complete Quests category :failed => :failed, # Sort type for the Failed Quests category } # <= Do not touch. # WINDOWSKIN - The windowskin for each window in the Quest scene. It must # refer to a graphic in the System folder of Graphics. If set to false, then # it will use whatever windowskin is default. If you are using a script which # lets the player choose the windowskin, false is the recommended value. WINDOWSKIN = false # WINDOW_TONE - The tone for each window. It must be an array in the form: # WINDOW_TONE = [red, green, blue, gray] # gray can be excluded, but the other three must be present. If you set this # value to false, then the windows will have whatever tone is default. WINDOW_TONE = false # WINDOW_OPACITY - The opacity of the windows in the Quest scene. If set to # false, it will use the default opacity for windows. WINDOW_OPACITY = false # BG_PICTURE - This is a string referring to a picture in the Picture folder # of Graphics. If set to "", then there will be no picture. Otherwise, it # will display the selected picture below the windows but above the map in # the Quest scene. BG_PICTURE = "Heroes" # BG_OPACITY - This allows you to set the opacity of the background picture, # if you have selected one. BG_OPACITY = 200 # BG_BLEND_TYPE - This allows you to set the blend type of the background # picture, if you have selected one. BG_BLEND_TYPE = 0 # DESCRIPTION_IN_BOX - This is a graphical option, and it allows you to # choose whether the description should be shown in a box. DESCRIPTION_IN_BOX = true # LEVEL_ICON - This sets how levels are shown. If set to an integer, then it # will draw the same icon numerous times up to the level of the quest. Ie. If # the level's quest is 1, then the icon will only be drawn once, but if the # level's quest is 4, it will be drawn 4 times. LEVEL_ICONS_SPACE determines # the space between them. If you set LEVEL_ICON to 0, however, then it will # instead draw a signal for the level, corresponding to that index in the # LEVEL_SIGNALS array. If the LEVEL_SIGNALS array is empty, then it will just # draw the integer for the level. Finally, LEVEL_ICON can also be an array of # integers, in which case the level will be represented only by the icon set # which corresponds to it in the array. LEVEL_ICON = 125 # LEVEL_ICONS_SPACE - If LEVEL_ICON is an integer, this is the amount of # space between each time the icon is drawn. LEVEL_ICONS_SPACE = 16 # LEVEL_SIGNALS - If LEVEL_ICON is 0, this allows you to set what string # should be the signal for each level. If this array is empty, then it will # just draw the level integer. Ie. if the Quest is Level 4, it will draw 4. LEVEL_SIGNALS = ["F", "E", "D", "C", "B", "A", "S"] # COLOURS - This lets you change the colour for various aspects of the # quest scene. Each can be set in one of three ways: # :symbol - If you use a symbol, the colour will be the result of calling # the method of the same name. For instance, if you set something to # :system_color, it will set the colour to the result of the Window_Base # system_color method. # Integer - If you set the colour to an integer, then it will take its # colour from the windowskin palette, just like using \c[x] in messages. # Array - You can also set the rgba values directly with an array in the # format: [red, green, blue, alpha]. alpha can be excluded, but you must # have values for red, green, and blue. COLOURS = { # active: This sets the colour for active quests in the list and the name # of the active quest when shown in the data window. active: :normal_color, # complete: This sets the colour for complete quests in the list and the # name of the complete quest when shown in the data window. complete: 3, # failed: This sets the colour for failed quests in the list and the name # of the failed quest when shown in the data window. failed: 10, # line: This sets the colour for lines or boxes drawn in the quest scene line: :system_color, # line_shadow: This sets the colour of the shadow for lines or boxes drawn # in the quest scene line_shadow: [0, 0, 0, 128], # scene_label: This sets the colour for the scene label, if shown scene_label: :system_color, # category_label: This sets the colour for the category label, if shown category_label: :normal_color, # level_signal: This sets the colour for the level signal, if shown level_signal: :normal_color, # objective_bullet: This sets the colour for objectives; if set to # :maqj_objective_color, it will reflect the completion status of the # objective, but you can change it to something else if you prefer objective_bullet: :maqj_objective_color, # reward_amount: The colour of the item amount, when shown reward_amount: :normal_color, # heading: The colour of any headings in the script, like "Description" heading: :system_color, # basic_label: For basic data, like client, the colour of the label basic_label: :system_color, # basic_value: For basic data, like client, the colour of the value basic_value: :normal_color, } # <= Do not touch. # HEADING_ALIGN - This sets the alignment for the aspects listed. 0 is Left; # 1 is Centre; 2 is Right HEADING_ALIGN = { description: 0, # Alignment for the Description heading objectives: 0, # Alignment for the Objectives heading rewards: 1, # Alignment for the Rewards heading level: 2 # Alignment when showing the level } # <= Do not touch. #```````````````````````````````````````````````````````````````````````````` # Font Aspects # # All of the following options (FONTNAMES, FONTSIZES, FONTBOLDS, and # FONTITALICS) allow you to alter the fonts used for various aspects of the # scene. The only one listed there by default is normal:, which is the # font used by default for the entire scene. However, you can change the # fonts for almost any aspect - all you need to do is add a line like so: # # description: value, # # and that will change that font aspect when drawing the description. The # following symbols are available for changing: # # normal: The default font used for every part of the scene # list: The font used in the List Window # scene_label: The font used when drawing the Scene Label, if shown # category_label: The font used when drawing the Category Label, if shown # heading: The font used when drawing any headings, like "Description" # name: The font used when drawing the quest name in data window # description: The font used when drawing the Description # objectives: The font used when drawing the objectives # rewards: The font used when drawing the rewards # client: The font used when drawing the client # location: The font used when drawing the location # # For any of them, you need to set a value. What the value can be depends # on which font aspect you are changing and is described below, but for any # of them setting it to the false will mean it will simply use the default # # For any that you add, remember that you must put a comma after the value. #```````````````````````````````````````````````````````````````````````````` # FONTNAMES - Here you can change the font used for any of the various # options. It can take any of the following types of values: # false - The default font will be used # "String" - The font with the name "String" will be used. # [Array] - The array must be in the form: ["String1", "String2", ...] # The font used will be the first one in the array that the # player has installed. # # EXAMPLES: # # normal: false, # The font used for unaltered aspects of the scene is the default font # scene_label: "Algerian", # The font used for the Scene Label will be Algerian. # description: ["Cambria", "Times New Roman"], # The font used when drawing the description will be Cambria if the # player has Cambria installed. If the player does not have Cambria # installed, then the font used will be Times New Roman FONTNAMES = { normal: false, # normal: the default font name } # <= Do not touch. # FONTSIZES - Here you can change the size of the font. There are two types # of values you can set: # false - The default fontsize will be used # Integer - The fontsize will be equal to the value of the Integer. # # For everything but the label windows, this shouldn't exceed 24, since that # is the line_height. However, for scene_label: and category_label:, the size # of the window will be adjusted to whatever size you set the font. FONTSIZES = { normal: false, # normal: default font size scene_label: 28, # scene_label: fontsize for the Scene Label window category_label: 24, # category_label: fontsize for Category Label window } # <= Do not touch. # FONTBOLDS - Here you can set whether the font will be bolded. You can set # it to either false, in which case it will not be bolded, or true, in which # case it will be bolded. FONTBOLDS = { scene_label: true, # scene_label: whether font is bold for Scene Label heading: true, # heading: whether font is bold for the headings level_signal: true, # level_signal: whether font is bold for level } # <= Do not touch. # FONTITALICS - Here you can set whether the font will be italicized. You # can set it to either false, in which case it will not be italicized, or # true, in which case it will be italicized. FONTITALICS = { } #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END Editable Region A #////////////////////////////////////////////////////////////////////////// CATEGORIES = [:all] if !CATEGORIES || CATEGORIES.empty? VOCAB.default = "" ICONS.default = 0 CATEGORY_VOCAB.default = "" SORT_TYPE.default = :id COLOURS.default = :normal_color HEADING_ALIGN.default = 0 FONTNAMES.default = false FONTSIZES.default = false FONTBOLDS.default = false FONTITALICS.default = false end
2. Quest Setup:

module QuestData #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Setup Quest #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def self.setup_quest(quest_id) q = { objectives: [] } case quest_id #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # BEGIN Editable Region B #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # Quest Setup # # This is where you set up the data for every quest in the game. While # it may seem complicated, I urge you to pay attention and, once you get # the hang of it, I am sure it will quickly become second nature. # # Every single quest should be set up in the following format, but note # that if you are not setting anything for a particular aspect, you can # delete that line. Anyway, this is what each quest should look like, with # the values on the left being the default values if you don't set them: # # when quest_id # q[:name] = "??????" # q[:icon_index] = 0 # q[:level] = 0 # q[:description] = "" # q[:banner] = "" # q[:banner_hue] = 0 # q[:objectives][0] = "" # q[:objectives][1] = "" # q[:objectives][2] = "" # q[:objectives][n] = "" # q[:prime_objectives] = [0, 1, 2, n] # q[:custom_categories] = [] # q[:client] = "" # q[:location] = "" # q[:rewards] = [] # q[:common_event_id] = 0 # q[:layout] = false # # For each line, with the exception of objectives, it is only the value on # the right of the equals sign that you will need to change. Now I will # explain each line: # # when quest_id # quest_id - is an integer of your choosing, and this is how you # reference a quest in order to advance and do anything else. It # must be unique for every quest; if you use 1 for the first quest, # you cannot use 1 for any other quest. # # q[:name] = "" # "" - This line sets the name of the quest which shows in the Quest # List. # # q[:icon_index] = 0 # 0 - This line sets the icon to be used for this quest. It will show # to the left of the quest's name in the Quest List. # # q[:level] = 0 # 0 - This line sets the level of the quest. If 0, no level will be # shown. See the level options at lines 441-458 for more detail. # # q[:description] = "" # "" - This line sets the description of the quest. You can use message # codes in this string, but if you are using "" then you need to use # \\ to identify codes and not just \. Ie. It's \\v[x], not \v[x] # # q[:objectives][0] = "" # q[:objectives][1] = "" # q[:objectives][2] = "" # q[:objectives][n] = "" # Objectives are slightly different. Notice that after q[:objectives] on # each line there is an integer enclosed in square brackets: # [n] - This is the ID of the objective, and n MUST be an integer. No # quest can have more than one objective with the same ID. This is # how you identify which objective you want to reveal, complete or # fail. That said, you can make as many objectives as you want, as # long as you give them all distinct IDs. The IDs should be in # sequence as well, so there shouldn't be a q[:objectives][5] if # there is no q[:objectives][4]. # "" - This is the text of the objective. You can use message codes in # this string, but if you are using "" then you will need to use # \\ to identify codes and not just \. Ie: It's \\v[x], not \v[x] # # q[:prime_objectives] = [0, 1, 2, n] # [0, 1, 2, n] - This array determines what objectives need to be # completed in order for the quest to be complete. In other words, # all of the objectives with the IDs in this array need to be # complete for the quest to be complete. If any one of them is # failed, the quest will be failed. If you remove this line # altogether, then all objectives are prime. If you set this to [], # then the quest will never be automatically completed or failed and # you need to use the manual options described at lines 208-219. # # q[:custom_categories] = [] # [] - This allows you to set an array of custom categories for this # quest, whiich means this quest will show up in each of those # categories if you add it to the CATEGORIES array at line 370. # Note that each category you make must be identified by a unique # :symbol, and you must set up all the category details for that # :symbol. # # q[:banner] = "" # "" - This line sets the banner to be used for a quest. It must be the # filename of an image in the Pictures folder of Graphics. # # q[:banner_hue] = 0 # 0 - The hue of the banner graphic, if used # # q[:client] = "" # "" - This line sets the client name for this quest. (basic data) # # q[:location] = "" # "" - This line sets the location of the quest. (basic data) # # q[:rewards] = [] # [] - In this array, you can identify particular rewards that will # show up. Each reward should be in its own array and can be any of # the following: # [:item, ID, n], # [:weapon, ID, n], # [:armor, ID, n], # [:gold, n], # [:exp, n], # where ID is the ID of the item, weapon or armour you want # distributed and n is the amount of the item, weapon, armor, gold, # or experience you want distributed. Additionally, you can also set # some text to show up in the rewards format but which wouldn't be # automatically distributed. You would need to specify that type of # reward text in the following format: # [:string, icon_index, "string", "vocab"], # where icon_index is the icon to be shown, "string" is what you # would show up as the amount, and "vocab" is what would show up as a # label between the icon and the amount. # # # q[:common_event_id] = 0 # 0 - This allows you to call the identified common event immediately # and automatically once the quest is completed. It is generally # not recommended, as for most quests you should be controlling it # enough not to need this feature. # # q[:layout] = false # false - The default value for this is false, and when it is false the # layout for the quest will be inherited from the default you set at # 302. However, you can also give the quest its own layout - the # format would be the same as you set for the default at line 307. # # Template: # # When making a new quest, I recommend that you copy and paste the # following template, removing whichever lines you don't want to alter. # Naturally, you need to remove the #~. You can do so by highlighting # the entire thing and pressing CTRL+Q:#~ when 2 # <= REMINDER: The Quest ID MUST be unique#~ q[:name] = "??????"#~ q[:icon_index] = 0#~ q[:level] = 0#~ q[:description] = ""#~ # REMINDER: You can make as many objectives as you like, but each must#~ # have a unique ID.#~ q[:objectives][0] = ""#~ q[:objectives][1] = ""#~ q[:objectives][2] = ""#~ q[:prime_objectives] = [0, 1, 2]#~ q[:custom_categories] = []#~ q[:banner] = ""#~ q[:banner_hue] = 0#~ q[:client] = ""#~ q[:location] = ""#~ q[:rewards] = []#~ q[:common_event_id] = 0 when 1 # Quest 1 - SAMPLE QUEST q[:name] = "Runaway Bride" q[:level] = 3 q[:icon_index] = 7 q[:description] = "A local woman was abducted by bandits on the night of her wedding." q[:objectives][0] = "Talk to Boris" q[:objectives][1] = "Search the Haunted Woods for Boris' wife, Ladia" q[:objectives][2] = "Slay the Bandits" q[:objectives][3] = "Escort Ladia back to Boris" q[:prime_objectives] = [1, 2] q[:custom_categories] = [] q[:banner] = "" q[:banner_hue] = 0 q[:client] = "Boris" q[:location] = "The Haunted Woods" q[:common_event_id] = 0 q[:rewards] = [ [:item, 1, 3], [:gold, 500], ] q[:layout] = false when 2 # Quest 2 - SAMPLE QUEST q[:name] = "The bomb without the will to explode" q[:level] = 2 q[:icon_index] = 7 q[:description] = "A guy from the Prairie asked me to bring this bomb to safety. Or did he want the people around it to be safe? In the end, it doesn't matter, it's the same anyway, right?" q[:objectives][0] = "The time is ticking! Get the bomb quickly!" q[:objectives][1] = "Hurry to the cave on the southeast! Reach it before the bomb explodes!" q[:objectives][2] = "Find a safe place for the bomb to explode. Make sure you do this before the explosion..." q[:objectives][3] = "Escape from the cave before the explosion! You know, just to make sure that we stay alive..." q[:objectives][4] = "Nice job! Time to get back to fetch the rewards!" q[:prime_objectives] = [0, 1, 2, 3, 4] q[:custom_categories] = [] q[:banner] = "" q[:banner_hue] = 0 q[:client] = "Greg" q[:location] = "Detragit Prairie" q[:common_event_id] = 0 q[:rewards] = [ [:item, 1, 3], [:gold, 500], ] #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END Editable Region B #////////////////////////////////////////////////////////////////////// end q # <-- Note this line! It is there for a reason, do NOT forget this! endend
3. Main Code:

- I wont paste this, just take away all the 'QuestData' module from the default script, and the rest should go here.

Basically, you can even put every single setting from the script into separate script slots if you want, just remember to enclose the settings within the correct module (in this case the module is named 'QuestData').

And in this particular case, the General Settings part must be at the top, than the Quest Setup part and lastly comes the real main code of the script (the non-editable).

Note that you don't need to rewrite anything at all. It's plain copy/paste job.

The separated settings I posted are edited for my old project, they are NOT the default settings, so if you have edited them already, don't simply copy/paste my sample examples!

Instead, watch where I split the parts and do the same with your own module settings. Will save you from re-editing all your settings again.
 

LTN Games

Indie Studio
Veteran
Joined
Jun 25, 2015
Messages
704
Reaction score
631
First Language
English
Primarily Uses
RMMV
Thanks so much for the help, this si exactly what I wanted done. For future refrence, I believe your Quest script is either the older version or you forgot that you added a few lines of code to make it work.
I had to add module QuestDate to the top of the each slot and an end at the end of the Editable Region A and Region B. the main core script did not need it.

This part of the script started with module QuestData already there,on the first line, but  I had to add an end to the end of the script..

Code:
module QuestData#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\# BEGIN Editable Region A#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||# MENU_ACCESS - If true, you can access the quest journal through a command# in the menu. If false, there will be no such command.MENU_ACCESS = true# MENU_INDEX - If MENU_ACCESS is true, this determines where it appearsMENU_INDEX = 4# MAP_ACCESS - If true, this allows you to access the quest journal by# pressing a key on the map.MAP_ACCESS = true# MAP_BUTTON - If MAP_ACCESS is true, this determines which button calls the# Quest JournalMAP_BUTTON = :L# OPEN_TO_LAST_REVEALED_QUEST - If true, then the first time you open the# quest journal after revealing a new quest, it will open to the new quest.OPEN_TO_LAST_REVEALED_QUEST = true# OPEN_TO_LAST_CHANGED_QUEST - If true, then the Quest Journal will open to# the last quest whose objective status has changed.OPEN_TO_LAST_CHANGED_QUEST = false# LIST_WINDOW_WIDTH - The width, in pixels, of the List WindowLIST_WINDOW_WIDTH = 200# BASIC_DATA_TYPES - This lets you set up additional types of data. Just# include an identifying signal in the Array. Then, you will need to give# each signal an icon (in the ICONS hash at line 322) and a signal text (in# the VOCAB array at line 333, though it can be an empty string). Then, you# can set the data itself when setting up quests by simply adding a:# q[:symbol] = ""# line to the quest. You will also need to include the data type somewhere in# the DATA_LAYOUT at line 306. As an example of this, I have included :client# and :location by default. You can CTRL+F for anything in this section with# one of those symbols (excluding and you will there need to add something# for any new data types you add.BASIC_DATA_TYPES = [:client, :location]# BASIC_DATA_WIDTH - This determines how much room, in pixels, is given to# any basic data types you set up in the data window.BASIC_DATA_WIDTH = 240# CONCURRENT_ACTIVITY - If true, then when in the Quest Journal scene, you# can switch categories or scroll down the quest list at the same time. If# false, you will first need to select a category before you can start# scrolling through the quest list.CONCURRENT_ACTIVITY = true# HIDE_CATEGORY_CURSOR - If true, then the Category Window will not have a# cursor and will instead just highlight the currently selected category.# This is best when CONCURRENT_ACTIVITY is true.HIDE_CATEGORY_CURSOR = true# SHOW_QUEST_ICONS - If true, then the icon you choose for each quest will# be displayed to the left of its name in the Quest List windowSHOW_QUEST_ICONS = true# MANUAL_REVEAL - If false, then quests will be revealed the moment you# first reveal, complete, or fail an objective. If this is true, you will# need to specifically reveal each quest via a separate script call:# reveal_quest(quest_id)MANUAL_REVEAL = false# DATA_LAYOUT - This controls the way that the quest window lays out all of# the relevant data. If you set one of the entries to be an array, then any# of the commands there will be drawn at the same y. With exception to :line,# none of the commands will be drawn if the quest is not set to have that# particular data. The symbols are:# :line - Draws a horizontal line across the window.# :name - Draws the name of the quest# :level - Draws the level of the quest# :banner - Draws the banner for the quest# :client - Draws the client set in the quest (basic data)# :location - Draws the location set in the quest (basic data)# :description - Draws the quest's description# :objectives - Draws all the quest's objectives that have been revealed# :rewards - Draws whatever rewards have been set## You will also need to add an entry for any new BASIC_DATA that you place# in BASIC_DATA_TYPES at line 264.## Remember to place a comma after each entry. Also note that this is only the# default layout. You can set a different layout for any quest, and when# viewing that quest, it will be the custom layout that is shown.DATA_LAYOUT = [[:line, :name, :level],:banner,:client,:location,:description,:objectives,[:line, :rewards],:line,] # <= Do not touch.# ICONS - This is where you setup many of the icons used in the script. The# purpose of each is listed next to it. Also, if you make any custom# categories, you NEED to give them an icon by placing a line like the# others. So, if the new custom category is :romance then you would need to# set it like this:# romance: 107,ICONS = {all: 226, # The icon for the All Quests categoryactive: 236, # The icon for the Active Quests categorycomplete: 238, # The icon for the Complete Quests categoryfailed: 227, # The icon for the Failed Quests categoryclient: 121, # The icon for client data. If none wanted, set to 0location: 231, # The icon for location data. If none wanted, set to 0reward_gold: 262, # The icon for gold rewards. If none wanted, set to 0reward_exp: 117, # The icon for exp rewards. If none wanted, set to 0} # <= Do not touch.# VOCAB - This lets you choose some of the words used in the quest sceneVOCAB = {# menu_label: The command name in the menu if MENU_ACCESS is truemenu_label: "Quest Journal",# scene_label: The label at the top of the scene. If empty, no windowscene_label: "Quest Journal",# description: The heading to identify the descriptiondescription: "Description",# objectives: The heading to identify the objectivesobjectives: "Objectives",# objective_bullet: The bullet which shows up to the left of every# objective. If %d is included, it shows the objective's ID.objective_bullet: "♦",# rewards: The heading to identify the rewards.rewards: "Rewards",# reward_amount: For item rewards, this is the text to show the amount.# It should include %d to show the amount.reward_amount: "x%d",# reward_gold: Text to identify gold rewardsreward_gold: "",# reward_exp: Text to identify exp rewardsreward_exp: "",# level: If LEVEL_ICON is 0, this is the text which precedes the levellevel: "Rank: ",# location: The text label for quest locationlocation: "",# location: The text label for quest clientclient: "",} # <= Do not touch.# CATEGORIES - This array allows you to set which categories are available# in the Quest scene. The default categories are :all, :active, :complete,# and :failed, and their names are self-explanatory. You can add custom# categories as well, but note that you will need to make sure that each new# category has an icon set in the ICONS hash, as well as a label set in the# CATEGORY_VOCAB hash (if you are using SHOW_CATEGORY_LABEL). It is also# advisable to give it a sort type, unless you are fine with it being sorted# by ID, as is default.CATEGORIES = [:all, :active, :complete, :failed]# SHOW_CATEGORY_LABEL - This allows you to choose whether to show the name# of the currently selected category. If true, it will choose the name out# of the CATEGORY_VOCAB hash.SHOW_CATEGORY_LABEL = true# CATEGORY_LABEL_IN_SAME_WINDOW - If SHOW_CATEGORY_LABEL is true, then this# options lets you choose whether the label is shown in the same window as# the category icons or in a separate window below. true = same window.CATEGORY_LABEL_IN_SAME_WINDOW = true# CATEGORY_VOCAB - If SHOW_CATEGORY_LABEL is true, this hash lets you set the# label for each category. For any custom categories you create, you will# need to add a line for each below and in the same format:# :category => "Label",# Don't forget to add the comma at the end of each line.CATEGORY_VOCAB = {:all => "All Quests", # The label for the :all category:active => "Active Quests", # The label for the :active category:complete => "Complete Quests", # The label for the :complete category:failed => "Failed Quests", # The label for the :failed category} # <= Do not touch.# SORT_TYPE - This hash allows you to choose how each category is sorted.# For each category, default or custom, you can set a different sort method# There are seven options to choose from:# :id - The quests are sorted from lowest to highest ID# :alphabet - The quests are sorted in alphabetical order# :level - The quests are sorted from the lowest to highest level# :reveal - The quests are sorted from most recently revealed on.# Every time a new quest is revealed, it will be at the top.# :change - The quests are sorted from the one whose status most recently# changed on. So, every time an objective is modified, that quest# will be thrown to the top.# :complete - The quests are sorted from the most recently completed on.# Every time a quest is completed, it will be thrown to the top.# :failed - The quests are sorted from the most recently failed on.# Every time a quest is failed, it will be thrown to the top.## Additionally, you can put _r at the end of any of the sort options and it# will reverse the order. So, for instance, if the sort method for a category# is :alphabet_r, then the quests will show up from Z-ASORT_TYPE = {:all => :id, # Sort type for the All Quests category:active => :change, # Sort type for the Active Quests category:complete => :complete, # Sort type for the Complete Quests category:failed => :failed, # Sort type for the Failed Quests category} # <= Do not touch.# WINDOWSKIN - The windowskin for each window in the Quest scene. It must# refer to a graphic in the System folder of Graphics. If set to false, then# it will use whatever windowskin is default. If you are using a script which# lets the player choose the windowskin, false is the recommended value.WINDOWSKIN = false# WINDOW_TONE - The tone for each window. It must be an array in the form:# WINDOW_TONE = [red, green, blue, gray]# gray can be excluded, but the other three must be present. If you set this# value to false, then the windows will have whatever tone is default.WINDOW_TONE = false# WINDOW_OPACITY - The opacity of the windows in the Quest scene. If set to# false, it will use the default opacity for windows.WINDOW_OPACITY = false# BG_PICTURE - This is a string referring to a picture in the Picture folder# of Graphics. If set to "", then there will be no picture. Otherwise, it# will display the selected picture below the windows but above the map in# the Quest scene.BG_PICTURE = ""# BG_OPACITY - This allows you to set the opacity of the background picture,# if you have selected one.BG_OPACITY = 255# BG_BLEND_TYPE - This allows you to set the blend type of the background# picture, if you have selected one.BG_BLEND_TYPE = 0# DESCRIPTION_IN_BOX - This is a graphical option, and it allows you to# choose whether the description should be shown in a box.DESCRIPTION_IN_BOX = true# LEVEL_ICON - This sets how levels are shown. If set to an integer, then it# will draw the same icon numerous times up to the level of the quest. Ie. If# the level's quest is 1, then the icon will only be drawn once, but if the# level's quest is 4, it will be drawn 4 times. LEVEL_ICONS_SPACE determines# the space between them. If you set LEVEL_ICON to 0, however, then it will# instead draw a signal for the level, corresponding to that index in the# LEVEL_SIGNALS array. If the LEVEL_SIGNALS array is empty, then it will just# draw the integer for the level. Finally, LEVEL_ICON can also be an array of# integers, in which case the level will be represented only by the icon set# which corresponds to it in the array.LEVEL_ICON = 125# LEVEL_ICONS_SPACE - If LEVEL_ICON is an integer, this is the amount of# space between each time the icon is drawn.LEVEL_ICONS_SPACE = 16# LEVEL_SIGNALS - If LEVEL_ICON is 0, this allows you to set what string# should be the signal for each level. If this array is empty, then it will# just draw the level integer. Ie. if the Quest is Level 4, it will draw 4.LEVEL_SIGNALS = ["F", "E", "D", "C", "B", "A", "S"]# COLOURS - This lets you change the colour for various aspects of the# quest scene. Each can be set in one of three ways:# :symbol - If you use a symbol, the colour will be the result of calling# the method of the same name. For instance, if you set something to# :system_color, it will set the colour to the result of the Window_Base# system_color method.# Integer - If you set the colour to an integer, then it will take its# colour from the windowskin palette, just like using \c[x] in messages.# Array - You can also set the rgba values directly with an array in the# format: [red, green, blue, alpha]. alpha can be excluded, but you must# have values for red, green, and blue.COLOURS = {# active: This sets the colour for active quests in the list and the name# of the active quest when shown in the data window.active: :normal_color,# complete: This sets the colour for complete quests in the list and the# name of the complete quest when shown in the data window.complete: 3,# failed: This sets the colour for failed quests in the list and the name# of the failed quest when shown in the data window.failed: 10,# line: This sets the colour for lines or boxes drawn in the quest sceneline: :system_color,# line_shadow: This sets the colour of the shadow for lines or boxes drawn# in the quest sceneline_shadow: [0, 0, 0, 128],# scene_label: This sets the colour for the scene label, if shownscene_label: :system_color,# category_label: This sets the colour for the category label, if showncategory_label: :normal_color,# level_signal: This sets the colour for the level signal, if shownlevel_signal: :normal_color,# objective_bullet: This sets the colour for objectives; if set to# :maqj_objective_color, it will reflect the completion status of the# objective, but you can change it to something else if you preferobjective_bullet: :maqj_objective_color,# reward_amount: The colour of the item amount, when shownreward_amount: :normal_color,# heading: The colour of any headings in the script, like "Description"heading: :system_color,# basic_label: For basic data, like client, the colour of the labelbasic_label: :system_color,# basic_value: For basic data, like client, the colour of the valuebasic_value: :normal_color,} # <= Do not touch.# HEADING_ALIGN - This sets the alignment for the aspects listed. 0 is Left;# 1 is Centre; 2 is RightHEADING_ALIGN = {description: 0, # Alignment for the Description headingobjectives: 0, # Alignment for the Objectives headingrewards: 1, # Alignment for the Rewards headinglevel: 2 # Alignment when showing the level} # <= Do not touch.#````````````````````````````````````````````````````````````````````````````# Font Aspects## All of the following options (FONTNAMES, FONTSIZES, FONTBOLDS, and# FONTITALICS) allow you to alter the fonts used for various aspects of the# scene. The only one listed there by default is normal:, which is the# font used by default for the entire scene. However, you can change the# fonts for almost any aspect - all you need to do is add a line like so:## description: value,## and that will change that font aspect when drawing the description. The# following symbols are available for changing:## normal: The default font used for every part of the scene# list: The font used in the List Window# scene_label: The font used when drawing the Scene Label, if shown# category_label: The font used when drawing the Category Label, if shown# heading: The font used when drawing any headings, like "Description"# name: The font used when drawing the quest name in data window# description: The font used when drawing the Description# objectives: The font used when drawing the objectives# rewards: The font used when drawing the rewards# client: The font used when drawing the client# location: The font used when drawing the location## For any of them, you need to set a value. What the value can be depends# on which font aspect you are changing and is described below, but for any# of them setting it to the false will mean it will simply use the default## For any that you add, remember that you must put a comma after the value.#````````````````````````````````````````````````````````````````````````````# FONTNAMES - Here you can change the font used for any of the various# options. It can take any of the following types of values:# false - The default font will be used# "String" - The font with the name "String" will be used.# [Array] - The array must be in the form: ["String1", "String2", ...]# The font used will be the first one in the array that the# player has installed.## EXAMPLES:## normal: false,# The font used for unaltered aspects of the scene is the default font# scene_label: "Algerian",# The font used for the Scene Label will be Algerian.# description: ["Cambria", "Times New Roman"],# The font used when drawing the description will be Cambria if the# player has Cambria installed. If the player does not have Cambria# installed, then the font used will be Times New RomanFONTNAMES = {normal: false, # normal: the default font name} # <= Do not touch.# FONTSIZES - Here you can change the size of the font. There are two types# of values you can set:# false - The default fontsize will be used# Integer - The fontsize will be equal to the value of the Integer.## For everything but the label windows, this shouldn't exceed 24, since that# is the line_height. However, for scene_label: and category_label:, the size# of the window will be adjusted to whatever size you set the font.FONTSIZES = {normal: false, # normal: default font sizescene_label: 28, # scene_label: fontsize for the Scene Label windowcategory_label: 24, # category_label: fontsize for Category Label window} # <= Do not touch.# FONTBOLDS - Here you can set whether the font will be bolded. You can set# it to either false, in which case it will not be bolded, or true, in which# case it will be bolded.FONTBOLDS = {scene_label: true, # scene_label: whether font is bold for Scene Labelheading: true, # heading: whether font is bold for the headingslevel_signal: true, # level_signal: whether font is bold for level} # <= Do not touch.# FONTITALICS - Here you can set whether the font will be italicized. You# can set it to either false, in which case it will not be italicized, or# true, in which case it will be italicized.FONTITALICS = {}#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||# END Editable Region A#//////////////////////////////////////////////////////////////////////////CATEGORIES = [:all] if !CATEGORIES || CATEGORIES.empty?VOCAB.default = ""ICONS.default = 0CATEGORY_VOCAB.default = ""SORT_TYPE.default = :idCOLOURS.default = :normal_colorHEADING_ALIGN.default = 0FONTNAMES.default = falseFONTSIZES.default = falseFONTBOLDS.default = falseFONTITALICS.default = falseend<------- This was not there in orginal script
This one is where I had to add module QuestData to the top because in the original script this is not there.
 
 
Code:
module QuestData <------- This was not there in orginal script#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# * Setup Quest#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~def self.setup_quest(quest_id)q = { objectives: [] }case quest_id#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\# BEGIN Editable Region B#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#---------------------------Quest 1---------------------------------------------#You must talk to penny to recieve this quest, she is outside the inn. This quest will be#forced activated, being able to leave the town Alcali, until finished.#-------------------------------------------------------------------------------when 1 # Quest 1 - Share B.I.F'sq[:name] = "Alcali Brochures"q[:level] = 0q[:icon_index] = 234q[:description] = "Share babylon is fallen brochures around the town."q[:objectives][0] = "Post one outside Sleepy Nights' Inn"q[:objectives][1] = "Post one outside Alcali Armor & Items Shop "q[:objectives][2] = "Post one outside the Blacksmith's"q[:objectives][3] ="Speak to Penny for your reward"q[:prime_objectives] = [0,1,2]q[:custom_categories] = []q[:banner] = ""q[:banner_hue] = 0q[:client] = "Penny"q[:location] = "Alcali"q[:common_event_id] = 0q[:rewards] = [[:item, 1, 1],[:gold, 50],[:exp, 50],]q[:layout] = false#---------------------------Quest 2---------------------------------------------#Find your stash in your house, this quest is activated as soon as you wake up in# your hom, after the main intro.#-------------------------------------------------------------------------------when 2 # Quest 2 Find Your Stashq[:name] = "Find Your Stash"q[:icon_index] = 125q[:level] = 1q[:description] = "Somewhere in your house is a stash of goodies, look around and see if you can find it"q[:objectives][0] = "Find your stash"q[:prime_objectives] = [0]q[:custom_categories] = []q[:banner] = ""q[:banner_hue] = 0q[:client] = "Story Mission"q[:location] = "Alcali"q[:rewards] =[:armor, 2, 1],[:gold, 25],[:weapon, 1, 1],[:item, 1, 1],q[:common_event_id] = 0#---------------------------Quest 3---------------------------------------------#-------------------------------------------------------------------------------when 3 # Altimeirq[:name] = "Find Altimeir"q[:icon_index] = 125q[:level] = 0q[:description] = "Somewhere on Mt - Va'Rael is Altimeir, find him and tell him about the legal name fraud."q[:objectives][0] = "Travel to Mt - Va'Rael"q[:prime_objectives] = [0]q[:custom_categories] = []q[:banner] = ""q[:banner_hue] = 0q[:client] = "Story Mission"q[:location] = "Mt - Va'Rael"q[:rewards] = []q[:common_event_id] = 0#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||# END Editable Region B#//////////////////////////////////////////////////////////////////////endqendend
I commented on the scripts to show you what was needed for it to work properly. All is good now. Thnanks again :D
 
Last edited by a moderator:

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,162
Reaction score
822
First Language
Hungarian
Primarily Uses
RMVXA
That's exactly how I put the separated parts up in the spoilers. :D


I wrote that "you need to enclose the settings in the correct module", that means exactly what you did, starting the settings with a module name and ending it with an end line. :p


Glad I could help, you are welcome!
 

Sharm

Pixel Tile Artist
Veteran
Joined
Nov 15, 2012
Messages
12,760
Reaction score
10,884
First Language
English
Primarily Uses
N/A
This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.
 
Status
Not open for further replies.

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c
So I was playing with filters and this looked interesting...

Versus the normal look...

Kind of gives a very different feel. :LZSexcite:
To whom ever person or persons who re-did the DS/DS+ asset packs for MV (as in, they are all 48x48, and not just x2 the pixel scale) .... THANK-YOU!!!!!!!!! XwwwwX

Forum statistics

Threads
105,847
Messages
1,016,968
Members
137,561
Latest member
JaCrispy85
Top