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
    버전업 되었습니다. 추가적인 분제 발생시 피드백 부탁드려요. :)
  • ?
    에피스 2017.06.11 21:26 Files첨부 (1)

    EME에러어.PNG

     

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

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

    어떻게 해야 하나요?

  • profile
    습작 2017.06.12 00:25
    사용하신 스크립트도 같이 올려주세요.
  • ?
    에피스 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
317 변수/스위치 다른 이벤트 셀프스위치 조작 - xp, vx 사용가능 3 허걱 2009.07.18 2388
316 다운로드 링크로 가세요.(스크린 샷 올려놨음) 5 Man... 2008.10.27 1618
315 다음 레벨까지의 경험치 강제조정 13 정의로운녀석 2008.07.24 3273
314 이동 및 탈것 달리면 스태미너가 감소하는 스크립트 18 file 카르와푸딩의아틀리에 2009.06.30 2869
313 이동 및 탈것 달릴때 그래픽을 바꿔주는 스크립트 12 file 아방스 2008.01.24 4098
312 키입력 답을 입력하는 텍스트박스 스크립트!! 21 file 좀비사냥꾼 2009.03.29 4206
311 이동 및 탈것 대각선 이동 스크립트 17 아방스 2009.05.02 3677
310 파티 대규모파티 KGC스크립 50 file RPGbooster 2008.10.08 6012
309 전투 대미지 MP전환 스테이트 : 수정 => 마나쉴드 7 Evangelista 2009.08.29 2384
308 전투 대미지%MP흡수 스크립트 4 Evangelista 2009.08.31 2279
307 이동 및 탈것 대쉬금지의 변경 1 rukan 2009.07.02 1449
306 메시지 대화창효과 8 078656577er 2009.10.20 5972
305 기타 던전에 적정 레벨이 어떤건지 스크린에 표시해주는 스크립트! 5 file 루시페르 2009.06.06 2907
304 기타 데이터베이스 자체 제한 해체 스크립트 [Database Limit Breaker] 13 file 할렘 2009.02.07 3562
303 아이템 돈 아이템 장비를저장 11 file RPGbooster 2008.10.11 3452
302 전투 돌아가는 전투 메뉴 시스템 33 아방스 2008.08.29 5085
301 이동 및 탈것 동료가 따라다니게 하는 스크립트 59 file 아방스 2008.01.23 6512
300 액터 동료가 따라다니게 하는 스크립트 (Woratana's Caterpillar System) 5 MinaAubert 2012.09.13 3012
299 영상 동영상 재생 스크립트.-Game_Film II-(테스트) 7 할렘 2009.02.22 3741
298 아이템 드롭 아이템 확장 6 신규회원 2012.02.24 2977
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 32 Next
/ 32