조회 수 1416 추천 수 0 댓글 2
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1.png

 

장비 부분에서 이렇게 달랑 5개(액터이름 레벨 공격력 타격 저항력 마법 저항력)말고 나머지 지능이나 민첩성이나 아무튼 그런것들도 보여줬으면 좋겠는데요... 어떻게 해야하는지... 

Who's 누런덧니

profile

평범한 쯔꾸르 제작자 누런덧니입니다.

국방부 퀘스트 중입니다.(2018.09.11 ~)


(네이버 블로그)

https://blog.naver.com/kslog053


(병맛 세계)

병원 탈출 (2017/01/03)

Over Rigs! (2017/05/01)

심영의 병원탈출 (2017/07/20)

4딸라! (2018/01/11)


(지식 세계)

게임 BGM 퀴즈! (2017/11/28)


(치킨 냠냠 세계)

치킨이닭! (2017/12/29)


(팬작 세계)

희망! 희망! 희망! (2018/05/10)


(좀비 바이러스로 뒤덮힌 세계)

길 (2018/06/30)

몇 분 전에... (2019/01/16)


(빛과 어둠이 경계하는 세계)

Ep.0 조용한 그녀와 함께 (2018/09/05)

?
  • profile
    천무 2016.01.30 20:14 Files첨부 (1)

    좀 복잡할겁니다. 그냥 붙여넣기 하지마시고 이해하면서 살펴보세요.

     

    우선 스크립트중 Scene_Equip 을 수정합니다.

    제가 수정한곳은 빨간색 표기합니다.

     

    #==============================================================================
    # ■ Scene_Equip
    #------------------------------------------------------------------------------
    #  장비 화면의 처리를 실시하는 클래스입니다.
    #==============================================================================

    class Scene_Equip
      #--------------------------------------------------------------------------
      # ● 오브젝트 초기화
      #     actor_index : 액터 인덱스
      #     equip_index : 장비 인덱스
      #--------------------------------------------------------------------------
      def initialize(actor_index = 0, equip_index = 0)
        @actor_index = actor_index
        @equip_index = equip_index
      end
      #--------------------------------------------------------------------------
      # ● 메인 처리
      #--------------------------------------------------------------------------
      def main
        # 액터를 취득
        @actor = $game_party.actors[@actor_index]
        # 윈도우를 작성
        @help_window = Window_Help.new
        @left_window = Window_EquipLeft.new(@actor)
        @right_window = Window_EquipRight.new(@actor)
        @item_window1 = Window_EquipItem.new(@actor, 0)
        @item_window2 = Window_EquipItem.new(@actor, 1)
        @item_window3 = Window_EquipItem.new(@actor, 2)
        @item_window4 = Window_EquipItem.new(@actor, 3)
        @item_window5 = Window_EquipItem.new(@actor, 4)
        # 헬프 윈도우를 관련지어
        @right_window.help_window = @help_window
        @item_window1.help_window = @help_window
        @item_window2.help_window = @help_window
        @item_window3.help_window = @help_window
        @item_window4.help_window = @help_window
        @item_window5.help_window = @help_window
        # 커서 위치를 설정
        @right_window.index = @equip_index
        refresh
        # 트란지션 실행
        Graphics.transition
        # 메인 루프
        loop do
          # 게임 화면을 갱신
          Graphics.update
          # 입력 정보를 갱신
          Input.update
          # 프레임 갱신
          update
          # 화면이 바뀌면 루프를 중단
          if $scene != self
            break
          end
        end
        # 트란지션 준비
        Graphics.freeze
        # 윈도우를 해방
        @help_window.dispose
        @left_window.dispose
        @right_window.dispose
        @item_window1.dispose
        @item_window2.dispose
        @item_window3.dispose
        @item_window4.dispose
        @item_window5.dispose
      end
      #--------------------------------------------------------------------------
      # ● 리프레쉬
      #--------------------------------------------------------------------------
      def refresh
        # 아이템 윈도우의 가시 상태 설정
        @item_window1.visible = (@right_window.index == 0)
        @item_window2.visible = (@right_window.index == 1)
        @item_window3.visible = (@right_window.index == 2)
        @item_window4.visible = (@right_window.index == 3)
        @item_window5.visible = (@right_window.index == 4)
        # 현재 장비중의 아이템을 취득
        item1 = @right_window.item
        # 현재의 아이템 윈도우를 @item_window 로 설정
        case @right_window.index
        when 0
          @item_window = @item_window1
        when 1
          @item_window = @item_window2
        when 2
          @item_window = @item_window3
        when 3
          @item_window = @item_window4
        when 4
          @item_window = @item_window5
        end
        # 라이트 윈도우가 액티브의 경우
        if @right_window.active
          # 장비 변경 후의 파라미터를 소거
          @left_window.set_new_parameters(nil, nil, nil, nil)
        end
        # 아이템 윈도우가 액티브의 경우
        if @item_window.active
          # 현재 선택중의 아이템을 취득
          item2 = @item_window.item
          # 장비를 변경
          last_hp = @actor.hp
          last_sp = @actor.sp
          @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
          # 장비 변경 후의 파라미터를 취득
          new_atk = @actor.atk
          new_pdef = @actor.pdef
          new_mdef = @actor.mdef
          new_agi = @actor.agi      #이줄이 추가됨. 이것은 민첩에관한 장비변경후 파라미터 취득과정입니다.
          # 장비를 되돌린다
          @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
          @actor.hp = last_hp
          @actor.sp = last_sp
          # 레프트 윈도우에 묘화
          @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_agi) #마찬가지 위에서 민첩이하나더생겼으니추가
        end
      end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신
      #--------------------------------------------------------------------------
      def update
        # 윈도우를 갱신
        @left_window.update
        @right_window.update
        @item_window.update
        refresh
        # 라이트 윈도우가 액티브의 경우: update_right 를 부른다
        if @right_window.active
          update_right
          return
        end
        # 아이템 윈도우가 액티브의 경우: update_item 를 부른다
        if @item_window.active
          update_item
          return
        end
      end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신 (라이트 윈도우가 액티브의 경우)
      #--------------------------------------------------------------------------
      def update_right
        # B 버튼이 밀렸을 경우
        if Input.trigger?(Input::B)
          # 캔슬 SE 를 연주
          $game_system.se_play($data_system.cancel_se)
          # 메뉴 화면으로 전환해
          $scene = Scene_Menu.new(2)
          return
        end
        # C 버튼이 밀렸을 경우
        if Input.trigger?(Input::C)
          # 장비 고정의 경우
          if @actor.equip_fix?(@right_window.index)
            # 버저 SE 를 연주
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          # 결정 SE 를 연주
          $game_system.se_play($data_system.decision_se)
          # 아이템 윈도우를 액티브화
          @right_window.active = false
          @item_window.active = true
          @item_window.index = 0
          return
        end
        # R 버튼이 밀렸을 경우
        if Input.trigger?(Input::R)
          # 커서 SE 를 연주
          $game_system.se_play($data_system.cursor_se)
          # 다음의 액터에게
          @actor_index += 1
          @actor_index %= $game_party.actors.size
          # 다른 장비 화면으로 전환해
          $scene = Scene_Equip.new(@actor_index, @right_window.index)
          return
        end
        # L 버튼이 밀렸을 경우
        if Input.trigger?(Input::L)
          # 커서 SE 를 연주
          $game_system.se_play($data_system.cursor_se)
          # 전의 액터에게
          @actor_index += $game_party.actors.size - 1
          @actor_index %= $game_party.actors.size
          # 다른 장비 화면으로 전환해
          $scene = Scene_Equip.new(@actor_index, @right_window.index)
          return
        end
      end
      #--------------------------------------------------------------------------
      # ● 프레임 갱신 (아이템 윈도우가 액티브의 경우)
      #--------------------------------------------------------------------------
      def update_item
        # B 버튼이 밀렸을 경우
        if Input.trigger?(Input::B)
          # 캔슬 SE 를 연주
          $game_system.se_play($data_system.cancel_se)
          # 라이트 윈도우를 액티브화
          @right_window.active = true
          @item_window.active = false
          @item_window.index = -1
          return
        end
        # C 버튼이 밀렸을 경우
        if Input.trigger?(Input::C)
          # 장비 SE 를 연주
          $game_system.se_play($data_system.equip_se)
          # 아이템 윈도우로 현재 선택되고 있는 데이터를 취득
          item = @item_window.item
          # 장비를 변경
          @actor.equip(@right_window.index, item == nil ? 0 : item.id)
          # 라이트 윈도우를 액티브화
          @right_window.active = true
          @item_window.active = false
          @item_window.index = -1
          # 라이트 윈도우, 아이템 윈도우의 내용을 재작성
          @right_window.refresh
          @item_window.refresh
          return
        end
      end
    end
     

     

     

     

    자 그리고 다음으로. Window_EquipLeft 를 수정합니다.

     

     

    #==============================================================================
    # ■ Window_EquipLeft
    #------------------------------------------------------------------------------
    #  장비 화면에서, 액터의 파라미터 변화를 표시하는 윈도우입니다.
    #==============================================================================

    class Window_EquipLeft < Window_Base
      #--------------------------------------------------------------------------
      # ● 오브젝트 초기화
      #     actor : 액터
      #--------------------------------------------------------------------------
      def initialize(actor)
        super(0, 64, 272, 292)  #원래 192인데 292로 수정했습니다. 이건 창의 높이입니다. 글씨가 더 들어가려면 창높이가 높아져야되죠.
        self.contents = Bitmap.new(width - 32, height - 32)
        @actor = actor
        refresh
      end
      #--------------------------------------------------------------------------
      # ● 리프레쉬
      #--------------------------------------------------------------------------
      def refresh
        self.contents.clear
        draw_actor_name(@actor, 4, 0)
        draw_actor_level(@actor, 4, 32)
        draw_actor_parameter(@actor, 4, 64, 0)
        draw_actor_parameter(@actor, 4, 96, 1)
        draw_actor_parameter(@actor, 4, 128, 2)
        draw_actor_parameter(@actor, 4, 160, 5) # 민첩1줄 추가하는겁니다. 마지막에 숫자가 표기할스텟종류입니다. Game_Actor 에서 번호 몇번이 뭘 의미하는지 확인가능합니다.
        if @new_atk != nil
          self.contents.font.color = system_color
          self.contents.draw_text(160, 64, 40, 32, "→", 1)
          self.contents.font.color = normal_color
          self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
        end
        if @new_pdef != nil
          self.contents.font.color = system_color
          self.contents.draw_text(160, 96, 40, 32, "→", 1)
          self.contents.font.color = normal_color
          self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2)
        end
        if @new_mdef != nil
          self.contents.font.color = system_color
          self.contents.draw_text(160, 128, 40, 32, "→", 1)
          self.contents.font.color = normal_color
          self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2)
        end
        if @new_agi != nil
          self.contents.font.color = system_color
          self.contents.draw_text(160, 160, 40, 32, "→", 1)
          self.contents.font.color = normal_color
          self.contents.draw_text(200, 160, 36, 32, @new_agi.to_s, 2)
        end
       
      end
      #--------------------------------------------------------------------------
      # ● 장비 변경 후의 파라미터 설정
      #     new_atk  : 장비 변경 후의 공격력
      #     new_pdef : 장비 변경 후의 물리 방어
      #     new_mdef : 장비 변경 후의 마법 방어
      #     new_mindef : 장비 변경 후의 민첩
      #--------------------------------------------------------------------------
      def set_new_parameters(new_atk, new_pdef, new_mdef, new_agi)
        if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_agi != new_agi
          @new_atk = new_atk
          @new_pdef = new_pdef
          @new_mdef = new_mdef
          @new_agi = new_agi
          refresh
        end
      end
    end

     

    자 다음. Window_EquipRight 수정.

     

    #==============================================================================
    # ■ Window_EquipRight
    #------------------------------------------------------------------------------
    #  장비 화면에서, 액터가 현재 장비하고 있는 아이템을 표시하는 윈도우입니다.
    #==============================================================================

    class Window_EquipRight < Window_Selectable
      #--------------------------------------------------------------------------
      # ● 오브젝트 초기화
      #     actor : 액터
      #--------------------------------------------------------------------------
      def initialize(actor)
        super(272, 64, 368, 292) #좌측창을 넓혔으니 우측도 넓혀야죠. 
        self.contents = Bitmap.new(width - 32, height - 32)
        @actor = actor
        refresh
        self.index = 0
      end
      #--------------------------------------------------------------------------
      # ● 아이템의 취득
      #--------------------------------------------------------------------------
      def item
        return @data[self.index]
      end
      #--------------------------------------------------------------------------
      # ● 리프레쉬
      #--------------------------------------------------------------------------
      def refresh
        self.contents.clear
        @data = []
        @data.push($data_weapons[@actor.weapon_id])
        @data.push($data_armors[@actor.armor1_id])
        @data.push($data_armors[@actor.armor2_id])
        @data.push($data_armors[@actor.armor3_id])
        @data.push($data_armors[@actor.armor4_id])
        @item_max = @data.size
        self.contents.font.color = system_color
        self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
        self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
        self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
        self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
        self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
        draw_item_name(@data[0], 92, 32 * 0)
        draw_item_name(@data[1], 92, 32 * 1)
        draw_item_name(@data[2], 92, 32 * 2)
        draw_item_name(@data[3], 92, 32 * 3)
        draw_item_name(@data[4], 92, 32 * 4)
      end
      #--------------------------------------------------------------------------
      # ● 헬프 텍스트 갱신
      #--------------------------------------------------------------------------
      def update_help
        @help_window.set_text(self.item == nil ? "" : self.item.description)
      end
    end
     

     

     

    다음 Window_EquipItem 변경.

     

    #==============================================================================
    # ■ Window_EquipItem
    #------------------------------------------------------------------------------
    #  장비 화면에서, 장비 변경의 후보가 되는 아이템의 일람을 표시하는 윈도우입니다.
    #==============================================================================

    class Window_EquipItem < Window_Selectable
      #--------------------------------------------------------------------------
      # ● 오브젝트 초기화
      #     actor      : 액터
      #     equip_type : 장비 부위 (0~3)
      #--------------------------------------------------------------------------
      def initialize(actor, equip_type)
        super(0, 356, 640, 124)  #위 창들이 100씩 길어졌으니 아래 장비나오는창은 100이 줄어야되고, 또 창의 Y축도 100 늘어나야 합니다.
        @actor = actor
        @equip_type = equip_type
        @column_max = 2
        refresh
        self.active = false
        self.index = -1
      end
      #--------------------------------------------------------------------------
      # ● 아이템의 취득
      #--------------------------------------------------------------------------
      def item
        return @data[self.index]
      end
      #--------------------------------------------------------------------------
      # ● 리프레쉬
      #--------------------------------------------------------------------------
      def refresh
        if self.contents != nil
          self.contents.dispose
          self.contents = nil
        end
        @data = []
        # 장비 가능한 무기를 추가
        if @equip_type == 0
          weapon_set = $data_classes[@actor.class_id].weapon_set
          for i in 1...$data_weapons.size
            if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
              @data.push($data_weapons[i])
            end
          end
        end
        # 장비 가능한 방어구를 추가
        if @equip_type != 0
          armor_set = $data_classes[@actor.class_id].armor_set
          for i in 1...$data_armors.size
            if $game_party.armor_number(i) > 0 and armor_set.include?(i)
              if $data_armors[i].kind == @equip_type-1
                @data.push($data_armors[i])
              end
            end
          end
        end
        # 공백을 추가
        @data.push(nil)
        # 비트 맵을 작성해, 전항목을 묘화
        @item_max = @data.size
        self.contents = Bitmap.new(width - 32, row_max * 32)
        for i in 0...@item_max-1
          draw_item(i)
        end
      end
      #--------------------------------------------------------------------------
      # ● 항목의 묘화
      #     index : 항목 번호
      #--------------------------------------------------------------------------
      def draw_item(index)
        item = @data[index]
        x = 4 + index % 2 * (288 + 32)
        y = index / 2 * 32
        case item
        when RPG::Weapon
          number = $game_party.weapon_number(item.id)
        when RPG::Armor
          number = $game_party.armor_number(item.id)
        end
        bitmap = RPG::Cache.icon(item.icon_name)
        self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
        self.contents.font.color = normal_color
        self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
        self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
        self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
      end
      #--------------------------------------------------------------------------
      # ● 헬프 텍스트 갱신
      #--------------------------------------------------------------------------
      def update_help
        @help_window.set_text(self.item == nil ? "" : self.item.description)
      end
    end
     

     

     

     

     

    이렇게 수정하면 

    장비.png

     

    렇게 됩니다. 참쉽죠?

    ............

     

     

    제가 다시 강조하는 거지만 절대로 그냥 복붙하지마시고 직접 이걸 보고 하나씩 수정하고 추가해보셔야됩니다.

    왜냐면 저는 민첩 1개만 넣었지만. 몇개 더 넣을생각이시면 이걸 으용해서 다른것도 넣으셔야 하니까.

    스스로 알아야됩니다.

     

    이 스크립트 편집에서 중요한건. 창의크기, 창에표기되는 항목을 늘리기. (이 두가지 뿐입니다)

    좌표체계도 상당히 심플하고 일관적이기때문에 (X,Y,가로,세로) 창 조정하는건 익숙해지면 금방 합니다.

     

    이걸로 도움이 되셨기를 바라며 하하하 전이만!

     

  • profile
    누런덧니 2016.01.31 09:08
    감사합니다! 우선 해독 작업을 수행해보겠습니다!

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
공지 제2회 인디사이드 게임제작대회 출품작 리스트. 189 인디사이드운영자 2016.10.24 10342 0
공지 인디사이드 활동 규정.(ver.20160119) 192 천무 2015.02.16 12415 1
21760 어떻게하면 창도여성회원수를 늘릴수 있는가? 23 블랙포그 2009.01.17 1649 1
21759 도트 그리기 프로그램 edge 어디서 다운 받을수 있나요. 1 kusan 2016.02.10 1648 0
21758 게이섬탈출기 3 경수의모험졸라어렵 2013.09.19 1648 2
21757 동방마환상때문에 기분이 좋으면서도 안좋음 2 세포 2013.09.08 1647 0
21756 게임 어디서 만들어요? 1 다르G 2016.02.04 1646 0
21755 아오오니 특별에디션 2 진격의오니 2013.09.01 1646 0
21754 감동이나 치유물 게임 많이 없나요? 3 KookChan 2016.03.04 1645 0
21753 헐..여러분 나 3천 벌었음!!!! 3 발묵 2016.02.01 1645 0
21752 콩농장 재배포 시작!!! 6 굴너구리 2014.03.10 1645 0
21751 판타지세계 레어 유니크 전설템들공략 14 닉넴왜지어 2013.09.16 1645 2
21750 빌리오니겜좀올려주세요 1 화이트데이 2013.08.29 1645 0
21749 판타지세계 봉인석 공략좀요 3 오롱소 2013.09.23 1644 1
21748 형 어디있냐고 게임을찾지못하겟습니다 1 님누구신지 2016.02.12 1643 0
21747 오류해결 방법좀 1 (ㅎㅇㅎ) 2016.01.26 1641 0
21746 제가 공략을 분류의 맞지않게해가지고 다시 아오오니 공략올림 6 BGM해결방법 2013.09.24 1641 1
21745 던파 군바리 한팔로 사냥하기 K-Virus 2011.05.05 1641 0
21744 RPG Maker MV 확장 도구 개발 시작 11 file 러닝은빛 2016.09.13 1640 0
21743 쿠로오니공략 1 RPG게임세상 2013.09.27 1640 0
21742 저는이제지옥으로 갈랍니다 2 신입사원 김용사(씨) 2013.09.20 1640 1
21741 오니의탄생 완성 11 찌우님 2013.09.06 1640 0
Board Pagination Prev 1 ... 84 85 86 87 88 89 90 91 92 93 ... 1176 Next
/ 1176






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)