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
50 기타 디스크 체인져 VX!! (업데이트..) 30 file Tofuman 2008.12.02 3168
49 기타 [자작]게임 실행시 파일 체크 프로그램. 또는 파일 실행기. 16 file NightWind AYARSB 2010.05.20 3193
48 기타 <중수이상>RPG VX의 대표적 참조값 6 까까까 2009.05.31 3236
» 기타 [kcg] 슬립 데미지 상세화 19 BoneheadedAlien 2009.02.22 3242
46 기타 라이트 이펙트 스크립트 12 file 아방스 2009.02.07 3262
45 기타 KGC파라미터배분 2 (VX전용) 20 file 카르와푸딩의아틀리에 2009.07.21 3269
44 기타 높이(층)를 설정하는 스크립트 11 file 카르와푸딩의아틀리에 2009.07.01 3343
43 기타 범용 게이지 묘화 - KGC 14 file 카르와푸딩의아틀리에 2009.08.19 3476
42 기타 Staff Roll 13 file 허걱 2009.01.31 3523
41 기타 경험치, HP, MP 백분율계산 (실시간) 8 file 허걱 2009.08.01 3540
40 기타 KGC패시브 스크립트 30 카르와푸딩의아틀리에 2009.10.07 3551
39 기타 데이터베이스 자체 제한 해체 스크립트 [Database Limit Breaker] 13 file 할렘 2009.02.07 3562
38 기타 말풍선 그림 바꾸기 6 file 허걱 2009.08.15 3565
37 기타 [KGC]한계돌파 9 방콕족의생활 2008.06.13 3599
36 기타 Crissaegrim 농장시스템 한글화 28 file 도심 2009.12.22 3606
35 기타 멥 이름 띄우기 10 신규회원 2012.02.24 3626
34 기타 낚시 스크립트~(낚시대로 하는 낚시가 아니라 사람을 낚는 낚시 스크립트) 14 file ~AYARSB~ 2010.03.18 3630
33 기타 화폐단위 구분해 주는 스크립트 38 file 허걱 2010.04.13 3652
32 기타 미니게임테트리스 스크립트 ㅋㅋㅋ 27 file 카르와푸딩의아틀리에 2009.06.30 3689
31 기타 레벨업 이펙트... 20 비극ㆍ 2010.04.19 3768
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7