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 ~ )
* 개인 블로그 : http://eternalworld.tistory.com
* 리뷰 블로그 : http://etude87.tistory.com
* 팀 블로그 : http://teamel.tistory.com
* 작업물 영상 : https://www.youtube.com/user/juillet29/videos
* RPG Maker VX 메뉴 편집기 : http://eternalworld.tistory.com/426
* RPG Maker Ace 메뉴 편집기 : http://eternalworld.tistory.com/417
* RPG Maker 시리즈 구매 가이드 : http://etude87.tistory.com/69
* RPG Maker DLC 라이선스 정리 : http://etude87.tistory.com/126
* RPG Maker RTP 정리 : http://etude87.tistory.com/161
* RPG Maker 시리즈 한글패치 정리 : http://etude87.tistory.com/174
* 쯔꾸르 시리즈 이용 규약 : http://etude87.tistory.com/171

Comment '24'
  • ?
    소금 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는 이용자가 적다보니 이런 피드백도 적어 이런게 이제야 발견되네요. 다시 문제 생기거든 말씀해주세요. 바로 다시 작업하겠습니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 4646
640 아이템 현재있는 파티원 선택 레벨업 아이템 만들기 1 file 싸패 2016.06.06 407
639 저장 세이브 파일 개수 16개로 늘리기 (기본 세이브 엔진용) 1 file 家和萬事成 2015.09.07 511
638 스킬 [RPG VX] 턴알 스킬 쿨타임 스크립트! (잘돌아감) 4 듀란테 2015.08.18 782
637 메뉴 KGC - 커스텀 메뉴 커멘드 (번역) 1 듀란테 2015.07.27 733
» 메뉴 Etude87's Menu Editor for VX 24 습작 2015.01.14 959
635 기타 Gamepad Extender VX 습작 2015.01.02 424
634 버그픽스 DerVVulfman's Tileset Reader VX Bug Fix 습작 2014.11.16 507
633 장비 방어구 착용시 최대HP, MP증가 스크립트(턴알) 1 file 기관차 2014.11.06 922
632 이름입력 헤르코스님의 한글 이름 입력 영어 및 숫자 입력 가능 개변 자료 3 리로르드 2014.10.06 1033
631 메뉴 Etude87_Ace_Style_Formation_Change ver.1.01 습작 2014.10.05 535
630 키입력 해외 제작자 He Who Jets님의 마우스 스크립트(mouse system) 1 file 보자기군 2014.09.30 973
629 메시지 Etude87 Dialogue History Scene file 습작 2014.07.07 825
628 메뉴 MOG - Scroll Bar for VX file 습작 2014.07.06 886
627 이동 및 탈것 이동 기능 파워업 (장애물 등을 피하는 이동방식) 8 file 파노 2014.04.27 1434
626 타이틀/게임오버 Title Skip System : 타이틀 스킵 file 허걱 2014.03.19 1240
625 버그픽스 Graphical Object Global Reference VX by Mithran Alkaid 2014.03.03 810
624 기타 장애물을 피하고 다가오게 하는 스크립트 4 file 박력남 2014.02.25 1608
623 버그픽스 애니메이션 표시 위치 수정 (Fix Animation Position) 2 file AltusZeon 2014.02.12 1029
622 타이틀/게임오버 VX로 변환된 랜덤 타이틀 스크립트에 랜덤 타이틀 BGM, 랜덤 게임오버 추가 1 베르세모스 2013.12.22 1106
621 전투 [RPG VX]기술에 쿨타임을 부여하는 스크립트 3 스리아씨 2013.12.05 2045
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32