设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2089|回复: 4
打印 上一主题 下一主题

[已经解决] 请教地图移动上如何恢复?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
86 小时
注册时间
2009-7-8
帖子
38
跳转到指定楼层
1
发表于 2010-7-4 18:40:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 提妲 于 2010-7-4 20:11 编辑

想做一个技能,类似于中毒。持续回血蓝。不是战斗中那种。

好比是在大地图上,走一步回1点血、蓝。

应该是这句吧?怎么添加?

#--------------------------------------------------------------------------
  # ● 在玩家移动一步后的处理
  #--------------------------------------------------------------------------
  def on_player_walk
    for actor in members
      if actor.slip_damage?
        actor.hp -= 1 if actor.hp > 1   # 毒伤害
        $game_map.screen.start_flash(Color.new(255,0,0,64), 4)
      end
      if actor.auto_hp_recover and actor.hp > 0
        actor.hp += 1                   # HP 自动回复
      end
    end
  end

Lv1.梦旅人

梦石
0
星屑
55
在线时间
86 小时
注册时间
2009-7-8
帖子
38
5
 楼主| 发表于 2010-7-4 20:14:43 | 只看该作者
再次谢谢大家。这里人都很好。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
4
发表于 2010-7-4 20:00:32 | 只看该作者
本帖最后由 wangswz 于 2010-7-4 20:03 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ スリップダメージ拡張 - KGC_SlipDamageExtension ◆ VX ◆
  3. #_/    ◇ Last update : 2009/09/13 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  スリップダメージの設定を詳細化します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize ★
  9. #==============================================================================

  10. module KGC
  11. module SlipDamageExtension
  12.   # ◆ 歩行ダメージ時のフラッシュ色
  13.   DAMAGE_FLASH_COLOR    = Color.new(255, 0, 0, 64)
  14.   # ◆ 歩行ダメージ時のフラッシュ時間 (フレーム)
  15.   DAMAGE_FLASH_DURATION = 4
  16.   # ◆ 歩行ダメージで戦闘不能にする
  17.   #  true  : HP 0 になる。
  18.   #  false : HP 1 で止まる。
  19.   DIE_MAP_DAMAGE = false
  20. end
  21. end

  22. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

  25. module KGC::SlipDamageExtension
  26.   # 正規表現
  27.   module Regexp
  28.     # ステート
  29.     module State
  30.       # スリップダメージ
  31.       SLIP_DAMAGE = /<(?:SLIP|持续回复伤害)\s*([HM]P)?\s*([\-\+]?\d+)([%%])?
  32.         (?:\s*,\s*([\-\+]?\d+))?\s*>/ix
  33.     end
  34.   end
  35. end

  36. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  37. #==============================================================================
  38. # ■ RPG::State
  39. #==============================================================================

  40. class RPG::State
  41.   #--------------------------------------------------------------------------
  42.   # ○ 「スリップダメージ拡張」のキャッシュ生成
  43.   #--------------------------------------------------------------------------
  44.   def create_slip_damage_extension_cache
  45.     @__slip_damage = false
  46.     @__slip_damage_hp_rate  = 0
  47.     @__slip_damage_hp_value = 0
  48.     @__slip_damage_hp_map   = 0
  49.     @__slip_damage_mp_rate  = 0
  50.     @__slip_damage_mp_value = 0
  51.     @__slip_damage_mp_map   = 0

  52.     self.note.each_line { |line|
  53.       case line
  54.       when KGC::SlipDamageExtension::Regexp::State::SLIP_DAMAGE
  55.         # スリップダメージ
  56.         @__slip_damage = true
  57.         analyse_slip_damage($~)
  58.       end
  59.     }

  60.     # デフォルトのスリップダメージ量を設定
  61.     unless @__slip_damage
  62.       @__slip_damage_hp_rate = 10
  63.       @__slip_damage_hp_map = 1
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ○ スリップダメージの解析
  68.   #--------------------------------------------------------------------------
  69.   def analyse_slip_damage(match)
  70.     # タイプ判定
  71.     if match[1] == nil
  72.       type = :hp
  73.     else
  74.       if match[1] =~ /MP/i
  75.         type = :mp
  76.       else
  77.         type = :hp
  78.       end
  79.     end
  80.     # ダメージ量取得
  81.     n = match[2].to_i
  82.     # 即値 or 割合判定
  83.     is_rate = (match[3] != nil)
  84.     # マップダメージ取得
  85.     map_n = (match[4] != nil ? match[4].to_i : 0)

  86.     # スリップダメージ値加算
  87.     case type
  88.     when :hp
  89.       if is_rate
  90.         @__slip_damage_hp_rate -= n
  91.       else
  92.         @__slip_damage_hp_value -= n
  93.       end
  94.       @__slip_damage_hp_map -= map_n
  95.     when :mp
  96.       if is_rate
  97.         @__slip_damage_mp_rate -= n
  98.       else
  99.         @__slip_damage_mp_value -= n
  100.       end
  101.       @__slip_damage_mp_map -= map_n
  102.     end
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● スリップダメージ
  106.   #--------------------------------------------------------------------------
  107.   unless method_defined?(:slip_damage_KGC_SlipDamageExtension)
  108.     alias slip_damage_KGC_SlipDamageExtension slip_damage
  109.   end
  110.   def slip_damage
  111.     create_slip_damage_extension_cache if @__slip_damage == nil
  112.     return (@__slip_damage || slip_damage_KGC_SlipDamageExtension)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ○ HP スリップダメージ (割合)
  116.   #--------------------------------------------------------------------------
  117.   def slip_damage_hp_rate
  118.     create_slip_damage_extension_cache if @__slip_damage_hp_rate == nil
  119.     return @__slip_damage_hp_rate
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ○ HP スリップダメージ (即値)
  123.   #--------------------------------------------------------------------------
  124.   def slip_damage_hp_value
  125.     create_slip_damage_extension_cache if @__slip_damage_hp_value == nil
  126.     return @__slip_damage_hp_value
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ○ HP スリップダメージ (マップ)
  130.   #--------------------------------------------------------------------------
  131.   def slip_damage_hp_map
  132.     create_slip_damage_extension_cache if @__slip_damage_hp_map == nil
  133.     return @__slip_damage_hp_map
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ MP スリップダメージ (割合)
  137.   #--------------------------------------------------------------------------
  138.   def slip_damage_mp_rate
  139.     create_slip_damage_extension_cache if @__slip_damage_mp_rate == nil
  140.     return @__slip_damage_mp_rate
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ○ MP スリップダメージ (即値)
  144.   #--------------------------------------------------------------------------
  145.   def slip_damage_mp_value
  146.     create_slip_damage_extension_cache if @__slip_damage_mp_value == nil
  147.     return @__slip_damage_mp_value
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ MP スリップダメージ (マップ)
  151.   #--------------------------------------------------------------------------
  152.   def slip_damage_mp_map
  153.     create_slip_damage_extension_cache if @__slip_damage_mp_map == nil
  154.     return @__slip_damage_mp_map
  155.   end
  156. end

  157. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  158. #==============================================================================
  159. # ■ Game_Battler
  160. #==============================================================================

  161. class Game_Battler
  162.   #--------------------------------------------------------------------------
  163.   # ● スリップダメージの効果適用
  164.   #--------------------------------------------------------------------------
  165.   def slip_damage_effect
  166.     return unless slip_damage?

  167.     slip_damage_effect_hp
  168.     slip_damage_effect_mp
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ○ HP スリップダメージの効果適用
  172.   #--------------------------------------------------------------------------
  173.   def slip_damage_effect_hp
  174.     return if dead?

  175.     n = 0
  176.     self.states.each { |state|
  177.       next unless state.slip_damage
  178.       n += self.maxhp * state.slip_damage_hp_rate / 100
  179.       n += state.slip_damage_hp_value
  180.     }
  181.     return if n == 0

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

  190.     n = 0
  191.     self.states.each { |state|
  192.       next unless state.slip_damage
  193.       n += self.maxmp * state.slip_damage_mp_rate / 100
  194.       n += state.slip_damage_mp_value
  195.     }
  196.     return if n == 0

  197.     @mp_damage = [n, self.mp].min
  198.     self.mp -= @mp_damage
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ○ 歩行時のスリップダメージの効果適用
  202.   #--------------------------------------------------------------------------
  203.   def slip_damage_effect_on_walk
  204.     last_hp = self.hp
  205.     last_mp = self.mp
  206.     self.states.each { |state|
  207.       next unless state.slip_damage
  208.       hp_damage = state.slip_damage_hp_map
  209.       unless KGC::SlipDamageExtension::DIE_MAP_DAMAGE
  210.         hp_damage = [hp_damage, self.hp - 1].min
  211.       end
  212.       self.hp -= hp_damage
  213.       self.mp -= state.slip_damage_mp_map
  214.     }
  215.     # ダメージを受けた場合はフラッシュ
  216.     if self.hp < last_hp || self.mp < last_mp
  217.       $game_map.screen.start_flash(
  218.         KGC::SlipDamageExtension::DAMAGE_FLASH_COLOR,
  219.         KGC::SlipDamageExtension::DAMAGE_FLASH_DURATION)
  220.     end
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ○ 歩行時の自動回復の実行
  224.   #--------------------------------------------------------------------------
  225.   def do_auto_recovery_on_walk
  226.     return if dead?

  227.     if auto_hp_recover
  228.       self.hp += 1
  229.     end
  230.   end
  231. end

  232. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  233. #==============================================================================
  234. # ■ Game_Party
  235. #==============================================================================

  236. class Game_Party < Game_Unit
  237.   #--------------------------------------------------------------------------
  238.   # ● プレイヤーが 1 歩動いたときの処理
  239.   #--------------------------------------------------------------------------
  240.   def on_player_walk
  241.     for actor in members
  242.       if actor.slip_damage?
  243.         actor.slip_damage_effect_on_walk
  244.       end
  245.       actor.do_auto_recovery_on_walk
  246.     end
  247.   end
  248. end
复制代码
<持续回复伤害 HP -4%, -1> 状态栏备注里这样写
这样就是 每回合-4% 每步扣1 HP

评分

参与人数 1星屑 +100 收起 理由
提妲 + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2009-9-19
帖子
137
3
发表于 2010-7-4 18:58:32 | 只看该作者
def on_player_walk
    for actor in members
      actor.hp += 1 if actor.hp > 0
      actor.sp +=1 if acotr.sp >0

      if actor.slip_damage?
        actor.hp -= 1 if actor.hp > 1   # 毒伤害
        $game_map.screen.start_flash(Color.new(255,0,0,64), 4)
      end
      if actor.auto_hp_recover and actor.hp > 0
        actor.hp += 1                   # HP 自动回复
      end
    end
  end

点评

VX没SP 是MP  发表于 2010-7-4 19:59

评分

参与人数 1星屑 +100 收起 理由
提妲 + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
86 小时
注册时间
2009-7-8
帖子
38
2
 楼主| 发表于 2010-7-4 18:44:21 | 只看该作者
先谢谢了,感激不尽

点评

善用编辑  发表于 2010-7-4 20:06
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 15:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表