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

Project1

 找回密码
 注册会员
搜索
查看: 2074|回复: 12

[已经解决] 请教同时有第1号状态和第2号状态就能免疫第10号状态的写法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
发表于 2020-2-25 18:20:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 taeckle 于 2020-2-25 18:21 编辑

在数据库状态栏右边里可以设置处在某个状态后(比如状态1),是否可以免疫其他状态(就是那个减号“-”)

比如想设置处在第1号状态时可免疫第10号状态的话就直接在数据库状态栏的第1号状态设置界面左边的第10号状态旁边点个“-”就行了

想到这咱脑子顿时蹦出一个问题:
那要是同时处在状态1和状态2才可免疫第10号状态该怎么搞呢?

请大神指点一二,多谢了!





头像被屏蔽

Lv4.逐梦者 (禁止发言)

梦石
0
星屑
5701
在线时间
922 小时
注册时间
2013-8-29
帖子
1468
发表于 2020-2-25 18:43:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-27 00:21:47 | 显示全部楼层
还有请问下这个脚本在game_battler里可以做吗?

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-28 06:07:54 | 显示全部楼层
chanszeman1018 发表于 2020-2-25 18:43
判斷是否处在状态1
是的话
判斷是否处在状态2


应该是还要更简单的方法,继续坐等大神指点一二。。。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31679
在线时间
5077 小时
注册时间
2012-11-19
帖子
4877

开拓者

发表于 2020-2-28 08:56:16 | 显示全部楼层
是这样?
  1. #==============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   alias immune_state_add_state add_state
  5.   def add_state(state_id, force = false)
  6.     return if !force && state_id == 10 && state?(1) && state?(2)
  7.     immune_state_add_state(state_id, force)
  8.   end
  9. end
  10. #==============================================================================
复制代码

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 大神威武,一语天机!

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-3-2 16:59:13 | 显示全部楼层
本帖最后由 taeckle 于 2020-3-2 17:00 编辑


大神我要是想在默认的add_state方法里直接加你这两句最好是在哪里加呢?
这是默认的add_state:


# ● 附加状态
  #     state_id : 状态 ID
  #     force    : 强制附加标志 (处理自动状态时使用)
  #--------------------------------------------------------------------------
  def add_state(state_id, force = false)
    # 无效状态的情况下
    if $data_states[state_id] == nil
      # 过程结束
      return
    end
    # 无法强制附加的情况下
    unless force
      # 已存在的状态循环
      for i in @states
        # 新的状态和已经存在的状态 (-) 同时包含的情况下、
        # 本状态不包含变化为新状态的状态变化 (-)
        # (ex : 战斗不能与附加中毒同时存在的场合)
        if $data_states.minus_state_set.include?(state_id) and
           not $data_states[state_id].minus_state_set.include?(i)
          # 过程结束
          return
        end
      end
    end
    # 无法附加本状态的情况下
    unless state?(state_id)
      # 状态 ID 追加到 @states 序列中
      @states.push(state_id)
      # 选项 [当作 HP 0 的状态] 有效的情况下
      if $data_states[state_id].zero_hp
        # HP 更改为 0
        @hp = 0
      end
      # 所有状态的循环
      for i in 1...$data_states.size
        # 状态变化 (+) 处理
        if $data_states[state_id].plus_state_set.include?(i)
          add_state(i)
        end
        # 状态变化 (-) 处理
        if $data_states[state_id].minus_state_set.include?(i)
          remove_state(i)
        end
      end
      # 按比例大的排序 (值相等的情况下按照强度排序)
      @states.sort! do |a, b|
        state_a = $data_states[a]
        state_b = $data_states
        if state_a.rating > state_b.rating
          -1
        elsif state_a.rating < state_b.rating
          +1
        elsif state_a.restriction > state_b.restriction
          -1
        elsif state_a.restriction < state_b.restriction
          +1
        else
          a <=> b
        end
      end
    end
    # 强制附加的场合
    if force
      # 设置为自然解除的最低回数 -1 (无效)
      @states_turn[state_id] = -1
    end
    # 不能强制附加的场合
    unless  @states_turn[state_id] == -1
      # 设置为自然解除的最低回数
      @states_turn[state_id] = $data_states[state_id].hold_turn
    end
    # 无法行动的场合
    unless movable?
      # 清除行动
      @current_action.clear
    end
    # 检查 HP 及 SP 的最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end

