VX 스크립트

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 슬립 데미지 확장 - KGC_SlipDamageExtension ◆ VX ◆
#_/    ◇ Last update : 2008/03/29 ◇
#_/----------------------------------------------------------------------------
#_/  슬립 데미지의 설정을 상세화합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#스테이트의 메모란에,<スリップ [HP|MP] n[%] [,n]> (을)를 추가합니다.
#[HP|MP]의 부분은,HP 또는 MP 의 어느 쪽을 대상으로 하는지를 기술합니다.
#생략 했을 경우는 HP로 됩니다.

#1번째의n에는, 턴 마다의 회복·데미지량을 기술합니다.
#지정한 값이 정의 경우는 회복, 부의 경우는 데미지로서 다루어집니다.
#% (을)를 붙였을 경우는 최대 HP or MP 에 대한 비율이 됩니다.

#2번째의n에는, 맵상에서 1보 걸었을 때의 회복·데미지량을 기술합니다.
#이쪽은 % (을)를 붙일 수 없습니다.

#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================

module KGC
module SlipDamageExtension
  # ◆ 歩行ダメージ時のフラッシュ色
  DAMAGE_FLASH_COLOR    = Color.new(255, 0, 0, 64)
  # ◆ 歩行ダメージ時のフラッシュ時間 (フレーム)
  DAMAGE_FLASH_DURATION = 4
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["SlipDamageExtension"] = true

module KGC::SlipDamageExtension
  # 正規表現
  module Regexp
    # ステート
    module State
      # スリップダメージ
      SLIP_DAMAGE = /<(?:SLIP|スリップ)s*([HM]P)?s*([-+]?d+)([%%])?
        (?:s*,s*([-+]?d+))?>/ix
    end
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::State
#==============================================================================

