VX 스크립트


Download : http://eternalworld.tistory.com/426


프로그램에 대하여


  Etude87's Menu Editor for VX(이하 EMV)는 RPG Maker VX에서 사용 가능한 메뉴씬 스크립트를 제작하는 프로그램입니다. RPG Maker VX Ace로 제작되었던 EME(http://eternalworld.tistory.com/417)를 VX에 맞게 수정 했으며 런타임 패키지(이하 RTP)가 필요하지 않습니다. 스크립트 수정할 여력이 되지 않는 초보자를 대상으로 제작된 간단한 프로그램입니다. 보다 간단히 커스텀 하는 것 이상의 기능을 바란다면 본 프로그램 보다는 무료 배포되는 스크립트쪽을 추천합니다.


  기본 마우스 조작이며, 우클릭시 각종 설정 메뉴가 나타납니다. 키보드는 몇몇 용어 편집 등에서만 사용됩니다.


  커스텀씬을 사용하는의 경우 EMV로 생성한 스크립트보다 위에 위치해야 합니다.

사용된 외부소재


  허걱(etcholic)님께서 작성하신 InputEX+기반으로 제작되었습니다.
  네이버의 나눔고딕폰트가 사용되었습니다.

주의사항


  본 프로그램내 버그 등의 문제가 생길 경우 직접 배포한 곳에만 다시 게재하므로 무단배포를 금합니다.


  본 프로그램으로 작성한 스크립트를 다른 메뉴 스크립트와 사용시 정상적으로 작동하지 않을 수 있습니다.


수정내역


  1.0.1 : 첫 배포

  1.0.2 : English version cursor image bug fixed

  1.0.3 : update_actor_selection bug fixed

  1.0.4 : update_command_selection bug fixed

  1.0.5 : update_actor_selection bug fixed

  1.0.6 : status window invisible bug fixed

  1.0.7 : create_command_window bug fixed