点评

大神看下我下面写的  发表于 2020-3-2 18:10
def add_state(state_id, force = false)下面第一行就可以了..你理解不了么..  发表于 2020-3-2 18:09
最前面加..  发表于 2020-3-2 18:07
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-3-2 18:10:39 | 显示全部楼层
本帖最后由 taeckle 于 2020-3-2 18:11 编辑
  1.   def add_state(state_id, force = false)
  2.     # 无效状态的情况下
  3.     if !force && state_id == 10 && state?(1) && state?(2)
  4.          return
  5.     end
  6.     immune_state_add_state(state_id, force)
  7.     if $data_states[state_id] == nil
  8.       # 过程结束
  9.       return
  10.     end
  11.     # 无法强制附加的情况下
  12.     unless force
  13.       # 已存在的状态循环
  14.       for i in @states
  15.         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
  16.         # 本状态不包含变化为新状态的状态变化 (-)
  17.         # (ex : 战斗不能与附加中毒同时存在的场合)
  18.         if $data_states.minus_state_set.include?(state_id) and
  19.            not $data_states[state_id].minus_state_set.include?(i)
  20.           # 过程结束
  21.           return
  22.         end
  23.       end
  24.     end
  25.     # 无法附加本状态的情况下
  26.     unless state?(state_id)
  27.       # 状态 ID 追加到 @states 序列中
  28.       @states.push(state_id)
  29.       # 选项 [当作 HP 0 的状态] 有效的情况下
  30.       if $data_states[state_id].zero_hp
  31.         # HP 更改为 0
  32.         @hp = 0
  33.       end
  34.       # 所有状态的循环
  35.       for i in 1...$data_states.size
  36.         # 状态变化 (+) 处理
  37.         if $data_states[state_id].plus_state_set.include?(i)
  38.           add_state(i)
  39.         end
  40.         # 状态变化 (-) 处理
  41.         if $data_states[state_id].minus_state_set.include?(i)
  42.           remove_state(i)
  43.         end
  44.       end
  45.       # 按比例大的排序 (值相等的情况下按照强度排序)
  46.       @states.sort! do |a, b|
  47.         state_a = $data_states[a]
  48.         state_b = $data_states
  49.         if state_a.rating > state_b.rating
  50.           -1
  51.         elsif state_a.rating < state_b.rating
  52.           +1
  53.         elsif state_a.restriction > state_b.restriction
  54.           -1
  55.         elsif state_a.restriction < state_b.restriction
  56.           +1
  57.         else
  58.           a <=> b
  59.         end
  60.       end
  61.     end
  62.     # 强制附加的场合
  63.     if force
  64.       # 设置为自然解除的最低回数 -1 (无效)
  65.       @states_turn[state_id] = -1
  66.     end
  67.     # 不能强制附加的场合
  68.     unless  @states_turn[state_id] == -1
  69.       # 设置为自然解除的最低回数
  70.       @states_turn[state_id] = $data_states[state_id].hold_turn
  71.     end
  72.     # 无法行动的场合
  73.     unless movable?
  74.       # 清除行动
  75.       @current_action.clear
  76.     end
  77.     # 检查 HP 及 SP 的最大值
  78.     @hp = [@hp, self.maxhp].min
  79.     @sp = [@sp, self.maxsp].min
  80.   end
复制代码

点评

好的!多谢大神指点!  发表于 2020-3-2 22:01
不是用alias就不用immune_state_add_state的..用途是调用原名的方法..没有会报错..  发表于 2020-3-2 18:23
那个 immune_state_add_state(state_id, force) 搞不懂为啥要放在if !force && state_id == 10 && state?(1) && state?(2) return end 的外面啊?  发表于 2020-3-2 18:13
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-28 23:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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