Okay, here goes.
First, you should do the only part that requires scripting, and that is to have a global switch activated when you open the quest log. In my game, the quest log is an item.
Here's the article about item effects. You can turn the switch ON via PokeGear if you want.
Next, you want to create the pictures that display when you open the quest log. The game screen size is 512x384 by default, so the picture should be the same size. This picture should consist of two or three parts, one part that displays quest names, and the other part(s) that display details about a selected quest (Maybe a picture, too). This is how mine looks like:
In mine, quest names are displayed on the left half, the description of the selected quest is displayed on the top-right part, and a picture related to the selected quest is displayed on the bottom-right part (Just to make things look nice).
The part where quests are displayed contains 2 columns and 11 rows, which means 22 quests can be displayed at once. The player can't have more than 22 quests at the same time.
The difficult part is finding the exact position where quest names should be displayed. Each quest name is actually a 128x32 picture. The first position isn't at 0x0, but is actually at 8x16. This is because you don't want the quest name to overlap the frame.
So, the first position is on 8x16. The second position is on 8x48 (First column, second row). The third is on 8x80, and so on, until you reach the 12th position, which is in the second column, first row, so that's 138x8.
I'm using the positions in my quest log as an example. You can make yours look whatever you like, and you'll have to determine the positions on your own, which is actually easier than it sounds.
After you've created the quest log image, you have to create a select box.
As you can see, mine is just a frame the same size as the quest names (128x32). Again, you can make yours look different, it doesn't matter.
Once you've finished creating the necessary pictures, it's time to create the events. You'll need to create 4 common events in the System settings in order for this to work.
Event #1 Quest log
This event displays the quest log and the select box, and allows you to move the select box and exit the quest log. Put the Trigger as "Auto run", and the condition switch as the switch which is turned on by the quest log item (Or PokeGear, whichever you choose).
This is how the event should look like:
Code:
Show Picture: 1, Quest log, Upper left (0,0),(100%,100%),255,Normal ==> This displays the picture of the quest log. It is important that the picture number is 1.
Control Variables: [Select Box X] = 8
Control Variables: [Select Box Y] = 16 ==> The select box picture's position is determined by these two variables. 8 x 16 is the first position.
Show Picture: 50, Select box, Upper left (Variable[XXXX][YYYY]),(100%,100%),255,Normal ==> This displays the picture of the select box. XXXX & YYYY are the numbers of the Select Box X & Y variables.
Control Variables: [Select position] = 1 ==> This variable is equal to the position the select box is on.
Control Variables: [Quest position] = 1 ==> Important in another event.
Call Common Event: Display quest names ==> This activates the event which displays the quest names.
Loop
Wait: 1 frame(s)
Control Switches: [Select box on quest] = OFF ==> Important in another event.
Call Common Event: Display quest pictures ==> This activates the event which displays the details for a select quest IF the select box is on a quest.
Conditional Branch: The Down button is being pressed
Conditional Branch: Variable [Select Box Y] ==336
Play SE: "bump",80,100
Wait: 4 frame(s)
Else
Control Variables: [Select Box Y] + 32
Move Picture: 50, @3, Upper Left (Variable [XXXX][YYYY]), (100%,100%),255,Normal
Wait: 4 frame(s)
Control Variables: [Select position] + 1
(The first conditional branch checks if the "down" button is being pushed. The second one checks if the select box is at the bottom and can't go any lower. If it is, it plays the "bump" sound and doesn't do anything else. If it isn't (else case), the select box moves down one spot (+32 pixels in the Y-axis). 1 is added on the select position variable because the position has changed.)
Else
Conditional Branch: The Up button is being pressed
Conditional Branch: Variable [Select Box Y] ==16
Play SE: "bump",80,100
Wait: 4 frame(s)
Else
Control Variables: [Select Box Y] - 32
Move Picture: 50, @3, Upper Left (Variable [XXXX][YYYY]), (100%,100%),255,Normal
Wait: 4 frame(s)
Control Variables: [Select position] - 1
Else
Conditional Branch: The Right button is being pressed
Conditional Branch: Variable [Select Box X] ==136
Play SE: "bump",80,100
Wait: 4 frame(s)
Else
Control Variables: [Select Box X] + 128
Move Picture: 50, @3, Upper Left (Variable [XXXX][YYYY]), (100%,100%),255,Normal
Wait: 4 frame(s)
Control Variables: [Select position] + 11 ==> The variable increases by 11 because the select box moved to the second column. The first column contains positions 1-11, and the second one 12-22. Since the row hasn't changed, the position changes by 11.
Else
Conditional Branch: The Left button is being pressed
Conditional Branch: Variable [Select Box X] ==8
Play SE: "bump",80,100
Wait: 4 frame(s)
Else
Control Variables: [Select Box X] - 128
Move Picture: 50, @3, Upper Left (Variable [XXXX][YYYY]), (100%,100%),255,Normal
Wait: 4 frame(s)
Control Variables: [Select position] - 11
Else
Conditional Branch: The Z button is being pressed
Break Loop
Branch End
Branch End
Branch End
Branch End
Branch End
Repeat Above
Delete Picture: 1
Delete Picture: 2
Delete Picture: 3
Delete Picture: 4
Delete Picture: 5
Delete Picture: 6
Delete Picture: 7
Delete Picture: 8
Delete Picture: 9
Delete Picture: 10
Delete Picture: 11
Delete Picture: 12
Delete Picture: 13
Delete Picture: 14
Delete Picture: 15
Delete Picture: 16
Delete Picture: 17
Delete Picture: 18
Delete Picture: 19
Delete Picture: 20
Delete Picture: 21
Delete Picture: 22
Delete Picture: 23
Delete Picture: 24
Delete Picture: 25
Delete Picture: 50 (Picture # 1 is the quest log, #50 is the select box. The other pictures are names of the quests.)
Control Switches: [XXX] = OFF ==> XXX is the switch which is turned on by the quest log item (or PokeGear) and which is required to run this event.
Event #2 Display quest names
This event is activated in the previous event. It displays the quest names of all available quests, without any gaps between the names.
Code:
THIS CONDITIONAL BRANCH IS REPEATED FOR EVERY QUEST THAT EXISTS IN THE GAME.
Conditional Branch: Switch [QUEST RELATED SWITCH] is ON ==> Every quest has a switch related to it, which should be turned on when the quest is added to the player (By the event that adds the quest, usually the NPC that gives the player the quest.
Control Variables: [Quest position] + 1 ==> This variable determines the position of the quest, but it also determines the number of the displayed quest name picture. This variable was set to 1 in the previous event, and it'll increase for each upcoming quest. This was done because the picture number can't be 1, since that's the number of the quest log picture.
Control Variables: [QUEST RELATED VARIABLE] = Variable [Quest position]
Control Variables: [QUEST RELATED VARIABLE] - 1 ==> Just like every quest has a switch related to it, it has a variable related to it, too. This variable is important in another event.
Call Common Event: Determine quest position
Script: pbShowPicture($game_variables[# of Quest position variable], "Name of quest name picture", 0, $game_variables[# of Quest position X variable], $game_variables[# of Quest position Y variable] ==> This displays the actual picture of the quest name. The picture number will be equal to the "Quest position variable". The "Quest position X" and "Quest position Y" variables are determined by another event.
Branch end
As mentioned in the code, the conditional branch must be written for every quest that exists in the game. The easiest way to do this is to simply add it for every new quest you create, without delay.
Event #3 Determine quest position
This events determines the Quest position X & Y variables that are used in the previous event.
Code:
Conditional Branch: Variable [Quest position] == 2 ==> This variable is always higher by 1 than the actual position it corresponds to. This is because the picture number is also determined by this variable, and it must not be 1.
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 16 ==> These coordinates correspond to the first position.
Branch End
Conditional Branch: Variable [Quest position] == 3
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 48
Branch End
Conditional Branch: Variable [Quest position] == 4
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 80
Branch End
Conditional Branch: Variable [Quest position] == 5
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 112
Branch End
Conditional Branch: Variable [Quest position] == 6
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 144
Branch End
Conditional Branch: Variable [Quest position] == 7
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 176
Branch End
Conditional Branch: Variable [Quest position] == 8
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 208
Branch End
Conditional Branch: Variable [Quest position] == 9
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 240
Branch End
Conditional Branch: Variable [Quest position] == 10
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 272
Branch End
Conditional Branch: Variable [Quest position] == 11
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 304
Branch End
Conditional Branch: Variable [Quest position] == 12
Control Variables: [Quest position X] = 8
Control Variables: [Quest position Y] = 336
Branch End
Conditional Branch: Variable [Quest position] == 13
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 16
Branch End
Conditional Branch: Variable [Quest position] == 14
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 48
Branch End
Conditional Branch: Variable [Quest position] == 15
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 80
Branch End
Conditional Branch: Variable [Quest position] == 16
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 112
Branch End
Conditional Branch: Variable [Quest position] == 17
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 144
Branch End
Conditional Branch: Variable [Quest position] == 18
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 176
Branch End
Conditional Branch: Variable [Quest position] == 19
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 208
Branch End
Conditional Branch: Variable [Quest position] == 20
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 240
Branch End
Conditional Branch: Variable [Quest position] == 21
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 272
Branch End
Conditional Branch: Variable [Quest position] == 22
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 304
Branch End
Conditional Branch: Variable [Quest position] == 23
Control Variables: [Quest position X] = 136
Control Variables: [Quest position Y] = 336
Branch End
Event #4 Display quest pictures
This event will display the description of the quest, and the image related to the quest of the selected quest. It won't display anything if the select box isn't over any quest. Note that both the description of the quest and the image of the quest are pictures.
Code:
THIS CONDITIONAL BRANCH IS REPEATED FOR EVERY QUEST THAT EXISTS IN THE GAME!
Conditional Branch: [QUEST RELATED VARIABLE] == Variable [Select position]
Show Picture: 24, "Quest description", Upper Left, (272,8), (100%,100%), 255, Normal
Show Picture: 25, "Quest image", Upper Left, (272,232), (100%,100%),255, Normal
Control Switches: [Select box on quest] = ON
----
THIS CONDITIONAL BRANCH MUST GO LAST IN THIS EVENT!
Conditional Branch: Switch [Select box on quest] == OFF
Delete Picture: 24
Delete Picture: 25
Okay, these are the necessary events required to make the quest log work.
When the player receives a new quest, the switch related to that quest should be turned ON, and a variable that counts the number of quests should increase by 1. Before even adding the quest, there should be a Conditional Branch that checks whether that variable is equal to 22. If it is, the quest should not be added.
Once the quest is completed, the variable related to the quest should be put to 0 to avoid showing any pictures related to the quest in the quest log. The switch should also be turned off so the quest name isn't displayed. And last, but not least, the variable that counts the number of quests should decrease by 1.
So this is how to create a quest log using the RPG Maker only. This method requires constantly updating 2/4 common events for every new quest and having 2 (or 3) pictures of every quest - one of its name, the second of its description, and the third which is somehow related to the quest (In my case, it's just a simple picture that makes the quest log look better).
---------------------------------------------------------------------
I hope you get it to work. Any questions, shoot me a PM :D