실기영상



  RPG Maker VX Ace로 제작되었던 EME(http://eternalworld.tistory.com/417)의 실기영상입니다만, 작동 및 사용법은 동일하므로 여기에 소개합니다.


제작 후기


  EME 제작후기에서 밝혔던 바와 같이 RPG Maker VX용은 원래 제작 예정에 없던 물건입니다만, 생각해보니 RPG Maker VX를 사용할 필요 없이 그냥 EME를 뜯어고치면 되겠다 싶어 작업을 진행했습니다.


도움 주신 분들


  Lamancha, 말라야, 영상에서본여자, 유우키(케이린), cutyperson

Who's 습작

profile

* 게임소재 자료실 관리자 (2012.04.17 ~ ) / 게임리뷰 게시판 관리자 (2012.08.23 ~ )
* 개인 블로그 : https://eternalworld.tistory.com
└ RPG Maker VX/Ace 메뉴 편집기 등 배포
* 리뷰 블로그 : https://etude87.tistory.com
└ RPG Maker 시리즈 한글패치 정리, 쯔꾸르 시리즈 이용 규약 등 소개
* 프리 게임 한글화 DB : https://freegame.tistory.com
└ 한글화된 해외 무료 게임 정리

Comment '25'
  • ?
    소금 2015.02.20 20:02
    감사합니다
  • ?
    :3 2015.02.21 20:49 Files첨부 (1)

    테스트 플레이 하면 이ㅓㅀ게 뜨는데 어떡하죠

  • ?
    오류.png

    이런 식으로 만들었는데

    151번째 줄에있는게 오류가 있다고 하는데 어떻게 해야되나요?

  • profile
    습작 2015.02.28 14:58
    생성하신 스크립트 파일을 빈 프로젝트에 넣었을때도 동일한 문제가 발생한다면, 생성하신 스크립트 파일을 제게 보내주세요.
    etude87@gmail.com

    만약 그렇지 않고 특정 프로젝트에서만 해당 문제가 발생하는 경우라면 이는 해당 프로젝트에서 사용중인 다른 스크립트와의 충돌 문제일 수 있습니다. 이 경우엔 Data 폴더의 Scripts.rvdata 파일을 보내주세요.
  • profile
    습작 2015.02.28 16:34
    버그 수정했습니다. 제보 감사합니다.
  • ?
    비형 2015.06.26 16:20
    저기..혹시나 해서 ACE에 실험해봤더니 되더군요.. VX에 맞게 수정했다고 본문에 나오던데..
    고쳐주실 수 있나요..?
  • profile
    습작 2015.06.26 19:53

    말씀의 의미를 잘 모르겠습니다.
    VX용으로 제작된 것이 Ace에서 잘 작동된다는 이야기일까요?
    툴의 이름이 Etude87's Menu Editor for VX인지 다시 한번 확인 부탁드립니다.

  • ?
    비형 2015.06.26 20:47
    네.. 전 VX유전데요.. 안되서 기본 스크립트 파헤치고 있는데 너무 힘드네요 ㅜㅜ..
  • profile
    습작 2015.06.27 07:40
    혹시 모르니 http://avangs.info/help_faq/445564 이쪽 게시물을 참고해 살펴보세요.
    VX의 경우 한글패치를 하면 스크립트 오류가 생기는 경우도 있으니까요.
  • ?
    비형 2015.06.27 22:16
    알려주셔서 감사합니다..^^ 결국 기본꺼 손대서 위치조정 하긴 했어요..ㅎ
  • profile
    케이린 2015.10.26 19:28 Files첨부 (1)

    캡처.JPG


    채눠넣은 마지막줄 end 있는부분 이렇게뜨는데 어떡하나요?

  • profile
    습작 2015.10.26 21:57
    생성된 스크립트를 확인해 봐야 알 수 있을 것 같습니다. VX의 경우 한글패치 자체의 오류도 있으므로 혹시 문제된다면 그부분도 같이 확인해 주시면 좋습니다.
  • profile
    케이린 2015.10.27 17:36
    class Window_MenuGold < Window_Base
    def initialize(x, y, width, height)
    super(x, y, width, height)
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, self.contents.width - 8, WLH, '원')
    cx = contents.text_size(Vocab::gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, self.contents.height-WLH, self.contents.width - 8-cx-2, WLH, $game_party.gold, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(4, self.contents.height-WLH, self.contents.width - 8, WLH, Vocab::gold, 2)
    end
    end
    class Window_Location < Window_Base
    def initialize(x, y, width, height)
    super(x, y, width, height)
    refresh
    end
    def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, self.contents.width - 8, WLH, '위치')
    self.contents.font.color = normal_color
    map = load_data('Data/MapInfos.rvdata')
    self.contents.draw_text(4, self.contents.height-WLH, self.contents.width - 8, WLH, map[$game_map.map_id].name, 2)
    end
    end
    class Window_MenuCommand < Window_Command
    def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 0)
    end
    end
    class Scene_Menu < Scene_Base
    def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_MenuGold.new(0, 360, 160, 56)
    @location_window = Window_Location.new(0, 303, 160, 56)
    @status_window = Window_MenuStatus.new(160, 0)
    end
    def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @location_window.dispose
    @status_window.dispose end
    def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @location_window.update
    @status_window.update
    if @command_window.active
    update_command_selection
    elsif @status_window.active
    update_actor_selection
    end
    end
    def create_command_window
    @command_window = Window_MenuCommand.new(160, [Vocab::item,Vocab::save,Vocab::game_end])
    @command_window.x = 0
    @command_window.y = 0
    @command_window.height = 200
    @command_window.index = @menu_index
    @command_window.draw_item(0, false)
    if $game_system.save_disabled
    @command_window.draw_item(1, false)
    end
    end
    def update_command_selection
    if Input.trigger?(Input::B)
    Sound.play_cancel
    $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
    if [1,2].include?(@command_window.index)
    Sound.play_buzzer
    return
    elsif $game_system.save_disabled and @command_window.index == 1
    Sound.play_buzzer
    return
    end
    Sound.play_decision
    case @command_window.index
    when 0
    $scene = Scene_Item.new
    when 1
    $scene = Scene_File.new(true, false, false)
    when 2
    $scene = Scene_End.new
    end
    end
    end
    class Scene_Item < Scene_Base
    def return_scene
    $scene = Scene_Menu.new(0)
    end
    end
    class Scene_End < Scene_Base
    def return_scene
    $scene = Scene_Menu.new(2)
    end
    end
    class Scene_File < Scene_Base
    def return_scene
    if @from_title
    $scene = Scene_Title.new
    elsif @from_event
    $scene = Scene_Map.new
    else
    $scene = Scene_Menu.new(1)
    end
    end
    end
    입니다
  • profile
    습작 2015.10.27 23:49
    일단 제보받은 부분에 대해서 버그 픽스를 했습니다. 아무래도 VX의 경우 구버전의 제작툴이다보니 사용자가 적어 피드백이 많이 부족했던 것 같습니다. 추가적인 문제 발생시 재 문의 부탁드립니다. 제보 감사합니다.
  • profile
    케이린 2015.10.28 19:15
    답변 감사합니다.
  • profile
    습작 2015.11.01 17:56
    재 버전업하였습니다. 혹여 문제발생하시면 새로이 다운로드 부탁드립니다.
  • profile
    유우키 2015.11.01 19:30

    상태창 사용에 체크하지 않았는데 상태창이 뜨네요.

    정상인건가요?


    번거롭게 해드려 죄송합니다.

  • profile
    습작 2015.11.01 19:33
    버그네요. 해당 부분 확인 후 수정되면 다시 알려드리겠습니다. :)
  • profile
    유우키 2015.11.01 20:39
    감사합니다!
  • profile
    습작 2015.11.01 20:48
    버전업 되었습니다. 추가적인 분제 발생시 피드백 부탁드려요. :)
  • ?
    Liz 2017.06.11 21:26 Files첨부 (1)

    EME에러어.PNG

     

    이렇게 만들었는데 자꾸 78번째 줄이 에러가 나네요.

    혹시나 해서 새 게임 만들기나 이전에 만들어 본 예제본에다가 넣어봤더니만 똑같은 에러가 나요.

    어떻게 해야 하나요?

  • profile
    습작 2017.06.12 00:25
    사용하신 스크립트도 같이 올려주세요.
  • ?
    Liz 2017.06.12 16:25
    class Window_MenuStatus < Window_Selectable
    def initialize(x, y)
    if $scene.is_a?(Scene_Menu)
    super(x, y, 392, 126)
    else
    super(x, y, 392, Graphics.height)
    end
    @pending_index = -1
    refresh
    self.active = false
    self.index = -1
    end
    def refresh
    self.contents.clear
    @item_max = 1
    for i in 0...@item_max
    break if i >= $game_party.members.size
    x = 0
    y = i * contents.height / @item_max
    draw_actor_face($game_party.members[i], x + 264, y + 0)
    draw_actor_name($game_party.members[i], x + 8, y + 8)
    draw_actor_hp($game_party.members[i], x + 8, y + 64, 240)
    end
    end
    def draw_actor_name(actor, x, y)
    self.contents.font.color = hp_color(actor)
    self.contents.draw_text(x, y, 240, 40, actor.name)
    end
    def draw_face(face_name, face_index, x, y, size = 96)
    bitmap = Cache.face(face_name)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = face_index % 4 * 96 + (96 - 92) / 2
    rect.y = face_index / 4 * 96 + (96 - 92) / 2
    rect.width = 92
    rect.height = 92
    self.contents.blt(x, y, bitmap, rect)
    bitmap.dispose
    end
    def update_cursor
    if @index < 0
    self.cursor_rect.empty
    elsif @index < @item_max
    x = 0
    y = @index * contents.height / @item_max
    self.cursor_rect.set(x, y, contents.width, contents.height/@item_max)
    elsif @index >= 100
    x = 0
    y = (@index - 100) * contents.height/@item_max
    self.cursor_rect.set(x, y, contents.width, contents.height/@item_max)
    else
    self.cursor_rect.set(0, 0, contents.width, contents.height)
    end
    end
    end
    class Window_MenuCommand < Window_Command
    def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 0)
    end
    end
    class Scene_Menu < Scene_Base
    def start
    super
    create_menu_background
    create_command_window
    @status_window = Window_MenuStatus.new(0, 288)
    end
    def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @status_window.update
    if @command_window.active
    update_command_selection
    elsif @status_window.active
    update_actor_selection
    end
    end
    def create_command_window
    @command_window = Window_MenuCommand.new(152, [Vocab::item,Vocab::equip,Vocab::game_end])
    @command_window.x = 392
    @command_window.y = 288
    @command_window.height = 128
    @command_window.index = @menu_index
    if $game_party.members.size == 0
    @command_window.draw_item(0, false)
    @command_window.draw_item(1, false)
    end
    if $game_system.save_disabled
    @command_window.draw_item(2, false)
    end
    end
    def update_command_selection
    if Input.trigger?(Input::B)
    Sound.play_cancel
    $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
    if $game_party.members.size == 0 and [0,1].include?(@command_window.index)
    Sound.play_buzzer
    return
    elsif $game_system.save_disabled and @command_window.index == 2
    Sound.play_buzzer
    return
    end
    Sound.play_decision
    case @command_window.index
    when 0
    $scene = Scene_Item.new
    when 1
    start_actor_selection
    when 2
    $scene = Scene_File.new(true, false, false)
    when 3
    $scene = Scene_End.new
    end
    end
    end
    def update_actor_selection
    if Input.trigger?(Input::B)
    Sound.play_cancel
    end_actor_selection
    elsif Input.trigger?(Input::C)
    $game_party.last_actor_index = @status_window.index
    Sound.play_decision
    case @command_window.index
    when 1
    $scene = Scene_Equip.new(@status_window.index)
    end
    end
    end
    end
    class Scene_Item < Scene_Base
    def return_scene
    $scene = Scene_Menu.new(0)
    end
    end
    class Scene_Equip < Scene_Base
    def return_scene
    $scene = Scene_Menu.new(1)
    end
    end
    class Scene_End < Scene_Base
    def return_scene
    $scene = Scene_Menu.new(3)
    end
    end
    class Scene_File < Scene_Base
    def return_scene
    if @from_title
    $scene = Scene_Title.new
    elsif @from_event
    $scene = Scene_Map.new
    else
    $scene = Scene_Menu.new(2)
    end
    end
    end
  • profile
    습작 2017.06.12 20:36
    한차례 버그픽스를 진행했습니다. 오래만에 다시 꺼내서 작업하다보니 제가 놓친 부분이 있을 수도 있습니다. VX는 이용자가 적다보니 이런 피드백도 적어 이런게 이제야 발견되네요. 다시 문제 생기거든 말씀해주세요. 바로 다시 작업하겠습니다.
  • ?
    종이학의 2018.12.07 17:53
    티스토리들어가서 다운로드할려는데 없네요 왜그러죠?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
