질문과 답변

Extra Form
기존 계산식이 마음에 안 들어서 이 부분을 고치고 싶은데 문제는 관계도입니다. 
atk, spi 이 두개는 기존에 스킬마다 각각 설정이 가능하지만, 
다양성을 주기 위해 def, agi 또한 각각의 고유 관계도를 갖고 피해량에 관여하도록 만들고 싶습니다. 

def, agi 등을 스킬 노트를 통해서 스킬마다 obj.def_f / obj.agi_f 값을 갖도록 만드는 스크립트를 만들려면 어떻게 해야 할까요?
<deff 100>, <agif 100> 등의 태그를 노트에 삽입시 obj.def_f 또는 obj.agi_f 값이 100이 되는 등으로 스크립트를 만들 수 없을까요?
저 값들을 스킬마다 정할 수 있으면, Game_Battler에서   # ● 스킬 또는 아이템에 의한 데미지 계산 항목을 고쳐서
계산식을 만들어낼 수 있을 거 같거든요.

물론 스크립트 자료실 가면 온갖 방식이 가능한 녀석들이 다수 있지만, 해석도 쉽지 않고
원하는 방식의 데미지 공식을 적용시키기엔 너무 복잡하고 어렵더군요...

정리하자면... 질문 내용은

 1) 스킬마다 obj.def_f, obj.agi_f값을 갖도록 하는 방법
 2) 위의 두 값을 스킬의 노트박스에 <deff 100>, <agif 100> 등을 삽입하여 정할 수 있도록 하는 방법

이렇게 되겠네요. 스크립트 잘 다루시는 분들의 도움 정말 간절히 바랍니다.
Comment '2'
  • ?
    아이미르 2012.01.28 19:55

     

    #==============================================================================
    # ■ 스킬 방어관계도, 민첩관계도 설정
    #==============================================================================
    module RPG
      class UsableItem < BaseItem
        attr_accessor :def_f
        attr_accessor :agi_f
        def def_f
          return @note =~ /<def_f=(\d+)\s*>/  ? $1.to_i : 0
        end
        def agi_f
          return @note =~ /<agi_f=(\d+)\s*>/ ? $1.to_i : 0
        end
      end
    end
    #==============================================================================
    # ■ Game_Battler
    #------------------------------------------------------------------------------
    # 버틀러를 취급하는 클래스입니다. 이 클래스는 Game_Actor 클래스와 Game_Enemy
    # 클래스의 슈퍼 클래스로서 사용됩니다.
    #==============================================================================

    class Game_Battler
      #--------------------------------------------------------------------------
      # ● 스킬 또는 아이템에 의한 데미지 계산
      #     user : 스킬 또는 아이템의 사용자
      #     obj  : 스킬 또는 아이템
      #    결과는 @hp_damage 또는 @mp_damage 에 대입한다.
      #--------------------------------------------------------------------------
      def make_obj_damage_value(user, obj)
        damage = obj.base_damage                        # 기본 데미지를 취득
        if damage > 0                                   # 데미지가 정의 수
          damage += user.atk * 4 * obj.atk_f / 100      # 타격 관계도: 사용자
          damage += user.spi * 2 * obj.spi_f / 100      # 정신 관계도: 사용자  
          damage += user.def * 4 * obj.def_f / 100     # 방어 관계도: 사용자
          damage += user.agi * 2 * obj.agi_f / 100      # 민첩 관계도: 사용자
          unless obj.ignore_defense                     # 방어력 무시 이외
            damage -= self.def * 2 * obj.atk_f / 100    # 타격 관계도: 대상자
            damage -= self.spi * 1 * obj.spi_f / 100    # 정신 관계도: 대상자
          end
          damage = 0 if damage < 0                      # 마이너스라면 0 에
        elsif damage < 0                                # 데미지가 부의 수
          damage -= user.atk * 4 * obj.atk_f / 100      # 타격 관계도: 사용자
          damage -= user.spi * 2 * obj.spi_f / 100      # 정신 관계도: 사용자
        end
        damage *= elements_max_rate(obj.element_set)    # 속성 수정
        damage /= 100
        damage = apply_variance(damage, obj.variance)   # 분산
        damage = apply_guard(damage)                    # 방어 수정
        if obj.damage_to_mp 
          @mp_damage = damage                           # MP 에 데미지
        else
          @hp_damage = damage                           # HP 에 데미지
        end
      end
     
    end

     

    -----------------------------------------------------------------------------------------

    대충 한번 해봤습니다. 사실 필요한건 윗부분일 겁니다. 아랫부분은 한번 만들어본 거에 불과합니다.

     

    스킬의 메모란에 <def_f=n>이라고 쓰면 n만큼 방어 관계도로 인식합니다.

    마찬가지로 <agi_f=n>이라고 쓰면 n만큼 민첩 관계도를 인식합니다.

     

    혹시 전투관련 스크립트와 혼용하면 오류가 날 가능성이 있습니다.

    그 점은 아래쪽의 전투 관련 부분을 주석처리하고 전투관련 스크립트에서 데미지 공식 부분을 수정하면 될겁니다.

  • ?
    mits 2012.01.29 08:08

    아이미르님 친절하고 상세한 답변에 감사드립니다.

    제가 의도한 대로 정상적으로 데미지 공식이 작동하여 정말 기쁩니다.


    도움 주신 점 다시금 감사드려요. 금일 좋은 일 가득 마주하시길 바랍니다.



