Home
Help
Search
Calendar
Login
Register
Please
login
or
register
.
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
News:
New forum theme up and running!
Charas-Project
»
Game Creation
»
Requests
»
RPG Maker Programming
»
CMS Basic Tutorial Map Style
« previous
next »
Print
Pages: [
1
]
Author
Topic: CMS Basic Tutorial Map Style (Read 2675 times)
Arcanagirl
Game Designer!
Zealot
Posts: 514
I love games, creating things my way...RPGmaker lover!
CMS Basic Tutorial Map Style
«
on:
September 02, 2006, 10:29:31 PM »
There are two ways to make CMS (Custom Menu System) that I know of. The one I know how to code is the CMS that uses different maps and chipsets. Here I plan to explain to the best of my ability, how to make this menu system. You will need to know how to use variables, switches, forks, pictures, digit splitting, common events, and a basic knowledge of most RPGmaker2000/2003 codes.
First you need to make a chipset that would hold your borders and text, numbers, some pictures, etc. I normally use my system, open it up and take the borders out and place them in the chipset that will hold my menu system.
Once you get that all done, you should make a map, now either you can make the background of this map a Parallax, or you can add in a color in the chipset that you want, but it is a lot easier to just use a Parallax. So if you want to have your menu system like mine, then use a Parallax of your desired background, whether it is custom or you downloaded it, what ever works for you. Just be sure it wont blind the players and somewhat matches your border set placed in the chipset.
You can set the Parallex in the maps properties shown below.
Now you should have a Bg set in and your borders set up, Now you can add the text in the menu side of the borders. Example below.
The menu side of the map is what will have your codes to send you to the next map of information or what not, based on how you plan to have your CMS. Mine will just be an example to you, so try not to just copy mine, but mess around with the borders and come up with a good layout. Layouts are very important, so planning ahead is the best way. Exmaple from me would be, I draw my layouts first, and I normally draw a few different types of layouts and decide which one will work to my likings.
Hopefully you have a layout set in and are ready for the next step. Now you are going to want to figure out how to place your characters in party on your side border. Mine will not be the best example, for there is only one member allowed out at a time. Look at the second picture post, noticed how the face set and LP/SP/Lvl are placed. These where done with pictures., so if you plan to have facesets added in, your going to have to make a picture of each faceset for each character. Example is above, how that faceset is one graphic in itself. Just get into a good paint program, copy your facesets and make seperate pictures, make sure to use 256 colors only and that the image is a .png.
Next, you are going to need to make seperate graphics for your numbers, 0-9 is all you need picture wise, since you will be using a digit splitter to show your stats.
Now for the HP/MP/Level, those dont need to be pictures, you can make them built into your chipset and placed them how you like.
Once all the graphics are made and set in how you planned, we need to start the coding. Open the database and goto the common event section. This is where you will need to know what I mentioned above. Find an empty event slot and get ready to code away, name your event something dealing with status, to help you remember, also make this a parallel process using no switches to trigger. So dont make it need a switch to start up. I called my event Heros Status, since this event will be all about each heros stats etc. The first step in this event will be mostly variables. And loads of them. You need to make a variable for each characters stats, if you are not going to have a status page, but I am sure you will since most all rpgs have status pages, Make variables for Att,Def,Int,Speed,Lvl,Exp,Hp,Mp,Max Hp, Max Mp, note that we will be using the heros status built into rpgmaker, so if you plan to use custom status, then use those variables instead.
Make each variable set to the corisponding stat. Exmaple, Variable Hero1 Attack = Hero1s Attack.
Hero1 is defined as your first hero in the database, the variable just says Hero1 so you know we are talking about the first hero. Example below.
Once all your variables are set in for each characters stats, you will now start adding your digit splitting codes. If you do not know how to do this, please read, DBs guide to DBS tutorial. It should explain all that and also explain how to add in pictures to go with it. Make sure your pictures are in a call common event seperated from the parallel event, or you will lag really bad or the game may freeze up even. In my games cause I made a common event below Heros status event, called it Profiling and made it a call event. In the Profiling event I had all the picture codes, so even if the digit splitting codes are in the other event, it is parallel process and will always run, so it works out just fine. At the top you can do the facesets, you will be using fork conditions for heros slots and party size. Example, Variables:
Var: Heronameslot
Var: Hero2nameslot
you want vars for each heros name and add slot in it or party slot, what ever works for you.
Have a variable for Partysize.
These variables will be used for your faceset, but can be used when changing party members also.
Now you dont need to add them yet, just add them into the system for later use. These slots should be set to a number when members are added or removed.
But this tutorial will not cover that basis, but mostly how to make the beginning parts of a CMS.
ok now make fork conditions! At the top of your new common event, add a fork condition for hero1 is in party, and check the box for else.
Now inside the main fork branch add another fork condition for if variable heronameslot is equal to 1, check the else box.
inside that branch add the show picture, set the picture ID # to one that isnt used, and select your first heros faceset. Now for the x and y cords, your gonna want to mess with those so they match how you want. But once you find the perfect cords for slot one, all other facesets can use those cords when in party slot one position. Also once you find a good X cord, you never have to change it for any slot, that way they all line up, but only the Y cord needs to change.
Now that you have the heros face picture added in, Copy the branch condition for if variable heroname equals 1, and paste it in the else that is connected to that same branch. Now change the branch you just pasted, make the 1 a 2 instead. this will show heros face in slot 2.
change the pictures Y cords to match your slot 2, then copy and paste again, like you did before, and paste is in the else of branch for var = 2, then change the 2 to a 3, if you get the pattern here, you can do all 4 sets this way, just mod the pictures X, but always keep the same picture ID # for hero1s faceset. On the slot 4 fork condition, you can remove the check box else.
In the else of if hero1 is in party, you will copy and paste all you just coded for if hero1 is in party and paste it all in the else. change the picture ID number to a different number, since we are now using a different character.
Mod everything you pasted to match hero2, and using hero2s picture, but since your hero1 pictures already have your perfect X and Y cords, just use the same cords as hero1s for hero2.
Should look something like this below: notice how my picture is 1 and always 1 for hero1. But use a picture that isnt already used, just remember to always have same pictures used, use same ID #.
<>Branch if Hero1 in the party
<>Branch if var [
?: Heronameslot] is 1 - Note the
? will the the variables number used.
<>Show Picture: 1, Hero1face, (X, Y) - note x and y are what you figured out as good positions.
<>
:Else Handler
<>Branch if var [
?: Heronameslot] is 2
<>Show Picture: 1, Hero1face, (X, Y) - Note the only change in X,Y is the Y cords for slot 2
<>
:Else Handler
<>Branch if var [
?: Heronameslot] is 3
<>Show Picture: 1, Hero1face, (X, Y) - Note the only change in X,Y is the Y cords for slot 3
<>
:Else Handler
<>Branch if var [
?: Heronameslot] is 4
<>Show Picture: 1, Hero1face, (X, Y) - Note the only change in X,Y is the Y cords for slot 4
<>
:End
<>
:End
<>
:End
<>
:End
<>
:Else Handler
<>Branch if Hero2 in the party
<>Branch if var [
?: Heroname2slot] is 1
<>Show Picture: 2, Hero2face, (X, Y) - note x and y can be the same as hero1s pictures, just make the picture # diff
<>
:Else Handler
<>Branch if var [
?: Heroname2slot] is 2
<>Show Picture: 2, Hero2face, (X, Y)
<>
:Else Handler
<>Branch if var [
?: Heroname2slot] is 3
<>Show Picture: 2, Hero2face, (X, Y)
<>
:Else Handler
<>Branch if var [
?: Heroname2slot] is 4
<>Show Picture: 2, Hero2face, (X, Y)
<>
:End
<>
:End
<>
:End
<>
:End
<>
:Else Handler
Now just keep doing that till you have all your heros set in. Ok back to digit splitting for other stats.
Once you have done all the digit splitting for each stats, just do your best to align the numbers to how your map is. Exmaple:
Notice how the Lp and Sp are lined up in the chipset and spaced over is the Stats pictures. It takes time to get the pictures lined up, just mess around with the x and y of the pictures to get them to line up. Now remember the LP and Sp are images added into the chipset, so your going to be modding the pictures to match the images in the chipset. Just mess around and test them out to see if the pictures are where you want them.
When digit splitting, remember that each digit set should hold the same picture, example: I have 3 digits for Attack on my hero, digit1 for attack holds picture 1, digit 2 holds picture 2 and digit 3 holds picture 3. Never use the same picture as other events though, but only use the same picture ID when it is for the same digit. that way if your attack is 100, it shows 3 pictures and not any more then 3 pictures. Just remember like we did with the faces, each hero had their own picture number, similar to that.
I hope I covered everything for stats and pictures, now we go onto another common event. Which will call the menu and exit it. This is where you need to make a cursor
charaset. Just make one or use one from a system2. I just made my cursor one image and made the entire charaset for front back left right that same image. So if there was ever a mishap in my codes, the cursor wont change off, but you can easily use just front face, but I wont go into that.
Now in 2 empty common events, name one Menu system active, or how ever you want, this one will be for when you enter the menu map, then name the second one menu exit, or something close to that.
Set both to parallel process, and both set to a switch, they will need to be 2 different switches as well. Name one something close to enteringmenu, and the other one to something like menusystem or what not.
We wont use exit, cause that is not needed. The menu exit event will use a switch that is turned on when you enter the menu, so that way if you hit the key, it will exit you.
Ok now in Your Menu system active event, or what you named it, you want to start with a key input. I used esc for open and close, you can use different keys if you like, but we will use my system as an example. Now in the top of this common event you are going to want to add a Key input process. use a variable that you will be able to remember so if you come back to this, you know whats going on. Set it to the input key you would like to use to call your menu. In mine I used cancel, just like shown below. I also used a var called menu, so I dont get confused in future codings.
Once you have your key input, add a fork branch condition and set it equal to the number shown next to the key inputs, check my image above to see what I mean, there are numbers next to them showing what numbers need to be pushed for the keys to work. So since cancel is # 6, the branch will be if variable menu is = to 6.
Now in that branch, set a memorize location, name the variable to something like, heroslocation or something like that, set the X,Y to a variable like MapX MapY. So 3 new variables were just created.
Now you want to add under that hide screen, this is so you dont see the changes in hero to cursor and other things upon changing maps. Now set in your teleport to
the menu system location, I normally set the location to the first text in the borders. Which in a previous screenshot above, was Items, so I teleported to the map menu is on, and next to Items text.
next you will change all hero graphics to the cursor graphic, in my case I have 8 characters, so I change each hero sprite assocciation to cursor charaset.
Then you should add a wait for 1 second, so all the graphics have time to change. Then use show screen, under that you going to want to call your common event for
the facesets for each slot. In my case I would call common event Profiling. If your faceset codes are in a seperate common event from the digit splitting pictures, then you will want to call that common event as well so your stats will show up.
Now under all that, use move event hero, Use lock facing and if you dont want the cursor to animate, just be a still image, add stop animation under lock facing.
Add in your switch for menuexit, turn that switch on, under that turn your menusystem active switch off. That will now end your common event to enter the menu system and turn on your exit common event.
Your menu system active event should look something like this below: Remember this is shown based on my event, so your variables and numbers night not match mine exactly.
<>Key Input Proc: [0021:Menu]
<>Branch if var [0021:Menu] is 6
<>Memorize Location: [0001],[0002],[0003]
<>Hide Screen: Instantaneous
<>Teleport: 0001: Menu System (000,001), Retain Facing - this is the map and what cords.
<>Change Sprite Association: Lilly cursor - 1
<>Change Sprite Association: Cora cursor - 1
<>Change Sprite Association: Camui cursor - 1
<>Change Sprite Association: Malin cursor - 1
<>Change Sprite Association: Kia cursor - 1
<>Change Sprite Association: Merric cursor - 1
<>Change Sprite Association: Tetsia cursor - 1
<>Change Sprite Association: Leris cursor - 1
<>Wait: 1.0 Sec
<>Show Screen: Instant
<>Call Event: Profiling
<>Move Event: Hero, Lock Facing, Stop Animation
<>Switch Operation: [0043:Second Menu] On
<>Switch Operation: [0089:Enter Menu] Off
<>
:End
Now for the exit menu common event, Use another key input, but this time the variable should be named something like close or exitmenu. Set it to the key input you want pushing in order to close the menu. Then use Hide screen again, like in enter menu. under that change all the sprite assocciations back to their normal sets. Add move Event, target hero again and unlock facing and place start animation, unless you didnt use that. So ignore start animation if the cursor is set to animate. Now use Recall to Location, and add in the same infor from Memorize location. That way it will teleport you exactly back to where you were when you called the menu. Add in a wait for about .3 seconds, which if you use 3 in wait, it will be .3 seconds. Place under that a show screen, then change switch for the menu system active to on and the exit menu switch to off. Should look like something below.
Remember this is my example, yours will not look 100% like this, just focus on the idea oh what commands in the event you will be using.
<>Key Input Proc: [0004:Exit]
<>Hide Screen: Instant
<>change Sprite Association: Lilly Lilly-1
<>change Sprite Association: Cora Cora-1
<>change Sprite Association: Camui Camui-1
<>change Sprite Association: Kia Kia-1
<>change Sprite Association: Malin Malin-1
<>change Sprite Association: Leris Leris-1
<>change Sprite Association: Merric Merric-1
<>change Sprite Association: Tetsia Tetsia-1
<>Move Event: Hero, Unlock Facing, Star Animtion
<>Recall to Location: V[0001] V([0002]),V([0003])
<>Wait: 0.3 Sec
<>Show Screen: Instant
<>Switch operation: [0089:Enter Menu] On
<>Switch operation: [0043:Second Menu] Off
Now that should cover entering and exiting your menu system. Now those codes are just the basics, if you end up having extra stuff in your game that might need added into your menu system codes, then add as needed, but this will be good enough for a turn based game.
Now there are a few extra codes needed in your maps for menu and else where. For example, when your game is first starting, like after intro, you will want to make a event in that starting map that turns on the Menu System active switch. You will also want to add codes for party size, heronameslots. This is where you figure out, ok my hero is in the top slot so his variable would = 1, and if you have other characters that start out in the party, add their variables to the slot #s we coded before. Add variable party size to = how many people are in your party, so if you just had the hero, Party size would be 1.
In your main menu map, you will want to set an event up somewhere for your Facesets to keep appearing as you change maps in the menu system. This makes it so if you went to items, then went back, you can see the pictures again. Set the event to auto start, and set it to acivate on a switch, I called my switch Profiling, just like the common event. Now in the event all you need is to commands, one is call the profiling common event, or event you named for the facesets to show. After that turn the profiling switch off to avoid lag and problems.
Now when ever you change maps in the menu system only, anytime you refere back to the main menu, without using the key input that takes you there, place the event after the teleport command, on. Do not however add this to your enter menu common event. Example would be if you went into items, then had a command use a key input to take you back to main menu without calling the events, you want to add the turn on switch profiling (or name you picked).
This should cover the basics and some hard codes in CMS. I hope this helps many of you out there.
Logged
~Lands of Lunori~
Trailer
Linkizcool
Doesn't exist for official purposes.
Exemplar
Posts: 1,290
I am Canadian.
(No subject)
«
Reply #1 on:
September 02, 2006, 10:38:48 PM »
Sweet tut. I have my own way of coding CMS's, might put it up.
Logged
Arcanagirl
Game Designer!
Zealot
Posts: 514
I love games, creating things my way...RPGmaker lover!
(No subject)
«
Reply #2 on:
September 02, 2006, 10:47:17 PM »
yeah I know I only used one way as the tut, but I dont have the time to post every way to code a CMS, there are just so many...
Logged
~Lands of Lunori~
Trailer
WarxePB
Action Sue
Royal
Posts: 3,601
What killed the dinosaurs?
(No subject)
«
Reply #3 on:
September 03, 2006, 01:50:23 AM »
Ah, so you already did it. Excellent. Would anyone object if I stickied this?
Logged
Blog:
The Gigaverse
Twitter:
Initial Chaos
DragonBlaze
A Wild DB Appeared!
Royal
Posts: 3,329
(No subject)
«
Reply #4 on:
September 03, 2006, 02:16:10 AM »
I think this is a very nice tut
I'd have no objections if it were stickied
Logged
Hell Yeah! Just recovered all my old rm2k/3 games from my 10 year old, broken laptop hard drive that had been formatted and had a new OS installed on it. Oh, and I did all of this from my phone. WIN
Arcanagirl
Game Designer!
Zealot
Posts: 514
I love games, creating things my way...RPGmaker lover!
(No subject)
«
Reply #5 on:
September 03, 2006, 02:20:43 AM »
wow for me being the densest member on charas, I actually made something useful using text lol. Glad it is approved as a good tutorial.
Logged
~Lands of Lunori~
Trailer
aboutasoandthis
Exemplar
Posts: 1,915
Talking sucks.
Similar to mine.
«
Reply #6 on:
September 03, 2006, 12:39:30 PM »
I use double digit charasets as opposed to single digit pictues, but we basically use the same idea. Good Job.
Logged
My pokemon bring all the nerds to the yard, and they're like you wanna trade cards? Darn right, I wanna trade cards, I could trade this, but not my charizard.
DragonBlaze
A Wild DB Appeared!
Royal
Posts: 3,329
(No subject)
«
Reply #7 on:
September 03, 2006, 02:56:38 PM »
Hmm, I just noticed something. You should resize your 'coding' pictures because they're scaled down and are hard to read. I think charas automatically scales down images over 320 x 240 when you use the IMG tags, but if you edit your post, you can edit the code to display the images at the right size again.... I think.
Logged
Hell Yeah! Just recovered all my old rm2k/3 games from my 10 year old, broken laptop hard drive that had been formatted and had a new OS installed on it. Oh, and I did all of this from my phone. WIN
EXO Muffin
Acolyte
Posts: 466
(No subject)
«
Reply #8 on:
September 04, 2006, 12:13:43 AM »
Use <
img s
rc
=http://www.omgliektehwebsitelol.com/picture>.
Logged
Ladies and gentlemen,
this
is Chewbacca. Chewbacca is a Wookiee from the planet Kashyyyk. But Chewbacca
lives
on the planet Endor. Now think about it;
that does not make sense!
WarxePB
Action Sue
Royal
Posts: 3,601
What killed the dinosaurs?
(No subject)
«
Reply #9 on:
September 07, 2006, 11:26:22 AM »
Alrighty, it's stickied. Sorry about the delay.
By the way, did I mention that this is a great tutorial?
Logged
Blog:
The Gigaverse
Twitter:
Initial Chaos
ellie-is
Administrator
Over 9000!
Posts: 13,056
(No subject)
«
Reply #10 on:
February 04, 2007, 03:02:55 PM »
sorry by the kick, but the images dont appear
Logged
Quote from: Zerlina on February 05, 2012, 08:59:46 PM
Yeah so I'm pretty
Quote from: Archem2 on February 05, 2012, 09:33:40 PM
I'm a fat-***
jj1546
panda
Initiate
Posts: 63
Its dangerous to go alone, take this -Cave dood
(No subject)
«
Reply #11 on:
February 04, 2007, 03:21:05 PM »
awesome wish i could see da pics great tutorial though
Logged
Print
Pages: [
1
]
« previous
next »
Charas-Project
»
Game Creation
»
Requests
»
RPG Maker Programming
»
CMS Basic Tutorial Map Style