44 메뉴 KGC - 커스텀 메뉴 커멘드 (번역) 1 듀란테 2015.07.27 1077
» 메뉴 Etude87's Menu Editor for VX 25 습작 2015.01.14 1461
42 메뉴 Etude87_Ace_Style_Formation_Change ver.1.01 습작 2014.10.05 757
41 메뉴 MOG - Scroll Bar for VX file 습작 2014.07.06 1114
40 메뉴 기본메인 메뉴 아이콘 추가 10 아방스 2010.12.11 4573
39 메뉴 kgc 파라미터 배분 09/07/25 13 시트르산 2010.09.24 2327
38 메뉴 자작 메뉴 스크립트 for VX(L's Simple Custom Menu VX ver.) 5 Alkaid 2010.09.02 4705
37 메뉴 스타일 크로노 트리거 메뉴 31 file 콩밥 2010.07.19 4536
36 메뉴 매우 간단명료한 메뉴. 32 file 비극ㆍ 2010.04.23 6618
35 메뉴 Final Fantasy VII Menu System 8 비극ㆍ 2010.04.19 3506
34 메뉴 몬스터도감(유즈미짱님의엘카르디아같은종류) 1 작은샛별 2010.03.07 4199
33 메뉴 윈도우 색변경 스크립트 7 file 비극ㆍ 2010.03.01 2598
32 메뉴 전투 결과 상세 표시 스크립트 (한글화) 15 file 강진수 2010.02.26 3344
31 메뉴 YERD - 커먼 이벤트 메뉴 4 file 훈덕 2009.11.08 3849
30 메뉴 YERD - 시스템 옵션 5 file 훈덕 2009.11.08 3135
29 메뉴 확장 스테이터스 화면 - KGC 23 file 카르와푸딩의아틀리에 2009.08.19 5057
28 메뉴 전투결과 상세 표시 스크립트 24 file 카르와푸딩의아틀리에 2009.07.07 4142
27 메뉴 전투 결과 팝업 스크립트 12 file 카르와푸딩의아틀리에 2009.06.30 3381
26 메뉴 몬스터도감 심플버전! 52 file 카르와푸딩의아틀리에 2009.06.30 6906
25 메뉴 전투승리시 아이템 경험치팝업창 스크립트 18 file 카르와푸딩의아틀리에 2009.06.23 3760
Board Pagination Prev 1 2 3 Next
/ 3