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

Project1

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

[已经过期] hpmp效果互换该怎么做?

[复制链接]

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
跳转到指定楼层
1
发表于 2018-2-28 08:15:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
喔喔
mp为0时,角色就会死掉。
hp为0时不会。
战斗里,hp还有数值时
回合结束会将hp的数值补充到mp。
数值够就补满。数值不够就补到hp为0。
1hp换1mp。
请问该怎么实现?

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
2
发表于 2018-2-28 11:45:30 | 只看该作者
本帖最后由 300英雄 于 2018-2-28 11:48 编辑

你可以让HP为1啊,0的话直接死亡的,这样的话也不需要改脚本了,并且1血量让他放着问题也不大.
伤害公式还缺一块
if value >= self.hp
      value = 0
      self.hp = 1
      end

防止角色被打死,留一点血量,插到两种方法的下面或者上面问题都不大

回合结束的判定.png (104.53 KB, 下载次数: 27)

回合结束的判定.png

伤害公式.png (117.8 KB, 下载次数: 30)

伤害公式.png

评分

参与人数 1+1 收起 理由
2256538860 + 1 塞糖

查看全部评分

P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2018-2-28 13:26:22 | 只看该作者

点评

0.0这.......  发表于 2018-2-28 13:34
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2018-2-28 14:28:47 | 只看该作者
你指的是在使用某个技能后获得魔法盾的效果,通过消耗MP来抵挡受到的伤害吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2512
在线时间
215 小时
注册时间
2017-9-27
帖子
613
5
发表于 2018-2-28 23:00:45 | 只看该作者
  1. class Game_Battler < Game_BattlerBase
  2.   
  3.   STATE_ID = 60   #魔法盾状态的id号
  4.   MP_RATE  = 0.8 #魔法盾吸收伤害的比率0.4就是10点伤害hp6点mp4点
  5.   MP_DAMAGE_RATE = 2
  6.   VARIABLE_ID = 3      #1点mp抵消(3号变量的值+2)点伤害,如果不需要变量功能,就把这个值设为0或负数
  7.   #--------------------------------------------------------------------------
  8.   # ● 计算伤害
  9.   #--------------------------------------------------------------------------
  10.   def make_damage_value(user, item)
  11.     value = item.damage.eval(user, self, $game_variables)
  12.     value *= item_element_rate(user, item)
  13.     value *= pdr if item.physical?
  14.     value *= mdr if item.magical?
  15.     value *= rec if item.damage.recover?
  16.     value = apply_critical(value) if @result.critical
  17.     value = apply_variance(value, item.damage.variance)
  18.     value = apply_guard(value)
  19.     if item.damage.to_hp? and self.state?(STATE_ID)
  20.       mrate = MP_DAMAGE_RATE
  21.       mrate += $game_variables[VARIABLE_ID] if $game_variables[VARIABLE_ID]
  22.       mp_value = [(value * MP_RATE/mrate).to_i  , self.mp].min
  23.       value -= mp_value * mrate
  24.       self.mp -= mp_value
  25.     end
  26.     @result.make_damage(value.to_i, item)
  27.   end
  28. end
复制代码

点评

所以我没法理解他想要什么  发表于 2018-2-28 23:41
有点模糊···我猜是魔法盾,但是一般魔法盾也不会mp掉到0就死的···  发表于 2018-2-28 23:39
又看了下问题···好像不是这个···有点听不懂  发表于 2018-2-28 23:01
浅尝辄止,宜乎众矣。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2724
在线时间
227 小时
注册时间
2016-3-27
帖子
576
6
发表于 2018-2-28 23:14:17 | 只看该作者
怎么又来一个露qwq
那就设定不会战斗不能,然后在战斗执行的时候不会gameover不就行了
至于MP为零死亡就设个并行处理的公共事件???
现在还能改名吗qwq
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
7
发表于 2018-3-24 18:26:55 | 只看该作者
本帖最后由 文雅夕露 于 2018-3-24 19:15 编辑

其实这个效果很简单实现,就是简单的替换一些战斗数据摆了。
脚本已经写好了。




