RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
CMS and CBS

0 Members and 1 Guest are viewing this topic.

*
Rep: +0/-0Level 82
I am currently making a game in RPG Maker and wish to know how to make a Custom Menu System and Custom Battle System to use with it.
My basic design for the menu is to have the 4 characters in the party on the left with their sprites walking forwards animation as the picture, and then to have HP/Max HP, MP and EXP next to them. And then on the right will be the subcategories like save and item.
I would like to know how to change around the layout of the menu or whether I need to create it from scratch and so how to do that.

For the Battle System I am using an ATB and want to keep it reasonably the same as the traditional layout but having a Time, HP and MP bar instead of just current HP.

If anyone can help with how to create these it would be greatly appreciated.

**
Rep: +0/-0Level 82
well it will also make rm2k3 show charecter faces in battle but to do that change the battle type to guage in battle layout
[/url]http://rmrk.net/index.php/topic,37641.0.htmlhttp://rmrk.net/index.php/topic,37641.0.html[/url]

*
Rep: +0/-0Level 81
I'm working on a CMS and CBS currently as well. As I haven't yet started on the CBS, I'll help you out with the Menu System for now:

For starters, you'll need a fairly large number of variables, and pictures for any text you want to display, including the digits 0-9. You'll have to experiment and find out where they need to be drawn for the best fit. To keep things simple, make sure that every digit graphic has the same dimensions. Make images using Paint's text editor. I find size 7 or 8 is good.

Next, you'll need to create a chipset (480x256). Create an autotile of your basic window, and make sure it is not in one of the positions that are supposed to be water, or it won't work (refer to RM2K3's help file). Once you have that, create upper tiles of common words, like "Hp", "Mp", "Save", "Items", "Quit", etc. The reason for doing this is that you are limited to 50 pictures on screen at once, and if all your commands were pictures, you wouldn't be able to have everything you need on screen.

The CMS is going to be a separate map. That means you'll need 3 variables to remember where the character was before you called the menu. (It's its own command, "Memorize Position", and the variables are for the Map ID, X co-ordinate, and Y co-ordinate) Every map has to contain a Parallel Process event like this:

Code: [Select]
Key Input processing: "Key Variable" (You need a separate variable for this)
Conditional branch: If "Key Variable" = 6 then (6 represents the ESC key)
Memorize position ("Remember ID", "Remember X", "Remember Y")
Hide screen
Change main character graphic to nothing (you need to make a blank charset sheet)
Transfer to CMS map
Show screen

There needs to be a main control event in the map that is parallel process triggered.
You need to assign each option (Item, Skills, Equip, Save, etc.) a value. (keep it simple, use, 1, 2, 3, 4, etc.)
And you need a variable called "Selected Option", or something similar.
Using Key Input Processing, as above, determine if either the up (4) or down (1) keys are being pressed.
Then, if down is being pressed, add one to the "Selected Option" variable. If up is being pressed, subtract one.
Then, using conditional branches, draw the cursor picture beside the option that is selected.
Using the Key Input Processing, determine if the "Enter" key (5) is being pressed. Inside that conditional branch, insert other branches to transfer you to other rooms. (Every subscreen, such as the Item screen, will be its own map.) The exception is the Save option, for that, simply use the "Open Save Screen" command.
Using the Key Input Processing, determine if the "ESC" key (6) is being pressed. For this key, simply reverse the code that brought you to the menu:

Code: [Select]
Conditional branch: If "Key Variable" = 6 then (6 represents the ESC key)
Hide screen
Change main character graphic to what it's supposed to be
Return to Memorized Position ("Remember ID", "Remember X", "Remember Y")
Show screen

Display any text you want as pictures, and also any numbers, which will need to be broken into their digits (see below)
The characters' facing forward running graphics can simply be events, with the "Fixed Dir/Continuous" option selected.

To display numbers, here's an algorithm I wrote for my game, which I'll offer to you:
You need:
1) Variables: 1 more than the number of digits you'll use (likely 6 digits + 1 = 7)
2) A common event

