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.

Making a new menu?

Seda

Member

Man has it been a while! I've been tinkering around with RMXP once again and need a little bit of help. I am trying to use the script by Moghunter "MOG Scene Menu" in order to create my own menu. The only problem I am running into being able to move the numbers and graphics around.

I am currently trying to move the numbers / HP bars on the basic stats of hero 1 so that it is more centered with my menu.

Does anyone have any ideas on what lines / numbers I should be playing with to achieve my goal?

Thanks in advance! :thumb:
 

Jason

Awesome Bro

Try posting the script and it'll be a little easier for people to help you, and maybe even a screenshot of your current menu and where you'd like them to be moved to :thumb:
 

Seda

Member

Edited: Sure thing! Give me a few. (photoshop likes to take its time to load up @_@)

Here is a mock up of what I am trying to make. I got the background made and and put into the game. All that's left is to move things around accordingly! :lol:
Mock_Main_Menu.png

And here is what it looks like now:

Menu_Current.png

And here is the script being used. Unfortunately I wasn't able to get a download link (MOGHunter's site is down at the moment).

Code:
#_______________________________________________________________________________

# MOG Scene Menu Itigo V1.2            

#_______________________________________________________________________________

# By Moghunter  

# [url=http://www.atelier-rgss.com]http://www.atelier-rgss.com[/url]

#_______________________________________________________________________________

module MOG

    #Transition Time.

    MNTT = 20

    #Transition Type (Name)

    MNTP = "006-Stripe02"

end

$mogscript = {} if $mogscript == nil

$mogscript["menu_itigo"] = true

##############

# Game_Actor #

##############

class Game_Actor < Game_Battler

    def now_exp

        return @exp - @exp_list[@level]

    end

    def next_exp

        return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0

    end

end

###############

# Window_Base #

###############

class Window_Base < Window

    def nada

        face = RPG::Cache.picture("")

    end    

    def drw_face(actor,x,y)

        face = RPG::Cache.picture(actor.name + "_fc") rescue nada

        cw = face.width

        ch = face.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x , y - ch, face, src_rect)    

    end  

    def draw_maphp3(actor, x, y)

        back = RPG::Cache.picture("BAR0")    

        cw = back.width  

        ch = back.height

        src_rect = Rect.new(0, 0, cw, ch)    

        self.contents.blt(x + 65, y - ch + 30, back, src_rect)

        meter = RPG::Cache.picture("HP_Bar")    

        cw = meter.width  * actor.hp / actor.maxhp

        ch = meter.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 65, y - ch + 30, meter, src_rect)

        text = RPG::Cache.picture("HP_Tx")    

        cw = text.width  

        ch = text.height

        src_rect = Rect.new(35, 30, cw, ch)

        self.contents.blt(x + 10, y - ch + 10, text, src_rect)

        self.contents.font.color = Color.new(0,0,0,255)

        self.contents.draw_text(x + 81, y - 1, 48, 32, actor.hp.to_s, 2)

        self.contents.font.color = Color.new(255,255,255,255)

        self.contents.draw_text(x + 80, y - 2, 48, 32, actor.hp.to_s, 2)    

    end  

    def draw_mapsp3(actor, x, y)

        back = RPG::Cache.picture("BAR0")    

        cw = back.width  

        ch = back.height

        src_rect = Rect.new(0, 0, cw, ch)    

        self.contents.blt(x + 15, y - ch + 30, back, src_rect)

        meter = RPG::Cache.picture("SP_Bar")    

        cw = meter.width  * actor.sp / actor.maxsp

        ch = meter.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 85, y - ch + 30, meter, src_rect)

        text = RPG::Cache.picture("SP_Tx")    

        cw = text.width  

        ch = text.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 35, y - ch + 30, text, src_rect)

        self.contents.font.color = Color.new(0,0,0,255)

        self.contents.draw_text(x + 81, y - 1, 48, 32, actor.sp.to_s, 2)

        self.contents.font.color = Color.new(255,255,255,255)

        self.contents.draw_text(x + 80, y - 2, 48, 32, actor.sp.to_s, 2)    

    end  

    def draw_mexp2(actor, x, y)

        bitmap2 = RPG::Cache.picture("Exp_Back")

        cw = bitmap2.width

        ch = bitmap2.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 60 , y - ch + 30, bitmap2, src_rect)

        if actor.next_exp != 0

            rate = actor.now_exp.to_f / actor.next_exp

        else

            rate = 1

        end

        bitmap = RPG::Cache.picture("Exp_Meter")

        if actor.level < 99

            cw = bitmap.width * rate

        else

            cw = bitmap.width

        end  

        ch = bitmap.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 60 , y - ch + 30, bitmap, src_rect)

        exp_tx = RPG::Cache.picture("Exp_tx")

        cw = exp_tx.width

        ch = exp_tx.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 55 , y - ch + 30, exp_tx, src_rect)

        lv_tx = RPG::Cache.picture("LV_tx")

        cw = lv_tx.width

        ch = lv_tx.height

        src_rect = Rect.new(0, 0, cw, ch)

        self.contents.blt(x + 125 , y - ch + 35, lv_tx, src_rect)

        self.contents.font.color = Color.new(0,0,0,255)

        self.contents.draw_text(x + 161, y + 7, 24, 32, actor.level.to_s, 1)

        self.contents.font.color = Color.new(255,255,255,255)

        self.contents.draw_text(x + 160, y + 6, 24, 32, actor.level.to_s, 1)

    end

    def draw_actor_state2(actor, x, y, width = 80)

        text = make_battler_state_text(actor, width, true)

        self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color

        self.contents.draw_text(x, y, width, 32, text,2)

    end  

