조회 수 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 10332 0
공지 인디사이드 활동 규정.(ver.20160119) 192 천무 2015.02.16 12404 1
21760 티마베의 치와도라 제작 빌리의저택 死 실황이 시작되엇습니다! [BJ티마베] 2016.01.31 551 0
21759 게임 제작 자료실 질문이에요~! 3 그린에메랄드 2016.01.31 1506 0
21758 오랜만에 근황 전합니다! 12 수퍼말이오 2016.01.31 3706 0
21757 역대급 경기봤네요 6 파치리스 2016.01.31 3643 0
21756 아오오니 없어졌나요 2 슈걸 2016.01.30 1816 0
21755 안녕하십니까? 4 RPG란무엇인가? 2016.01.30 1500 0
21754 아이템 착용시 직업 변경 1 영뽕 2016.01.30 1491 0
» 스크립트 고수님들! 저좀 도와주십시오! 2 file 누런덧니 2016.01.30 1416 0
21752 쿠로선배와검은저택방황 6 (ㅎㅇㅎ) 2016.01.29 5424 0
21751 트레이싱 연습 5 file 하앵 2016.01.29 1662 0
21750 전과 후.JPG 2 file 누런덧니 2016.01.29 1547 0
21749 BJ티마베의 공포게임 더 크루키드맨 방송이 시작되엇습니다 보러와주세요! [BJ티마베] 2016.01.29 402 0
21748 창조도시&네코데브 회원님들께 알려드리는 희소식 3 ㅌㄹlove 2016.01.29 3747 2
21747 ㅠ.ㅠ.ㅠ.ㅠ.ㅠ.ㅠ.ㅠ 드디어 금요일이네욤...........................ㅠ.ㅠ.ㅠ 1 발묵 2016.01.29 1560 0
21746 네코툴에서 탁자 책상 상자 겹침현상은 언제고쳐져요?? 2 왕똥돼지 2016.01.29 1562 0
21745 재미로 해보는 설문! 공포 쯔꾸르 VS 정통 RPG 6 이게뭔소리 2016.01.29 3667 0
21744 와아 오랜만이에요:D 4 대너리스 2016.01.29 1572 0
21743 음.. 쯔꾸르 게임을 만들려는데.. 2 원중 2016.01.29 1634 0
21742 올림픽 축구 결승전 3 HUING 2016.01.29 1569 0
21741 우수작에 선정되는 기준. 1 디노스 2016.01.29 1594 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(김원배) | 사신지(김병국)