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

Project1

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

[已经解决] 如何实现一些状态?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
1203
在线时间
16 小时
注册时间
2012-1-6
帖子
4
跳转到指定楼层
1
发表于 2012-1-9 09:06:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如用技能回魔,用一个技能自己死了立即信春哥(大家懂的),直接攻击回血魔...这些求解答

Lv1.梦旅人

梦石
0
星屑
50
在线时间
124 小时
注册时间
2010-8-8
帖子
58
2
发表于 2012-1-9 16:26:39 | 只看该作者
Game_Battler 中的 def make_attack_damage_value(attacker)和def make_obj_damage_value(user, obj)
两个定义是定义了普通攻击和技能、物品攻击的伤害公式、伤害量计算。比如普通攻击回蓝,在定义的end前面面加上这些:

    if attacker.state?(200) # 这里的200指的就是你要的状态的ID
        @hp_damage = 0
        @mp_damage = -damage
       end
基本就是这个思路了:)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
412 小时
注册时间
2011-12-10
帖子
925
3
发表于 2012-1-9 16:29:38 | 只看该作者
[@]鱼人戏水[/@]
公共事件,坐等解释,
古代素材爱好群Q249853011
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
124 小时
注册时间
2010-8-8
帖子
58
4
发表于 2012-1-9 16:32:39 | 只看该作者
技能回魔的话就是 计算技能消耗魔力 ,是这个定义:def calc_mp_cost(skill),可以这样修改

   def calc_mp_cost(skill)
    n = skill.mp_cost
    n = -n if state?(200) # 200之状态ID
    if half_mp_cost
      return n / 2
    else
      return n
    end
  end
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
1203
在线时间
16 小时
注册时间
2012-1-6
帖子
4
5
 楼主| 发表于 2012-1-10 00:29:36 | 只看该作者
psychopiz 发表于 2012-1-9 16:32
技能回魔的话就是 计算技能消耗魔力 ,是这个定义:def calc_mp_cost(skill),可以这样修改

   def calc_m ...

那么自己受到了一个技能,然后被干掉后自动复活怎么做?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
140 小时
注册时间
2009-10-28
帖子
103
6
发表于 2012-1-10 11:25:39 | 只看该作者
我随便说说。。   用技能回魔   直接在数据库里技能里   新建一个技能   不费魔   把MP伤害勾上。。输入你要得数值。。    对自身使用。。   就是回魔了。。   被干掉复活  就用公共事件了吧     当然 要是有脚本也行啊   哈
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
124 小时
注册时间
2010-8-8
帖子
58
7
发表于 2012-1-11 12:27:18 | 只看该作者
本帖最后由 psychopiz 于 2012-1-11 12:37 编辑
qq523203115 发表于 2012-1-10 00:29
那么自己受到了一个技能,然后被干掉后自动复活怎么做?


自动复活就是在死亡的判定之前加上一个是否有自动复活这个状态的判定,如果有的话就直接加满HP或者MaxHP的百分之多少,然后去掉这个状态就行了,这样就能达到信春哥原地满BUff复活的效果了。

首先是Hp不等于零的直接即死得情况,在class Game_Battler找到

class Game_Battler
#--------------------------------------------------------------------------
  # ● 附加状态
#     state_id : 状态 ID
  #--------------------------------------------------------------------------
  def add_state(state_id)
    state = $data_states[state_id]        # 获取状态资料
    return if state == nil                # 资料是否为空?
    return if state_ignore?(state_id)     # 状态是否无视?
    return if state_id == 6 and self.state?(19)
    return if state_id == 19 and self.state?(6)
    return if state_id == 8 and self.state?(20)
    return if state_id == 20 and self.state?(8)
    unless state?(state_id)               # 状态是否存在?
      unless state_offset?(state_id)      # 状态是否抵销?
        @states.push(state_id)            # 加入状态
      end
      if state_id == 1                    # 如状态是「无法战斗」(1号状态)
#————————————————————————————————————
if state?(200) # 如果有200号状态,200为自动复活状态ID
@hp = maxhp # 满血复活
remove_state(200) # 自动复活状态消失
@removed_states.push(200)
else
#————————————————————————————————————
        @hp = 0                           # 设体力为0
#———————————————————————————————————————
end
#————————————————————————————————————
      end
      unless inputable?                   # 除非角色无法输入命令
        @action.clear                     # 清除所有行动
      end
      for i in state.state_set            # 获取「移除状态」列表
        remove_state(i)                   # 移除状态
        @removed_states.delete(i)         # 清除
      end
      sort_states                         # 依照优先度排列状态
    end
    @state_turns[state_id] = state.hold_turn    # 设置回合数
  end
end

然后是受到伤害后死亡,然后自动复活,还是在class Game_Battler里找:
#--------------------------------------------------------------------------
  # ● 更改 HP
  #     hp : 新的 HP
  #--------------------------------------------------------------------------
  def hp=(hp)
    @hp = [[hp, maxhp].min, 0].max
    if @hp == 0 and not state?(1) and not @immortal
————————————————————————————————
if state?(200)
@hp = maxhp
remove_state(200)
@removed_states.push(200)
else
————————————————————————————————
      add_state(1)                # 附加「无法战斗」状态(1号状态)
      @added_states.push(1)
————————————————————————————————
end
————————————————————————————————
    elsif @hp > 0 and state?(1)
      remove_state(1)             # 移除「无法战斗」状态(1号状态)
      @removed_states.push(1)
    end
  end


大体上就是这个思路了。。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-28 20:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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