List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12398
스크립트 사용 RMVXA 턴제전투 끝나고 나오는 이벤트에서 SE 오류 유리컵 2020.03.30 40
스크립트 사용 RMMV 턴별로 데미지가 늘어나는 스킬을 만들고 싶습니다. 2 PPPL 2020.04.19 69
스크립트 사용 RMMV 데이터베이스에서 '적들' 에 해당하는 스크립트는 무엇인가요? PPPL 2020.04.23 37
스크립트 사용 RMMV 스크립트로 랜덤하게 아이템을 습득하게 만들 수 있을까요? 1 PPPL 2020.04.27 107
스크립트 사용 RMXP 전투에 들어가도 맵브금이 그대로 흘러가는 스크립트 없을까요? 꼬맹E 2020.05.03 81
스크립트 사용 RMVXA 혹시 이런 오류는 어떻게 수정하는지 알 수 있을까요? file hoshigami 2020.05.07 652
스크립트 사용 RMVXA vx ace QTE 1 mkccip 2020.05.19 131
스크립트 사용 RMXP 메세지 스크립트 관련하여 질문 드립니다. 2 file 빈군 2020.05.18 155
스크립트 사용 RMVXA 움직이는 배경 1 Wolfclaw 2020.05.20 103
스크립트 사용 RMVXA 랜덤으로 타이틀 화면이 바뀌는 vxace 스크립트 있나요? 싸코 2020.06.28 137
스크립트 사용 RMVXA 전투중 적이 누구를 노리는지 미리 알수 있는 스크립트가 있을까요 겜만들고싶다앙 2021.04.10 27
스크립트 사용 RMMV 이벤트 이동 스크립트 퐁지 2020.07.11 59
스크립트 사용 RMVXA 4개 이상 선택지 스크립트 오류 3 file 무해 2021.12.28 88
스크립트 사용 RMVXA HUD 체력, 마나 바의 숫자가 보이지 않도록 스크립트 수정을 하고 싶습니다. DIEM 2020.10.03 100
스크립트 사용 RMVXA 외국 게임에 적용된 스크립트를 복사하는데 오류가 생깁니다. 3 file 592 2020.10.08 138
스크립트 사용 RMVXA 이벤트 작성 중 스크립트 사용에 칸이 모자랍니다. 2 file 592 2020.10.21 153
스크립트 사용 RMXP 알만툴 xp 후레쉬 스크립트 소커 2020.10.28 123
스크립트 사용 RMMV RM 폰트변경 플러그인사용법을 잘 모르겠습니다. 회늑 2020.12.12 91
스크립트 사용 RMVX 전투에서 몹을 죽였는데 사라지지 않네요 file 즈네 2021.08.02 55
스크립트 사용 RMMV YEP셀프변수 플러그인은 구매할수밖에 없나요? 7 카르네스아리엔 2021.01.07 282
Board Pagination Prev 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 83 Next
/ 83