end

######################

# Window_MenuStatus2 #

######################

class Window_MenuStatus2 < Window_Selectable

    def initialize

        super(0, 0, 415, 280)

        self.contents = Bitmap.new(width - 32, height - 32)

        refresh

        self.active = false

        self.opacity = 0

        self.index = -1

    end

    def refresh

        self.contents.clear

        @item_max = $game_party.actors.size

        for i in 0...$game_party.actors.size

            x = 20

            y = i * 62

            actor = $game_party.actors[i]

            self.contents.font.name = "Georgia"

            if $mogscript["TP_System"] == true

                draw_actor_tp(actor ,x + 285, y - 5,4)  

                draw_actor_state2(actor ,x + 190, y - 5)

            else  

                draw_actor_state2(actor ,x + 220, y - 5)

            end

            drw_face(actor,x,y + 50)

            draw_maphp3(actor,x + 40, y - 5)

            draw_mapsp3(actor,x + 40, y + 20 )

            draw_mexp2(actor,x + 140, y + 15 )

        end

    end

    def update_cursor_rect

        if @index < 0

            self.cursor_rect.empty

        else

            self.cursor_rect.set(5, @index * 62, self.width - 32, 50)

        end

    end

end

################

# Window_Gold2 #

################

class Window_Gold2 < Window_Base

    def initialize

        super(0, 0, 160, 64)

        self.contents = Bitmap.new(width - 32, height - 32)

        refresh

    end

    def refresh

        self.contents.clear

        cx = contents.text_size($data_system.words.gold).width

        self.contents.font.color = normal_color

        self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)

        self.contents.font.color = system_color

        self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)

    end

end

####################

# Window_PlayTime2 #

####################

class Window_PlayTime2 < Window_Base

    def initialize

        super(0, 0, 160, 96)

        self.contents = Bitmap.new(width - 32, height - 32)

        refresh

    end

    def refresh

        self.contents.clear

        @total_sec = Graphics.frame_count / Graphics.frame_rate

        hour = @total_sec / 60 / 60

        min = @total_sec / 60 % 60

        sec = @total_sec % 60

        text = sprintf("%02d:%02d:%02d", hour, min, sec)

        self.contents.font.color = normal_color

        self.contents.draw_text(4, 32, 120, 32, text, 2)

    end

    def update

        super

        if Graphics.frame_count / Graphics.frame_rate != @total_sec

            refresh

        end

    end

end

#################

# Window_Steps2 #

#################

class Window_Steps2 < Window_Base

    def initialize

        super(0, 0, 160, 96)

        self.contents = Bitmap.new(width - 32, height - 32)

        refresh

    end

    def refresh

        self.contents.clear

        self.contents.font.color = normal_color

        self.contents.draw_text(4, 32, 120, 32, $game_party.steps.to_s, 2)

    end

end

##############

# Scene_Menu #

##############