class RPG::State
  #--------------------------------------------------------------------------
  # ○ 「スリップダメージ拡張」のキャッシュ生成
  #--------------------------------------------------------------------------
  def create_slip_damage_extension_cache
    @__slip_damage = false
    @__slip_damage_hp_rate  = 0
    @__slip_damage_hp_value = 0
    @__slip_damage_hp_map   = 0
    @__slip_damage_mp_rate  = 0
    @__slip_damage_mp_value = 0
    @__slip_damage_mp_map   = 0

    self.note.split(/[rn]+/).each { |line|
      case line
      when KGC::SlipDamageExtension::Regexp::State::SLIP_DAMAGE
        # スリップダメージ
        @__slip_damage = true
        analyse_slip_damage($~)
      end
    }

    # デフォルトのスリップダメージ量を設定
    unless @__slip_damage
      @__slip_damage_hp_rate = 10
      @__slip_damage_hp_map = 1
    end
  end
  #--------------------------------------------------------------------------
  # ○ スリップダメージの解析
  #--------------------------------------------------------------------------
  def analyse_slip_damage(match)
    # タイプ判定
    if match[1] == nil
      type = :hp
    else
      if match[1] =~ /MP/i
        type = :mp
      else
        type = :hp
      end
    end
    # ダメージ量取得
    n = match[2].to_i
    # 即値 or 割合判定
    is_rate = (match[3] != nil)
    # マップダメージ取得
    map_n = (match[4] != nil ? match[4].to_i : 0)

    # スリップダメージ値加算
    case type
    when :hp
      if is_rate
        @__slip_damage_hp_rate -= n
      else
        @__slip_damage_hp_value -= n
      end
      @__slip_damage_hp_map -= map_n
    when :mp
      if is_rate
        @__slip_damage_mp_rate -= n
      else
        @__slip_damage_mp_value -= n
      end
      @__slip_damage_mp_map -= map_n
    end
  end
  #--------------------------------------------------------------------------
  # ● スリップダメージ
  #--------------------------------------------------------------------------
  unless $@
    alias slip_damage_KGC_SlipDamageExtension slip_damage
  end
  def slip_damage
    create_slip_damage_extension_cache if @__slip_damage == nil
    return (@__slip_damage || slip_damage_KGC_SlipDamageExtension)
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (割合)
  #--------------------------------------------------------------------------
  def slip_damage_hp_rate
    create_slip_damage_extension_cache if @__slip_damage_hp_rate == nil
    return @__slip_damage_hp_rate
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (即値)
  #--------------------------------------------------------------------------
  def slip_damage_hp_value
    create_slip_damage_extension_cache if @__slip_damage_hp_value == nil
    return @__slip_damage_hp_value
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージ (マップ)
  #--------------------------------------------------------------------------
  def slip_damage_hp_map
    create_slip_damage_extension_cache if @__slip_damage_hp_map == nil
    return @__slip_damage_hp_map
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (割合)
  #--------------------------------------------------------------------------
  def slip_damage_mp_rate
    create_slip_damage_extension_cache if @__slip_damage_mp_rate == nil
    return @__slip_damage_mp_rate
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (即値)
  #--------------------------------------------------------------------------
  def slip_damage_mp_value
    create_slip_damage_extension_cache if @__slip_damage_mp_value == nil
    return @__slip_damage_mp_value
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージ (マップ)
  #--------------------------------------------------------------------------
  def slip_damage_mp_map
    create_slip_damage_extension_cache if @__slip_damage_mp_map == nil
    return @__slip_damage_mp_map
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect
    return unless slip_damage?

    slip_damage_effect_hp
    slip_damage_effect_mp
  end
  #--------------------------------------------------------------------------
  # ○ HP スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_hp
    return if dead?

    n = 0
    self.states.each { |state|
      next unless state.slip_damage
      n += self.maxhp * state.slip_damage_hp_rate / 100
      n += state.slip_damage_hp_value
    }
    return if n == 0

    @hp_damage = [n, self.hp - 1].min
    self.hp -= @hp_damage
  end
  #--------------------------------------------------------------------------
  # ○ MP スリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_mp
    return if dead?

    n = 0
    self.states.each { |state|
      next unless state.slip_damage
      n += self.maxmp * state.slip_damage_mp_rate / 100
      n += state.slip_damage_mp_value
    }
    return if n == 0

    @mp_damage = [n, self.mp - 1].min
    self.mp -= @mp_damage
  end
  #--------------------------------------------------------------------------
  # ○ 歩行時のスリップダメージの効果適用
  #--------------------------------------------------------------------------
  def slip_damage_effect_on_walk
    last_hp = self.hp
    last_mp = self.mp
    self.states.each { |state|
      next unless state.slip_damage
      self.hp -= state.slip_damage_hp_map
      self.mp -= state.slip_damage_mp_map
    }
    # ダメージを受けた場合はフラッシュ
    if self.hp < last_hp || self.mp < last_mp
      $game_map.screen.start_flash(
        KGC::SlipDamageExtension::DAMAGE_FLASH_COLOR,
        KGC::SlipDamageExtension::DAMAGE_FLASH_DURATION)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 歩行時の自動回復の実行
  #--------------------------------------------------------------------------
  def do_auto_recovery_on_walk
    return if dead?

    if auto_hp_recover
      self.hp += 1
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● プレイヤーが 1 歩動いたときの処理
  #--------------------------------------------------------------------------
  def on_player_walk
    for actor in members
      if actor.slip_damage?
        actor.slip_damage_effect_on_walk
      end
      actor.do_auto_recovery_on_walk
    end
  end
end


 

Who's BoneheadedAlien

