Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

RPG Maker XP Eventing

So i want to make a cool intro for my game in rmxp but i'm having some trouble. I want to have a fade out effect, with a picture in the background, that slowly appears. Then i want to import a text picture of a series of texts that are transparent in the background and start from the bottom, then slowly scroll up, followed by another fade in effect, then a new picture, new text, ect. Kinda like in star wars as an example. It would be cool if in the fade in/out effects, i could use transistions. To clarify better, i want the pictures being shown to follow the text being shown, so it flows nicely. I know this can all be done through eventing, but i'm just picking the program back up after 5 to 6 years, and don't remember how to do those things. I'm a quick learner, so a good jog of memory would be great, as i know eventing can get complicated. Help appreciated guys, thanks.
 

Injury

Awesome Bro

Hey. I used a script in RMVXA and I found one for RMXP.

It skips the title right to your start point. You can make a Title map, have an event process the "title" screen and do all the work while having whatever you want there.

Code:
#==============================================================================

# Xenres' Title Skip

# Version 1.0

# 2010-11-24

#------------------------------------------------------------------------------

#  Loads necessary objects and skips to the start map to use as a title screen

#  or whatever.

#==============================================================================

 

class Scene_Title

  #--------------------------------------------------------------------------

  # * Main Processing

  #--------------------------------------------------------------------------

  def main

    # If battle test

    if $BTEST

      battle_test

      return

    end

    # Load database

    $data_actors        = load_data("Data/Actors.rxdata")

    $data_classes       = load_data("Data/Classes.rxdata")

    $data_skills        = load_data("Data/Skills.rxdata")

    $data_items         = load_data("Data/Items.rxdata")

    $data_weapons       = load_data("Data/Weapons.rxdata")

    $data_armors        = load_data("Data/Armors.rxdata")

    $data_enemies       = load_data("Data/Enemies.rxdata")

    $data_troops        = load_data("Data/Troops.rxdata")

    $data_states        = load_data("Data/States.rxdata")

    $data_animations    = load_data("Data/Animations.rxdata")

    $data_tilesets      = load_data("Data/Tilesets.rxdata")

    $data_common_events = load_data("Data/CommonEvents.rxdata")

    $data_system        = load_data("Data/System.rxdata")

    # Make system object

    $game_system = Game_System.new    

    # Make each type of game object

    $game_temp          = Game_Temp.new

    $game_system        = Game_System.new

    $game_switches      = Game_Switches.new

    $game_variables     = Game_Variables.new

    $game_self_switches = Game_SelfSwitches.new

    $game_screen        = Game_Screen.new

    $game_actors        = Game_Actors.new

    $game_party         = Game_Party.new

    $game_troop         = Game_Troop.new

    $game_map           = Game_Map.new

    $game_player        = Game_Player.new

    

    # Set up initial party

    $game_party.setup_starting_members

    # Set up initial map position

    $game_map.setup($data_system.start_map_id)

    # Move player to initial position

    $game_player.moveto($data_system.start_x, $data_system.start_y)

    # Refresh player

    $game_player.refresh

    # Run automatic change for BGM and BGS set with map

    $game_map.autoplay

    # Update map (run parallel process event)

    $game_map.update

    # go to REAL title screen

    $scene = Scene_Map.new

  end

end
 
I'm actually using moghunter's sefia title screen script right now, it's really cool, lot's of customization using graphics in the titles folder, and the script animates them. What I'm talking about takes place after that, when you select new game. the screen starts black, then fades out into the picture, with the text that scrolls up, then fades in, new picture appears, with new text, etc. I hope I'm describing this well lol
 
I can't even get the picture to fade in. I don't understand what I'm doing wrong. This is frustrating for so many reasons. My event looks like this

ndfz.png


http://imageshack.us/photo/my-images/855/ndfz.png
 
Try adding a wait or an erase event after the event commands so far.
Because it's set to autorun, it sets the picture opacity to zero and then waits 20 frames. Then it starts the fade, but loops to start at zero again.
 