The variables will be named as follows:
-"Input"
-"1s Place"
-"10s Place"
-"100s Place"
-"1000s Place"
-"10000s Place"
-"100000s Place"
You'll start with "Input" containing the value of the variable you want broken down into its digits (I'll come to that later).
Your event commands should be as follows. I put the code in a spoiler because it is rather long. I have also colour-coded to help divide it into sections:

Spoiler for:
--For the ones digit--
Variable operations: "1s Place" = "Input"
Variable operations: "1s Place" mod 10


--For the tens digit--
Variable operations: "10s Place" = "Input"
Variable operations: "10s Place" - "1s Place"
Variable operations: "10s Place" mod 100


--For the hundreds digit--
Variable operations: "100s Place" = "Input"
Variable operations: "100s Place" - "1s Place"
Variable operations: "10s Place" * 10
Variable operations: "100s Place" - "10s Place"
Variable operations: "10s Place" / 10
Variable operations: "100s Place" mod 1000


--For the thousands digit--
Variable operations: "1000s Place" = "Input"
Variable operations: "1000s Place" - "1s Place"
Variable operations: "10s Place" * 10
Variable operations: "1000s Place" - "10s Place"
Variable operations: "10s Place" / 10
Variable operations: "100s Place" * 100
Variable operations: "1000s Place" - "100s Place"
Variable operations: "100s Place" / 100
Variable operations: "1000s Place" mod 10000


--For the ten thousands digit--
Variable operations: "10000s Place" = "Input"
Variable operations: "10000s Place" - "1s Place"
Variable operations: "10s Place" * 10
Variable operations: "10000s Place" - "10s Place"
Variable operations: "10s Place" / 10
Variable operations: "100s Place" * 100
Variable operations: "10000s Place" - "100s Place"
Variable operations: "100s Place" / 100
Variable operations: "1000s Place" * 1000
Variable operations: "10000s Place" - "1000s Place"
Variable operations: "1000s Place" / 1000
Variable operations: "10000s Place" mod 100000


--For the hundred thousands digit--
Variable operations: "100000s Place" = "Input"
Variable operations: "100000s Place" - "1s Place"
Variable operations: "10s Place" * 10
Variable operations: "100000s Place" - "10s Place"
Variable operations: "10s Place" / 10
Variable operations: "100s Place" * 100
Variable operations: "100000s Place" - "100s Place"
Variable operations: "100s Place" / 100
Variable operations: "1000s Place" * 1000
Variable operations: "100000s Place" - "1000s Place"
Variable operations: "1000s Place" / 1000
Variable operations: "10000s Place" * 10000
Variable operations: "100000s Place" - "10000s Place"
Variable operations: "10000s Place" / 10000
Variable operations: "100000s Place" mod 1000000

And that's all there is to it. It seems complex, but it actually works on a very simple principle applied many times. It's one of the more concise ways of breaking a number into digits.

With that common event set up, whenever you have a variable that needs to be drawn in pictures, simply set the variable "Input" equal to the variable you want broken down, and then call the common event to break it down into individual digits. After the digits come out, you need some conditional branches, quite a lot of them, actually. You may want another common event for this to avoid cluttering your main control event. Basically, all you have to do is:

If "1s Place" = 1 then
Draw picture "#1", (x, y)

If "1s Place" = 2 then
Draw picture "#2", (x, y)

...and so on, and so forth. But zero poses a bit of a problem, for which you'll need a slightly different conditional branch:

If "1s Place" = 0 then
If "1000s Place" is not 0 then
Draw picture "#0", (x, y)
else
If "100s Place" is not 0 then
Draw picture "#0", (x, y)
else
If "10s Place" is not 0 then
Draw picture "#0", (x, y)


Basically, you need to check if any of the higher digits are zero. This is because you want to see "94" displayed, not "0094". You ONLY need to check higher digits, and you may need to start higher than the thousands place if you're using a higher variable (namely, Gold).

Hopefully that can get you started. If you run into any problems, I'd of course be happy to look at them for you.