效果1.MP为0时进入战斗不能状态;HP为0不会有影响,并且使用魔法依旧消耗MP
效果2.战斗每回合结束恢复所有的MP,前提HP充足的情况之下;
效果3.HP不充足,只恢复应有的数值;
效果4.MP为0时,HP还有也不能恢复。
脚本一览:

  1. #==============================================================================
  2. # ■ Game_BattlerBase
  3. #------------------------------------------------------------------------------
  4. #  管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
  5. #==============================================================================

  6. class Game_BattlerBase
  7.   #--------------------------------------------------------------------------
  8.   # ● 获取普通能力的最小值
  9.   #--------------------------------------------------------------------------
  10.   def param_min(param_id)
  11.     return 0 if param_id == 0  # MMP
  12.     return 1
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 刷新
  16.   #--------------------------------------------------------------------------
  17.   def refresh
  18.     state_resist_set.each {|state_id| erase_state(state_id) }
  19.     @hp = [[@hp, mhp].min, 0].max
  20.     @mp = [[@mp, mmp].min, 0].max
  21.     @mp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 判定是否死亡
  25.   #--------------------------------------------------------------------------
  26.   def dead?
  27.     exist? && death_state? || @mp == 0
  28.   end
  29. end
  30. #==============================================================================
  31. # ■ Game_Battler
  32. #------------------------------------------------------------------------------
  33. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  34. #==============================================================================

  35. class Game_Battler < Game_BattlerBase
  36.   #--------------------------------------------------------------------------
  37.   # ● 处理伤害
  38.   #    调用前需要设置好
  39.   #    @result.hp_damage   @result.mp_damage
  40.   #    @result.hp_drain    @result.mp_drain
  41.   #--------------------------------------------------------------------------
  42.   def execute_damage(user)
  43.     on_damage(@result.hp_damage) if @result.hp_damage > 0
  44.     self.hp -= @result.mp_damage
  45.     self.mp -= @result.hp_damage
  46.     user.hp += @result.mp_drain
  47.     user.mp += @result.hp_drain
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 死亡
  51.   #--------------------------------------------------------------------------
  52.   def die
  53.     @mp = 0
  54.     clear_states
  55.     clear_buffs
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 复活
  59.   #--------------------------------------------------------------------------
  60.   def revive
  61.     @mp = 1 if @mp == 0
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 回合结束处理
  65.   #--------------------------------------------------------------------------
  66.   alias recover_on_turn_end on_turn_end
  67.   def on_turn_end
  68.      if self.is_a?(Game_Actor) && self.mp != 0
  69.      if (self.mmp - self.mp) <= self.hp
  70.        self.hp -= (self.mmp - self.mp).abs
  71.        self.mp += (self.mmp - self.mp)
  72.      elsif (self.mmp - self.mp) > self.hp
  73.        self.mp += self.hp
  74.        self.hp -= self.hp
  75.      end
  76.      end
  77.     recover_on_turn_end
  78.   end
  79. end
  80. #encoding:utf-8
  81. #==============================================================================
  82. # ■ Window_Base
  83. #------------------------------------------------------------------------------
  84. #  游戏中所有窗口的父类
  85. #==============================================================================

  86. class Window_Base < Window
  87.   #--------------------------------------------------------------------------
  88.   # ● 获取 HP 的文字颜色
  89.   #--------------------------------------------------------------------------
  90.   def hp_color(actor)
  91.     return crisis_color if actor.hp < actor.mhp / 4
  92.     return normal_color
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 获取 MP 的文字颜色
  96.   #--------------------------------------------------------------------------
  97.   def mp_color(actor)
  98.     return knockout_color if actor.mp == 0
  99.     return crisis_color if actor.mp < actor.mmp / 4
  100.     return normal_color
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 获取 TP 的文字颜色
  104.   #--------------------------------------------------------------------------
  105.   def tp_color(actor)
  106.     return normal_color
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 绘制角色行走图
  110.   #--------------------------------------------------------------------------
  111.   def draw_actor_graphic(actor, x, y)
  112.     draw_character(actor.character_name, actor.character_index, x, y)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 绘制角色肖像图
  116.   #--------------------------------------------------------------------------
  117.   def draw_actor_face(actor, x, y, enabled = true)
  118.     draw_face(actor.face_name, actor.face_index, x, y, enabled)
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 绘制名字
  122.   #--------------------------------------------------------------------------
  123.   def draw_actor_name(actor, x, y, width = 112)
  124.     change_color(mp_color(actor))
  125.     draw_text(x, y, width, line_height, actor.name)
  126.   end
  127. end
复制代码

评分

参与人数 1+1 收起 理由
春风莉露 + 1 厉害

查看全部评分

一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 07:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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