yaaaayyy! thank the heavens, it works now. Thanks ZenVirZan ! I can't believe it was that simple lol So if I don't want it to repeat, do I set the trigger to parallel process now ? I'm going to have this picture fade out now (go dark), and then a new picture appear when it fades back in. I'm doing this for multiple images. And is there a way to keep the picture still until the controller clicks enter, in this case, the text will read, "Next". Since everybody reads at a different pace, I'd like the person to control when the new image and text appears, rather then the event controlling that.
 
Parallel process means it will not freeze the player. It will still loop infinitely.
There are many different ways of doing it, but I haven't evented in a long time so I am not 100% sure of how it should be done.
As far as finding input is concerned, I know you can use Conditional Branch, and in the last tab Button C.
 
If you're scrolling through text, I would suggest using switches and a variable.

Event Page 1
Can be autorun.
Start the first set of text.
Turn a switch on (I'll call it Input).

Event Page 2
Activates if switch Input is on (this will be used numerous times).
Make it parallel process so it can detect button input.
Create a conditional branch checking for the button.
When the button is pressed, branch it off based on a variable check - the idea would be that you'll turn switches on based on what the variable is, then increase the variable in event page 3 and up. For example, the first switch would be turned on when the variable was 0, activating page 3. The next conditional branch would be for when the variable is equal to one, turning on the second switch and so on. At the end of each of the switch events, turn off the switch Input.

Event Page 3
Activates if switch 01 is on.
Proceed with the text effect, then increase the variable by 1, turn the switch Input back on and turn switch 01 off.

Repeat the concept of page 3 for each set of text.

There are other ways to do it, but that's the most organized way that I can think of at the moment. Apologies if my tired explanations are indecipherable when you're trying to read them. xD I haven't created events in a while, but I believe that would work. Let me know if you need screenshots or have problems!
 
Im gonna expand on this. This is why learning how to script is useful.

You can actually change Events around from a script call to turn any Event into an Autorun or a Parallel or a Touch, or even "Untriggerable". You'll need to unlock the @trigger property for Events tho.

class Game_Event
attr_accessor :trigger
end

Then, with a script call from another event, you can do absurd stuff like:
$game_map.events[41].trigger = 4

0 - Action Button
1 - Player Touch
2 - Event Touch
3 - Autorun
4 - Parallel
-1 - Untriggerable (Event Graphic)

You can also do this from a Move Route Script for that Event.
@trigger = 4

Why? Move Routes can also be "tricked" into working like an Autorun or a Parallel for ANY event. Yet there is even more you can do.

You can even set an "Untriggerable" Event (@trigger = -1) to run from another Event with, you guessed it, a Script call:

$game_map.events[41].start

The Move Route Scripts are super duper useful, and can even be used to create "Metal Gear" style Suprises by accessing the @animation property. In a Move Route Script that does NOT repeat, just put in @animation_id = 98 or whatever your corresponding ID for the "Metal Gear Suprise" is.

This particular Event shouldnt need Advanced Eventing like this, but it is very helpful to know that these things are possible.
 
Thanks for the suggestions and help everybody. Some really good advice. I've finally finished the intro and it looks great, however I've ran into another problem. Seems simple enough but I can't think of a way around it. So at the end of my intro, the text picture and the background picture slowly fade out. The screen remains dark for a few seconds before transferring the player to an actual map. The problem here is the transitioning isn't smoothe. I have an autorun event set on the map, whit the first command being change screen tint, which I made black, then a wait command, followed by slowly changing the screen to normal via 120 frames. The problem here is right when the player transfers, you see a quick flash of the whole map, then the event takes effect. I'm trying to get from black to remaining black, to fading in. Is this an unavoidable glitch from the program, or is there something simple I can do to not make it do that ?
 
Parallel process seems to start running as soon as the map starts loading, whereas autorun begins after the map has loaded. I'm assuming they did it that way so all the characters would be on the screen for a cutscene before it starts playing. Glad you got it working! :)

@Heretic - that's really neat! I'll have to keep that in mind in the future.
 
Stardust":35dmyy2o said:
Parallel process seems to start running as soon as the map starts loading, whereas autorun begins after the map has loaded. I'm assuming they did it that way so all the characters would be on the screen for a cutscene before it starts playing. Glad you got it working! :)

@Heretic - that's really neat! I'll have to keep that in mind in the future.

No prob, and for the record, lots more where that came from.

This is for anyone interested in pushing the limits of RM in general, and not directed just at Stardust or the OP.

Take a look around in your Game_Character, Game_Player and Game_Event classes. You'll see a bunch of stuff that starts with "def do_something". ALL of those things you can call "REMOTELY" with a Script Call.

For example, one of those "def"s is called "moveto". "moveto" can be called "Remotely", which means $game_map.events[event_id].moveto(X, Y). If youre doing it from inside an Event, like a Move Route Script, you can exclude the preceeding $globals and just call "moveto(X, Y)". Other notable things you can do ANYTHING with a "def" attached to it. So in an Event without going into a Move Route Editor, but any place you can run a Script, you can do something like $game_player.move_left. It basically functions the same way as setting up a Move Route, but you can do this even from inside another Event or even that events Move Route. You can "start", you can "erase", literally you can do ANYTHING with scripts.

Turning or Moving isnt particulary useful in and of itself, but "start" and "erase" are. One reason you may want to use a Script Call instead of one of the listed Move Route Commands would be to allow for a Conditional Branch inside a Move Route itself, without the need of the Conditional Branch Command.

Try this. Lets make an event that repeatedly turns left as its default Move Route. But instead of doing it with a Command, we will instead use a Script. Now Turning in general has to do with @direction. So we wont use a script call to turn_left, we will access that direction. So this is what you can throw into Move Route -> Script

@direction = ($game_player.x == 42 and $game_player.y == 35) ? 4 : 6

Let me explain that briefly. This sets @direction to be either 4 or 6. 4 means facing Left, and 6 means facing Right. The () sets up the Condition. The ? and : characters are used for the syntax of the language. The basic syntax for this type of condition is @var = (condition) ? condition_is_true : else_condition_is_false. What you could do with this is to set up an NPC that will turn Right but only if the player is at the exact coordinates in the condition in the (). As soon as the conditions are not met, the NPC will again turn Left.

Directions correspond to a Numeric Keypad.

789
456
123

8 is Up, also on a numeric keypad, there should be an Arrow on the key itself pointing UP
4 is Left
6 is Right
2 is Down

Lets do something else. The main process for everything that goes on is in what we call a $scene. You have Map Scenes, Battle Scenes, and Window Scenes. All of the "def" inside each type of Scene_Description can be called. So lets take a look at Scene_Map. There is a "def" in there for "call_shop". In the Map is also where you have NPC events. So you can have an NPC that calls to $scene.call_shop while in a Map. But if you are in Battle, such a definition does not exist so a call to a script in battle that says $scene.call_shop will crash your game. If you copied over "def call_shop" from Scene_Map to Scene_Battle, then you can call a Shop from inside a Battle! Its when you start messing with those "def"s that you really get into scripting.

Just for fun, last thing to try. moveto. "def moveto(x, y)" will allow you to plug in Decimals. Since you are limited in the List of Event Commands as to what you can plug in, you can Turn and Move_Direction but cant moveto a specific set of coordinates without a Script Call. $game_map.events[25].moveto(12, 14). Its not exactly "pathfinding" but scripts do exist for "pathfind(12, 13)" and will cause Characters to move through unpassable obstacles. But lets see what else we can do. Instead of (12, 14), you can also put in "moveto(12.5, 13.5)" also. Once that is done, you wont be able to interact with said event any more.

Its just a bunch of "neat" things you can do with Move Routes, Scripts, and the game in general. The neatness of these things is often what gets people into scripting.

Yeah, this is totally off topic, but just here to let you know what you can do and how far you can push the limits of RM in general.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top