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 메뉴 전투 결과 상세 표시 스크립트 (한글화) 15 file 강진수 2010.02.26 3344
316 키입력 커맨드 입력 스킬 시스템 17 file 양념통닼 2008.05.29 3345
315 MOG 스토리 씬 22 file RPGbooster 2008.10.08 3345
314 메뉴 헬프 윈도우 중앙표시 스크립트 11 file 양념통닼 2008.06.10 3348
313 전투 GTBS_VX 1.0 택틱컬rpg 14 file RPGbooster 2008.10.08 3352
312 타이틀/게임오버 [NO.0 간단 스크립트] 타이틀에 제작자 정보 올려보기 14 file NO.0 2011.01.30 3362
311 메시지 NMS 3.0 Beta 주석 번역본(한글) 4 인천항 2010.01.13 3369
310 원경 원경(파노라마) 바꾸기 9 file 허걱 2010.05.28 3369
309 스킬 Yanfly Engine RD - Custom Dmg Formulas (커스텀 데미지, 관계도) 6 file communnn 2011.10.25 3377
308 메뉴 전투 결과 팝업 스크립트 12 file 카르와푸딩의아틀리에 2009.06.30 3381
307 전투 커먼이벤트 컷인 스크립트 15 허걱 2009.08.23 3399
306 스킬 Yanfly Engine RD - Display Skill Query (스킬 상세 정보) 8 file communnn 2011.10.24 3405
305 그래픽 먼가이상한데... 밤낮 변환 vx 44 작은악마 2008.03.18 3414
304 웨이포인트 9 file RPGbooster 2008.10.08 3415
303 전투 방패가없어? 그럼 방어못하게하는 스크립트. 16 file 할렘 2009.02.07 3425
302 전투 VX SRPG 스크립트를 살짝 손대봤습니다. 13 아이미르 2011.03.31 3428
301 중복이지만...제가 올린 단체 액알 스크립트에서 오류가 너무 많이 나서...개인 액알로 다시 올려드리는 겁니다. 15 21stcentury 2008.10.12 3429
300 그래픽 토마스 에디슨(파티클 엔진 비슷) 9 file 비극ㆍ 2010.04.19 3432
299 아이템 돈 아이템 장비를저장 11 file RPGbooster 2008.10.11 3452
298 퀘스트 Omegas7's Quest System 3.0 퀘스트 스크립트 5 리프네버 2010.01.09 3452
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