class Scene_Menu

    def initialize(menu_index = 0)

        @menu_index = menu_index

    end

    def main

        s1 = ""

        s2 = ""

        s3 = ""

        s4 = ""

        s5 = ""

        s6 = ""

        @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])

        @command_window.index = @menu_index

        if $game_party.actors.size == 0

            @command_window.disable_item(0)

            @command_window.disable_item(1)

            @command_window.disable_item(2)

            @command_window.disable_item(3)

        end

        @command_window.visible = false

        @command_window.x = -640

        @mnlay = Sprite.new

        @mnlay.bitmap = RPG::Cache.picture("Main_Menu")

        @mnlay.z = 10

        @mnback = Plane.new

        @mnback.bitmap = RPG::Cache.picture("Mn_back")

        @mnback.blend_type = 0

        @mnback.z = 5

        @mnback2 = Plane.new

        @mnback2.bitmap = RPG::Cache.picture("Mn_back")

        @mnback2.blend_type = 0

        @mnback2.z = 5

        @mnback2.opacity = 60

        @mnsel = Sprite.new

        @mnsel.bitmap = RPG::Cache.picture("Mn_Sel")

        @mnsel.z = 20

        @mnsel.x = 0

        @mnsel.y = 110

        @mnop = 150

        if $game_system.save_disabled

            @command_window.disable_item(4)

        end

        @playtime_window = Window_PlayTime2.new

        @playtime_window.x = 30

        @playtime_window.y = 375

        @playtime_window.opacity = 0

        @playtime_window.z = 15

        @steps_window = Window_Steps2.new

        @steps_window.x = 230

        @steps_window.y = 375

        @steps_window.opacity = 0

        @steps_window.z = 15

        @gold_window = Window_Gold2.new

        @gold_window.x = 455

        @gold_window.y = 405

        @gold_window.opacity = 0

        @gold_window.z = 15

        @status_window = Window_MenuStatus2.new

        @status_window.x = 195

        @status_window.y = 110

        @status_window.opacity = 0

        @status_window.z = 15

        Graphics.transition(MOG::MNTT, "Graphics/Transitions/" + MOG::MNTP)

        loop do

            Graphics.update

            Input.update

            update

            if $scene != self

                break

            end

        end

        Graphics.freeze

        @command_window.dispose

        @playtime_window.dispose

        @steps_window.dispose

        @gold_window.dispose    

        @status_window.dispose

        @mnlay.dispose

        @mnback.dispose

        @mnback2.dispose

        @mnsel.dispose

        Graphics.update  

    end

    def update

        @command_window.update

        @playtime_window.update

        @steps_window.update

        @gold_window.update

        @status_window.update

        @mnback.oy += 1

        @mnback.ox += 1

        @mnback2.oy += 1

        @mnback2.ox -= 1

        @mnop += 5

        if @command_window.active == true

            @mnsel.bitmap = RPG::Cache.picture("Mn_Sel")    

        else

            @mnsel.bitmap = RPG::Cache.picture("Mn_Sel_off")

            @mnsel.zoom_x = 1

            @mnsel.opacity = 255

        end

        if @mnop >= 255

            @mnop = 120

        end  

        if @command_window.active

            update_command

            return

        end

        if @status_window.active

            update_status

            return

        end

    end

    def update_command

        if @mnsel.zoom_x <= 1.6

            @mnsel.zoom_x += 0.03

            @mnsel.opacity -= 10

        elsif @mnsel.zoom_x > 1.6

            @mnsel.zoom_x = 1.0

            @mnsel.opacity = 255

        end  

        case @command_window.index

            when 0  

                @mnsel.x = 0

                @mnsel.y = 110

            when 1

                @mnsel.x = 25

                @mnsel.y = 155

            when 2

                @mnsel.x = 40

                @mnsel.y = 197

            when 3

                @mnsel.x = 45

                @mnsel.y = 242

            when 4

                @mnsel.x = 25

                @mnsel.y = 285

            when 5

                @mnsel.x = 0

                @mnsel.y = 325

        end    

        if Input.trigger?(Input::A)

            $game_system.se_play($data_system.cancel_se)

            $scene = Scene_Map.new

            return

        end

        if Input.trigger?(Input::C)

            if $game_party.actors.size == 0 and @command_window.index < 4

                $game_system.se_play($data_system.buzzer_se)

                return

            end

            case @command_window.index

                when 0

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_Item.new

                when 1

                    $game_system.se_play($data_system.decision_se)

                    @command_window.active = false

                    @status_window.active = true

                    @status_window.index = 0

                when 2

                    $game_system.se_play($data_system.decision_se)

                    @command_window.active = false

                    @status_window.active = true

                    @status_window.index = 0

                when 3

                    $game_system.se_play($data_system.decision_se)

                    @command_window.active = false

                    @status_window.active = true

                    @status_window.index = 0

                when 4

                    if $game_system.save_disabled

                        $game_system.se_play($data_system.buzzer_se)

                        return

                    end

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_Save.new

                when 5

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_End.new

            end

            return

        end

    end

    def update_status

        if Input.trigger?(Input::A)

            $game_system.se_play($data_system.cancel_se)

            @command_window.active = true

            @status_window.active = false

            @status_window.index = -1

            return

        end

        if Input.trigger?(Input::C)

            case @command_window.index

                when 1

                    if $game_party.actors[@status_window.index].restriction >= 2

                        $game_system.se_play($data_system.buzzer_se)

                        return

                    end

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_Skill.new(@status_window.index)

                when 2  

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_Equip.new(@status_window.index)

                when 3  

                    $game_system.se_play($data_system.decision_se)

                    $scene = Scene_Status.new(@status_window.index)

            end

            return

        end

    end

end
 
The window's position is on line 128
The positions of the contents are on lines 144-152

To split up the level/exp, look at lines 82-115

Also, notice it's much easier to read when it's indented? :scruff:
 

Seda

Member

Wow! Everything seems to be working out just fine now! Thank you SO much for the assistance Brewmeister! I couldn't have done it without you. Hopefully I'll have a menu to contribute here in a few days! :lol:
 

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