?
경제류 게임을 만드는중 (?)
Comment '19'
  • ?
    Last H 2009.02.22 22:03
    헐 이거 그대로 복사 붙여넣기 해서 슬립데미지 쓰면
    100% 에러 남 장담합니다.
    역슬래쉬가 죄다 깨졌군요.
  • ?
    BoneheadedAlien 2009.02.22 23:30
    죄다 깨진거 방금 확인하고 원문으로 수정했습니다.

    도움말은 그대로 한글이지만,
  • ?
    mymy 2011.01.19 17:00

    백슬래쉬 아닌가요? 똑같은거면 ㅈㅅ

  • ?
    RMadrid 2009.02.22 23:02

    감사합니다.

    그런데
    -------------------------------------------
    #스테이트의 메모란에,<슬립 [HP|MP] n[%] [,n]> (을)를 추가합니다.

    #[HP|MP]의 부분은,HP 또는 MP 의 어느 쪽을 대상으로 하는지를 기술합니다.
    #생략 했을 경우는 HP 됩니다.

    #1번째의n에는, 턴 마다의 회복·데미지량을 기술합니다.
    #지정한 값이 정의 경우는 회복, 부의 경우는 데미지로서 다루어집니다.
    #% (을)를 붙였을 경우는 최대 HP or MP 에 대한 비율이 됩니다.

    #2번째의n에는, 맵상에서 1보 걸었을 때의 회복·데미지량을 기술합니다.
    #이쪽은 % (을)를 붙일 수 없습니다.

    라고 되어있는데, 추가하는 부분이 어디라는건지...찾을 수가 없어서요.

    그리고 상태이상마다 각각 다르게 슬립 데미지를 조정할 수 있는지도 궁금합니다.

  • ?
    RMadrid 2009.02.26 01:10
    감사합니다. 많은 도움이 되었어요.
  • ?
    BoneheadedAlien 2009.02.22 23:35
    데이터 베이스의 '상태' 창에 각각의 상태마다 메모란이 있습니다.

    각각의 메모란을 사용하여, 상태 이상마다 모두 다르게 슬립 데미지를 조정할 수 있지요.
  • ?
    Hara 2009.02.23 12:59
    어떻게 쓰는지 모르겠네요- _-;;; 메모에 아무리 추가해봐도 안된다능... 예재로 스샷이라도 좀.....;ㅅ;
  • ?
    로브남 2009.02.23 15:25
    kgc껀 아무리 찾아봐도 없었는데, kgc 의 슬립 데미지 상세화가 나온지가 꽤 됐네요. 
    but 지금은  XRXS 의 슬립데미지 상세화를 쓰고 있는지라..;; 어쨋든 한번 써봐야 겠군요. ㄳ ^^
  • ?
    Last H 2009.02.23 17:56
    음... 이 스크립트는 저도 예전에 써봐서 아는데 일단 기본적으로 ABS같은 전투시스템이 변경된 스크립트와는 대부분의 경우
    병용 할 수 없습니다.
  • ?
    전설의 찌질이 2009.03.01 14:39
    감사합니다.
  • ?
    VAAVA123 2009.04.12 14:58
    이거 어떻게 사용함?>.
  • ?
    미겔 2009.04.22 16:02
    어디에다 붙여야되는건지? ㅠ.ㅜ
  • ?
    크런키맛아듀크림 2010.02.06 23:50

    help ...

  • ?
    이입나 2010.02.24 10:31

    어떻게 사용하죠?

  • ?
    카린저 2010.06.28 23:56

    아오 .. 이게 데미지로 안들어 가네요.

    -를 어떻게 붙여봐도 안되는 ..

  • ?
    카시야스_반내림 2010.11.21 12:26

    좀더 자세한 설명이 필요할듯..

  • ?
    mymy 2011.01.19 17:01

    게임중 뎀지는 되는데 걸을때는 모든 상태이상이 다 1씩밖에 안달음

  • ?
    daorlia 2011.12.28 19:28

    대체 뭐 어떻게 해야하는 건지..; 하신 분 있으시면 좀 알려주세요

  • ?
    Maxim_Cool 2012.01.25 13:08

    감사합니다~


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5398
130 기타 회피,명중,크리 스테이트를 작성하는 스크립트 9 카르와푸딩의아틀리에 2009.06.30 2394
129 기타 확장 에러 메시지 13 file 허걱 2009.08.17 2497
128 기타 화폐단위 구분해 주는 스크립트 38 file 허걱 2010.04.13 3652
127 기타 화면에 그림 그리는 스크립트 21 file 강진수 2010.02.27 2962
126 기타 화면 확대 스크립트 12 file 에돌이 2011.07.22 3061
125 기타 화면 해상도(640 X 480) 스크립트 6 file 쿠쿠밥솥 2012.01.10 3972
124 기타 해상도 변경 스크립트 11 카리스 2011.07.19 2723
123 기타 페이드 시간 변경 2 rukan 2009.07.01 1360
122 기타 통합 스크립트(좋은 마우스 스크립트 좋은거),KGC좋은거 새로운 거 스크립트 세이브 스크립트 좋은거!~~~~~ 14 알피지GM 2010.03.07 3829
121 기타 텍스트 파일 읽어 오는 스크립트 11 아방스 2008.03.04 2878
120 기타 태양 스크립트. 15 file 할렘 2009.02.20 4463
119 기타 타격관계도 등의 한계돌파 11 시트르산 2010.09.10 2365
118 기타 클리어 횟수 기록하기 8 file 허걱 2009.08.22 2729
117 기타 커스텀 페이지 스크립트 9 file 달표범 2009.09.07 3140
116 기타 커맨드 시스템 7 file 허걱 2009.07.21 2856
115 기타 캐릭터 소개화면 16 file 좀비사냥꾼 2009.03.29 6044
114 기타 카지노 슬롯머신 15 file 아방스가 짱 2010.02.28 3023
113 기타 책 읽기 스크립트. 19 허걱 2009.01.31 4490
112 기타 책 읽기 스크립트 44 file 히류 2010.10.05 4506
111 기타 집안의 가구를 내마음대로 데코레이션하기 15 file EuclidE 2010.09.18 4303
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7