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

Project1

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

[已经解决] 求救!怎样让技能像PM中一样,不同技能的状态几率不一样?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
跳转到指定楼层
1
发表于 2010-7-1 09:36:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 cqr19950307 于 2010-7-2 17:01 编辑

举个例子说:
同样是A攻击B,A用“闪电拳”,B10%几率麻痹;但A用“电火花”,B30%几率麻痹。
希望能得到一个有效的解决方法。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
9
 楼主| 发表于 2010-7-2 10:54:55 | 只看该作者
谢谢支持!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
8
 楼主| 发表于 2010-7-2 10:54:29 | 只看该作者
if rand(100) < staterate * state_probability(i) / 100  # 计算状态机率
这一步保留了附加状态时对方本身的中状态的几率。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
7
 楼主| 发表于 2010-7-2 10:54:09 | 只看该作者
obj.description[0,2] 就是技能说明,比如说技能说明中70%几率中毒,该句子就引用技能说明的前两个字符(“70”),然后把几率代入变量2求解。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
6
 楼主| 发表于 2010-7-2 10:51:16 | 只看该作者
在Game_Battler这一栏里
#--------------------------------------------------------------------------
  # ● 定义状态变化变量
  #--------------------------------------------------------------------------
  def staterate
    return $game_variables[2]
  end
  #--------------------------------------------------------------------------
  # ● 计算状态变化
  #     obj : 技能、物品或攻击者
  #--------------------------------------------------------------------------
  def apply_state_changes(obj)
    plus = obj.plus_state_set             # 获取状态变化(+)
    minus = obj.minus_state_set           # 获取状态变化(-)
    for i in plus                         # 状态变化(+)
      next if state_resist?(i)            # 判断状态是否无效
      next if dead?                       # 判断是否无法战斗
      next if i == 1 and @immortal        # 判断是否为不死身
      if state?(i)                        # 判断状态是否已存在
        @remained_states.push(i)          # 记录为变更状态
        next
      end
      if obj.is_a?(RPG::Skill)
        if obj.description[0,2] == "10"
          $game_variables[2] = 10
        elsif obj.description[0,2] == "20"
          $game_variables[2] = 20
        elsif obj.description[0,2] == "30"
          $game_variables[2] = 30
        elsif obj.description[0,2] == "40"
          $game_variables[2] = 40
        elsif obj.description[0,2] == "50"
          $game_variables[2] = 50
        elsif obj.description[0,2] == "60"
          $game_variables[2] = 60
        elsif obj.description[0,2] == "70"
          $game_variables[2] = 70
        else
          $game_variables[2] = 100
        end
      else
        $game_variables[2] = 100
      end
      if rand(100) < staterate * state_probability(i) / 100  # 计算状态机率
        add_state(i)                      # 附加状态
        @added_states.push(i)             # 记录已附加状态
      end
    end
    for i in minus                        # 状态变化(-)
      next unless state?(i)               # 判断状态是否已存在
      remove_state(i)                     # 移除状态
      @removed_states.push(i)             # 记录以移除状态
    end
    for i in @added_states & @removed_states  # 清除附加和移除状态
      @added_states.delete(i)
      @removed_states.delete(i)
    end
  end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
5
 楼主| 发表于 2010-7-2 10:50:13 | 只看该作者
解决了,在计算状态变化这一栏稍作修改。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-7-1
帖子
31
4
 楼主| 发表于 2010-7-1 13:37:18 | 只看该作者
照你们这么说,那么当同名的多种状态相叠加不是也能看出来吗

点评

你可以设置当附加的时候去除其他相同的麻痹中毒 等等  发表于 2010-7-1 15:58
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
11 小时
注册时间
2009-6-4
帖子
210
3
发表于 2010-7-1 13:33:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
2
发表于 2010-7-1 11:43:16 | 只看该作者
状态附加有效度 或者只是相同名字 的多个状态
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-10-1 00:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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