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

Project1

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

[已经解决] 帮忙诊断下这个战斗脚本错误的原因

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2011-1-27
帖子
21
跳转到指定楼层
1
发表于 2011-6-5 14:47:59 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x


不带宠物进入战斗就没有出现这个错误报告,带宠物战斗就会出现这个错误报告,这是什么原因?

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
7
发表于 2011-6-5 15:54:58 | 只看该作者
我看把
actor.remove_states_auto2
改成
#actor.remove_states_auto2
会很适合你.

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
「旅」 + 200 + 2

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2011-1-27
帖子
21
6
 楼主| 发表于 2011-6-5 15:20:30 | 只看该作者
jhhuang 发表于  
好像是remove_states_auto2这个方法不存在本类及其父类中?
搜索看看存不存在这个类中.

类里面没有这句代码。。。

怎么解决这个问题呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2011-1-27
帖子
21
5
 楼主| 发表于 2011-6-5 15:18:42 | 只看该作者
jhhuang 发表于  
好像是remove_states_auto2这个方法不存在本类及其父类中?
搜索看看存不存在这个类中.

#==============================================================================

# ■ Game_Actor

#------------------------------------------------------------------------------

#  处理角色的类。本类在 Game_Actors 类 ($game_actors)

# 的内部使用、Game_Party 类请参考 ($game_party) 。

#==============================================================================



class Game_Actor < Game_Battler

  #--------------------------------------------------------------------------

  # ● 定义实例变量

  #--------------------------------------------------------------------------

  attr_reader   :name                     # 名称

  attr_reader   :character_name           # 角色 文件名

  attr_reader   :character_hue            # 角色 色相

  attr_reader   :class_id                 # 职业 ID

  attr_reader   :weapon_id                # 武器 ID

  attr_reader   :armor1_id                # 盾 ID

  attr_reader   :armor2_id                # 头防具 ID

  attr_reader   :armor3_id                # 身体体防具 ID

  attr_reader   :armor4_id                # 装饰品 ID

  attr_reader   :level                    # 水平

  attr_reader   :exp                      # EXP

  attr_reader   :skills                   # 特技

  attr_accessor :qianli

  #--------------------------------------------------------------------------

  # ● 初始化对像

  #     actor_id : 角色 ID

  #--------------------------------------------------------------------------

  def initialize(actor_id)

    super()

    setup(actor_id)

  end

  

  #def qianli(ql)

    #@qianli += ql

    #@qianli = [@qianli, 0].max

    #return @qianli

  #end

  

  #def qianli()

    #return @qianli

  #end

  #--------------------------------------------------------------------------

  # ● 设置

  #     actor_id : 角色 ID

  #--------------------------------------------------------------------------

  def setup(actor_id)

    actor = $data_actors[actor_id]

    @qianli = 0

    @actor_id = actor_id

    @name = actor.name

    @character_name = actor.character_name

    @character_hue = actor.character_hue

    @battler_name = actor.battler_name

    @battler_hue = actor.battler_hue

    @class_id = actor.class_id

    @weapon_id = actor.weapon_id

    @armor1_id = actor.armor1_id

    @armor2_id = actor.armor2_id

    @armor3_id = actor.armor3_id

    @armor4_id = actor.armor4_id

    @level = actor.initial_level

    @exp_list = Array.new(101)

    make_exp_list

    @exp = @exp_list[@level]

    @skills = []

    @hp = maxhp

    @sp = maxsp

    @states = []

    @states_turn = {}

    @maxhp_plus = 0

    @maxsp_plus = 0

    @str_plus = 0

    @dex_plus = 0

    @agi_plus = 0

    @int_plus = 0

    # 学会特技

    for i in 1..@level

      for j in $data_classes[@class_id].learnings

        if j.level == i

          learn_skill(j.skill_id)

        end

      end

    end

    # 刷新自动状态

    update_auto_state(nil, $data_armors[@armor1_id])

    update_auto_state(nil, $data_armors[@armor2_id])

    update_auto_state(nil, $data_armors[@armor3_id])

    update_auto_state(nil, $data_armors[@armor4_id])

  end

  #--------------------------------------------------------------------------

  # ● 获取角色 ID

  #--------------------------------------------------------------------------

  def id

    return @actor_id

  end

  #--------------------------------------------------------------------------

  # ● 获取索引

  #--------------------------------------------------------------------------

  def index

    return $game_party.actors.index(self)

  end

  #--------------------------------------------------------------------------

  # ● 计算 EXP

  #--------------------------------------------------------------------------

  def make_exp_list

    actor = $data_actors[@actor_id]

    @exp_list[1] = 0

    pow_i = 2.4 + actor.exp_inflation / 100.0

    for i in 2..100

      if i > actor.final_level

        @exp_list = 0

      else

        n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)

        @exp_list = @exp_list[i-1] + Integer(n)

      end

    end

  end

  #--------------------------------------------------------------------------

  # ● 取得属性修正值

  #     element_id : 属性 ID

  #--------------------------------------------------------------------------

  def element_rate(element_id)

    # 获取对应属性有效度的数值

    table = [0,120,110,100,90,80,5]

    result = table[$data_classes[@class_id].element_ranks[element_id]]

    # 防具能防御本属性的情况下效果减半

    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]

      armor = $data_armors

      if armor != nil and armor.guard_element_set.include?(element_id)

        result /= 2

      end

    end

    # 状态能防御本属性的情况下效果减半

    for i in @states

      if $data_states.guard_element_set.include?(element_id)

        result /= 2

      end

    end

    # 过程结束

    return result

  end

  #--------------------------------------------------------------------------

  # ● 获取属性有效度

  #--------------------------------------------------------------------------

  def state_ranks

    return $data_classes[@class_id].state_ranks

  end

  #--------------------------------------------------------------------------

  # ● 判定防御属性

  #     state_id : 属性 ID

  #--------------------------------------------------------------------------

  def state_guard?(state_id)

    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]

      armor = $data_armors

      if armor != nil

        if armor.guard_state_set.include?(state_id)

          return true

        end

      end

    end

    return false

  end

  #--------------------------------------------------------------------------

  # ● 获取普通攻击属性

  #--------------------------------------------------------------------------

  def element_set

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.element_set : []

  end

  #--------------------------------------------------------------------------

  # ● 获取普通攻击状态变化 (+)

  #--------------------------------------------------------------------------

  def plus_state_set

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.plus_state_set : []

  end

  #--------------------------------------------------------------------------

  # ● 获取普通攻击状态变化 (-)

  #--------------------------------------------------------------------------

  def minus_state_set

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.minus_state_set : []

  end

  #--------------------------------------------------------------------------

  # ● 获取 MaxHP

  #--------------------------------------------------------------------------

  def maxhp

    n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min

    for i in @states

      n *= $data_states.maxhp_rate / 100.0

    end

    n = [[Integer(n), 1].max, 9999].min

    n.truncate

    return n

  end

  #--------------------------------------------------------------------------

  # ● 获取基本 MaxHP

  #--------------------------------------------------------------------------

  def base_maxhp

    return $data_actors[@actor_id].parameters[0, @level]

  end

  #--------------------------------------------------------------------------

  # ● 获取基本 MaxSP

  #--------------------------------------------------------------------------

  def base_maxsp

    return $data_actors[@actor_id].parameters[1, @level]

  end

  #--------------------------------------------------------------------------

  # ● 获取基本力量

  #--------------------------------------------------------------------------

  def base_str

    n = $data_actors[@actor_id].parameters[2, @level]

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    n += weapon != nil ? weapon.str_plus : 0

    n += armor1 != nil ? armor1.str_plus : 0

    n += armor2 != nil ? armor2.str_plus : 0

    n += armor3 != nil ? armor3.str_plus : 0

    n += armor4 != nil ? armor4.str_plus : 0

    return [[n, 1].max, 9999].min

  end

  #--------------------------------------------------------------------------

  # ● 获取基本灵巧

  #--------------------------------------------------------------------------

  def base_dex

    n = $data_actors[@actor_id].parameters[3, @level]

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    n += weapon != nil ? weapon.dex_plus : 0

    n += armor1 != nil ? armor1.dex_plus : 0

    n += armor2 != nil ? armor2.dex_plus : 0

    n += armor3 != nil ? armor3.dex_plus : 0

    n += armor4 != nil ? armor4.dex_plus : 0

    return [[n, 1].max, 9999].min

  end

  #--------------------------------------------------------------------------

  # ● 获取基本速度

  #--------------------------------------------------------------------------

  def base_agi

    n = $data_actors[@actor_id].parameters[4, @level]

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    n += weapon != nil ? weapon.agi_plus : 0

    n += armor1 != nil ? armor1.agi_plus : 0

    n += armor2 != nil ? armor2.agi_plus : 0

    n += armor3 != nil ? armor3.agi_plus : 0

    n += armor4 != nil ? armor4.agi_plus : 0

   



    for kds in @skills

      if $data_skills[kds].element_set.include?(40)

        n = n*120/100

        break

      elsif $data_skills[kds].element_set.include?(39)

        n = n*110/100

        break

      end

    end

    for kds in @skills

      if $data_skills[kds].element_set.include?(70)

        n = n*85/100

        break

      end

    end

    return [[n, 1].max, 9999].min

  end

  #--------------------------------------------------------------------------

  # ● 获取基本魔力

  #--------------------------------------------------------------------------

  def base_int

    n = $data_actors[@actor_id].parameters[5, @level]

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    n += weapon != nil ? weapon.int_plus : 0

    n += armor1 != nil ? armor1.int_plus : 0

    n += armor2 != nil ? armor2.int_plus : 0

    n += armor3 != nil ? armor3.int_plus : 0

    n += armor4 != nil ? armor4.int_plus : 0

    return [[n, 1].max, 9999].min

  end

  #--------------------------------------------------------------------------

  # ● 获取基本攻击力

  #--------------------------------------------------------------------------

  def base_atk

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.atk : 0

  end

  #--------------------------------------------------------------------------

  # ● 获取基本物理防御

  #--------------------------------------------------------------------------

  def base_pdef

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    pdef1 = weapon != nil ? weapon.pdef : 0

    pdef2 = armor1 != nil ? armor1.pdef : 0

    pdef3 = armor2 != nil ? armor2.pdef : 0

    pdef4 = armor3 != nil ? armor3.pdef : 0

    pdef5 = armor4 != nil ? armor4.pdef : 0

    return pdef1 + pdef2 + pdef3 + pdef4 + pdef5

  end

  #--------------------------------------------------------------------------

  # ● 获取基本魔法防御

  #--------------------------------------------------------------------------

  def base_mdef

    weapon = $data_weapons[@weapon_id]

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    mdef1 = weapon != nil ? weapon.mdef : 0

    mdef2 = armor1 != nil ? armor1.mdef : 0

    mdef3 = armor2 != nil ? armor2.mdef : 0

    mdef4 = armor3 != nil ? armor3.mdef : 0

    mdef5 = armor4 != nil ? armor4.mdef : 0

    return mdef1 + mdef2 + mdef3 + mdef4 + mdef5

  end

  #--------------------------------------------------------------------------

  # ● 获取基本回避修正

  #--------------------------------------------------------------------------

  def base_eva

    armor1 = $data_armors[@armor1_id]

    armor2 = $data_armors[@armor2_id]

    armor3 = $data_armors[@armor3_id]

    armor4 = $data_armors[@armor4_id]

    eva1 = armor1 != nil ? armor1.eva : 0

    eva2 = armor2 != nil ? armor2.eva : 0

    eva3 = armor3 != nil ? armor3.eva : 0

    eva4 = armor4 != nil ? armor4.eva : 0

    return eva1 + eva2 + eva3 + eva4

  end

  #--------------------------------------------------------------------------

  # ● 普通攻击 获取攻击方动画 ID

  #--------------------------------------------------------------------------

  def animation1_id

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.animation1_id : 0

  end

  #--------------------------------------------------------------------------

  # ● 普通攻击 获取对像方动画 ID

  #--------------------------------------------------------------------------

  def animation2_id

    weapon = $data_weapons[@weapon_id]

    return weapon != nil ? weapon.animation2_id : 0

  end

  #--------------------------------------------------------------------------

  # ● 获取类名

  #--------------------------------------------------------------------------

  def class_name

    return $data_classes[@class_id].name

  end

  #--------------------------------------------------------------------------

  # ● 获取 EXP 字符串

  #--------------------------------------------------------------------------

  def exp_s

    return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"

  end

  #--------------------------------------------------------------------------

  # ● 获取下一等级的 EXP 字符串

  #--------------------------------------------------------------------------

  def next_exp_s

    return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"

  end

  #--------------------------------------------------------------------------

  # ● 获取离下一等级还需的 EXP 字符串

  #--------------------------------------------------------------------------

  def next_rest_exp_s

    return @exp_list[@level+1] > 0 ?

      (@exp_list[@level+1] - @exp).to_s : "-------"

  end

  #--------------------------------------------------------------------------

  # ● 更新自动状态

  #     old_armor : 卸下防具

  #     new_armor : 装备防具

  #--------------------------------------------------------------------------

  def update_auto_state(old_armor, new_armor)

    # 强制解除卸下防具的自动状态

    if old_armor != nil and old_armor.auto_state_id != 0

      remove_state(old_armor.auto_state_id, true)

    end

    # 强制附加装备防具的自动状态

    if new_armor != nil and new_armor.auto_state_id != 0

      add_state(new_armor.auto_state_id, true)

    end

  end

  #--------------------------------------------------------------------------

  # ● 装备固定判定

  #     equip_type : 装备类型

  #--------------------------------------------------------------------------

  def equip_fix?(equip_type)

    case equip_type

    when 0  # 武器

      return $data_actors[@actor_id].weapon_fix

    when 1  # 盾

      return $data_actors[@actor_id].armor1_fix

    when 2  # 头

      return $data_actors[@actor_id].armor2_fix

    when 3  # 身体

      return $data_actors[@actor_id].armor3_fix

    when 4  # 装饰品

      return $data_actors[@actor_id].armor4_fix

    end

    return false

  end

  #--------------------------------------------------------------------------

  # ● 变更装备

  #     equip_type : 装备类型

  #     id    : 武器 or 防具 ID  (0 为解除装备)

  #--------------------------------------------------------------------------

  def equip(equip_type, id)

    case equip_type

    when 0  # 武器

      if id == 0 or $game_party.weapon_number(id) > 0

        $game_party.gain_weapon(@weapon_id, 1)

        @weapon_id = id

        $game_party.lose_weapon(id, 1)

      end

    when 1  # 盾

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor1_id], $data_armors[id])

        $game_party.gain_armor(@armor1_id, 1)

        @armor1_id = id

        $game_party.lose_armor(id, 1)

      end

    when 2  # 头

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor2_id], $data_armors[id])

        $game_party.gain_armor(@armor2_id, 1)

        @armor2_id = id

        $game_party.lose_armor(id, 1)

      end

    when 3  # 身体

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor3_id], $data_armors[id])

        $game_party.gain_armor(@armor3_id, 1)

        @armor3_id = id

        $game_party.lose_armor(id, 1)

      end

    when 4  # 装饰品

      if id == 0 or $game_party.armor_number(id) > 0

        update_auto_state($data_armors[@armor4_id], $data_armors[id])

        $game_party.gain_armor(@armor4_id, 1)

        @armor4_id = id

        $game_party.lose_armor(id, 1)

      end

    end

  end

  #--------------------------------------------------------------------------

  # ● 可以装备判定

  #     item : 物品

  #--------------------------------------------------------------------------

  def equippable?(item)

    # 武器的情况

    if item.is_a?(RPG::Weapon)

      # 包含当前的职业可以装备武器的场合

      if $data_classes[@class_id].weapon_set.include?(item.id)

        return true

      end

    end

    # 防具的情况

    if item.is_a?(RPG::Armor)

      # 不包含当前的职业可以装备武器的场合

      if $data_classes[@class_id].armor_set.include?(item.id)

        return true

      end

    end

    return false

  end

  #--------------------------------------------------------------------------

  # ● 更改 EXP

  #     exp : 新的 EXP

  #--------------------------------------------------------------------------

  def exp=(exp)

    @exp = [[exp, 9999999].min, 0].max

    # 升级

    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0

      @level += 1

      @qianli += 5     

      # 学会特技

      for j in $data_classes[@class_id].learnings

        if j.level == @level

          learn_skill(j.skill_id)

        end

      end

    end

    # 降级

    while @exp < @exp_list[@level]

      @level -= 1

      @qianli -= 5

      @qianli = [@qianli , 0].max

    end

    # 修正当前的 HP 与 SP 超过最大值

    @hp = [@hp, self.maxhp].min

    @sp = [@sp, self.maxsp].min

  end

  #--------------------------------------------------------------------------

  # ● 更改水品

  #     level : 新的等级

  #--------------------------------------------------------------------------

  def level=(level)

    # 检查上下限

    level = [[level, $data_actors[@actor_id].final_level].min, 1].max

    # 更改 EXP

    self.exp = @exp_list[level]

  end

  #--------------------------------------------------------------------------

  # ● 觉悟特技

  #     skill_id : 特技 ID

  #--------------------------------------------------------------------------

  def learn_skill(skill_id)

    if skill_id > 0 and not skill_learn?(skill_id)

      @skills.push(skill_id)

      @skills.sort!

    end

  end

  #--------------------------------------------------------------------------

  # ● 遗忘特技

  #     skill_id : 特技 ID

  #--------------------------------------------------------------------------

  def forget_skill(skill_id)

    @skills.delete(skill_id)

  end

  #--------------------------------------------------------------------------

  # ● 已经学会的特技判定

  #     skill_id : 特技 ID

  #--------------------------------------------------------------------------

  def skill_learn?(skill_id)

    return @skills.include?(skill_id)

  end

  #--------------------------------------------------------------------------

  # ● 可以使用特技判定

  #     skill_id : 特技 ID

  #--------------------------------------------------------------------------

  def skill_can_use?(skill_id)

    if not skill_learn?(skill_id)

      return false

    end

    return super

  end



  #--------------------------------------------------------------------------

  # ● 更改职业 ID

  #     class_id : 新的职业 ID

  #--------------------------------------------------------------------------

  def class_id=(class_id)

    if $data_classes[class_id] != nil

      @class_id = class_id

      # 避开无法装备的物品

      unless equippable?($data_weapons[@weapon_id])

        equip(0, 0)

      end

      unless equippable?($data_armors[@armor1_id])

        equip(1, 0)

      end

      unless equippable?($data_armors[@armor2_id])

        equip(2, 0)

      end

      unless equippable?($data_armors[@armor3_id])

        equip(3, 0)

      end

      unless equippable?($data_armors[@armor4_id])

        equip(4, 0)

      end

    end

  end

  #--------------------------------------------------------------------------

  # ● 更改图形

  #     character_name : 新的角色 文件名

  #     character_hue  : 新的角色 色相

  #     battler_name   : 新的战斗者 文件名

  #     battler_hue    : 新的战斗者 色相

  #--------------------------------------------------------------------------

  def set_graphic(character_name, character_hue, battler_name, battler_hue)

    @character_name = character_name

    @character_hue = character_hue

    @battler_name = battler_name

    @battler_hue = battler_hue

  end

  #--------------------------------------------------------------------------

  #--------------------------------------------------------------------------

  # ● 取得战斗画面的 X 坐标

  #--------------------------------------------------------------------------

  def screen_x

    $kds_x = 260

    if self.id < 20

     case self.ac_id

     when 0

       return 560 + $kds_x

     when 1

       return 620 + $kds_x

     when 2

       return 680 + $kds_x

     when 3

      return 740 + $kds_x

     end

    else

     case $game_actors[self.zhuren].ac_id

     when 0

      return 500 + $kds_x

     when 1

      return 560 + $kds_x

     when 2

      return 620 + $kds_x

     when 3

      return 680 + $kds_x

     end

    end

  end

  

  def s_x

    if @s_x == nil

      @s_x = screen_x

      return screen_x

    else

      return @s_x

    end

  end

  def s_x=(s_x)

     @s_x = s_x

      return @s_x

  end

  #--------------------------------------------------------------------------

  # ● 取得战斗画面的 Y 坐标

  #--------------------------------------------------------------------------

  def screen_y

    $kds_y = 70

    if self.id < 20

     case self.ac_id

     when 0

      return 430 + $kds_y

     when 1

      return 390 + $kds_y

     when 2

      return 350 + $kds_y

     when 3

      return 310 + $kds_y

     end

    else

     case $game_actors[self.zhuren].ac_id

     when 0

      return 370 + $kds_y

     when 1

      return 330 + $kds_y

     when 2

      return 290 + $kds_y

     when 3

      return 250 + $kds_y

     end

    end

  end

  def s_y

    if @s_y == nil

      @s_y = screen_y

      return screen_y

    else

      return @s_y

    end

  end

  def s_y=(s_y)

     @s_y = s_y

      return @s_y

  end

  #--------------------------------------------------------------------------

  # ● 取得战斗画面的 Z 坐标

  #--------------------------------------------------------------------------

  def screen_z

    # 返回计算后的队伍 Z 坐标的排列顺序

    if self.index != nil

      return 4 - self.index

    else

      return 0

    end

  end

  def s_z

    if @s_z == nil

      @s_z = screen_z

      return screen_z

    else

      return @s_z

    end

  end

  def s_z=(s_z)

     @s_z = s_z

      return @s_z

  end

end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2011-1-27
帖子
21
4
 楼主| 发表于 2011-6-5 15:13:31 | 只看该作者
Wind2010 发表于  
Game_Actor类中没有定义remove_states_auto2
remove_states_auto2的效果是?

  1. #==============================================================================
  2. # ■ Game_Actor
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  5. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  6. #==============================================================================

  7. class Game_Actor < Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :name                     # 名称
  12.   attr_reader   :character_name           # 角色 文件名
  13.   attr_reader   :character_hue            # 角色 色相
  14.   attr_reader   :class_id                 # 职业 ID
  15.   attr_reader   :weapon_id                # 武器 ID
  16.   attr_reader   :armor1_id                # 盾 ID
  17.   attr_reader   :armor2_id                # 头防具 ID
  18.   attr_reader   :armor3_id                # 身体体防具 ID
  19.   attr_reader   :armor4_id                # 装饰品 ID
  20.   attr_reader   :level                    # 水平
  21.   attr_reader   :exp                      # EXP
  22.   attr_reader   :skills                   # 特技
  23.   attr_accessor :qianli
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化对像
  26.   #     actor_id : 角色 ID
  27.   #--------------------------------------------------------------------------
  28.   def initialize(actor_id)
  29.     super()
  30.     setup(actor_id)
  31.   end
  32.   
  33.   #def qianli(ql)
  34.     #@qianli += ql
  35.     #@qianli = [@qianli, 0].max
  36.     #return @qianli
  37.   #end
  38.   
  39.   #def qianli()
  40.     #return @qianli
  41.   #end
  42.   #--------------------------------------------------------------------------
  43.   # ● 设置
  44.   #     actor_id : 角色 ID
  45.   #--------------------------------------------------------------------------
  46.   def setup(actor_id)
  47.     actor = $data_actors[actor_id]
  48.     @qianli = 0
  49.     @actor_id = actor_id
  50.     @name = actor.name
  51.     @character_name = actor.character_name
  52.     @character_hue = actor.character_hue
  53.     @battler_name = actor.battler_name
  54.     @battler_hue = actor.battler_hue
  55.     @class_id = actor.class_id
  56.     @weapon_id = actor.weapon_id
  57.     @armor1_id = actor.armor1_id
  58.     @armor2_id = actor.armor2_id
  59.     @armor3_id = actor.armor3_id
  60.     @armor4_id = actor.armor4_id
  61.     @level = actor.initial_level
  62.     @exp_list = Array.new(101)
  63.     make_exp_list
  64.     @exp = @exp_list[@level]
  65.     @skills = []
  66.     @hp = maxhp
  67.     @sp = maxsp
  68.     @states = []
  69.     @states_turn = {}
  70.     @maxhp_plus = 0
  71.     @maxsp_plus = 0
  72.     @str_plus = 0
  73.     @dex_plus = 0
  74.     @agi_plus = 0
  75.     @int_plus = 0
  76.     # 学会特技
  77.     for i in 1..@level
  78.       for j in $data_classes[@class_id].learnings
  79.         if j.level == i
  80.           learn_skill(j.skill_id)
  81.         end
  82.       end
  83.     end
  84.     # 刷新自动状态
  85.     update_auto_state(nil, $data_armors[@armor1_id])
  86.     update_auto_state(nil, $data_armors[@armor2_id])
  87.     update_auto_state(nil, $data_armors[@armor3_id])
  88.     update_auto_state(nil, $data_armors[@armor4_id])
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 获取角色 ID
  92.   #--------------------------------------------------------------------------
  93.   def id
  94.     return @actor_id
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 获取索引
  98.   #--------------------------------------------------------------------------
  99.   def index
  100.     return $game_party.actors.index(self)
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 计算 EXP
  104.   #--------------------------------------------------------------------------
  105.   def make_exp_list
  106.     actor = $data_actors[@actor_id]
  107.     @exp_list[1] = 0
  108.     pow_i = 2.4 + actor.exp_inflation / 100.0
  109.     for i in 2..100
  110.       if i > actor.final_level
  111.         @exp_list[i] = 0
  112.       else
  113.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  114.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  115.       end
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 取得属性修正值
  120.   #     element_id : 属性 ID
  121.   #--------------------------------------------------------------------------
  122.   def element_rate(element_id)
  123.     # 获取对应属性有效度的数值
  124.     table = [0,120,110,100,90,80,5]
  125.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  126.     # 防具能防御本属性的情况下效果减半
  127.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  128.       armor = $data_armors[i]
  129.       if armor != nil and armor.guard_element_set.include?(element_id)
  130.         result /= 2
  131.       end
  132.     end
  133.     # 状态能防御本属性的情况下效果减半
  134.     for i in @states
  135.       if $data_states[i].guard_element_set.include?(element_id)
  136.         result /= 2
  137.       end
  138.     end
  139.     # 过程结束
  140.     return result
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 获取属性有效度
  144.   #--------------------------------------------------------------------------
  145.   def state_ranks
  146.     return $data_classes[@class_id].state_ranks
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 判定防御属性
  150.   #     state_id : 属性 ID
  151.   #--------------------------------------------------------------------------
  152.   def state_guard?(state_id)
  153.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  154.       armor = $data_armors[i]
  155.       if armor != nil
  156.         if armor.guard_state_set.include?(state_id)
  157.           return true
  158.         end
  159.       end
  160.     end
  161.     return false
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 获取普通攻击属性
  165.   #--------------------------------------------------------------------------
  166.   def element_set
  167.     weapon = $data_weapons[@weapon_id]
  168.     return weapon != nil ? weapon.element_set : []
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 获取普通攻击状态变化 (+)
  172.   #--------------------------------------------------------------------------
  173.   def plus_state_set
  174.     weapon = $data_weapons[@weapon_id]
  175.     return weapon != nil ? weapon.plus_state_set : []
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 获取普通攻击状态变化 (-)
  179.   #--------------------------------------------------------------------------
  180.   def minus_state_set
  181.     weapon = $data_weapons[@weapon_id]
  182.     return weapon != nil ? weapon.minus_state_set : []
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 获取 MaxHP
  186.   #--------------------------------------------------------------------------
  187.   def maxhp
  188.     n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
  189.     for i in @states
  190.       n *= $data_states[i].maxhp_rate / 100.0
  191.     end
  192.     n = [[Integer(n), 1].max, 9999].min
  193.     n.truncate
  194.     return n
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 获取基本 MaxHP
  198.   #--------------------------------------------------------------------------
  199.   def base_maxhp
  200.     return $data_actors[@actor_id].parameters[0, @level]
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 获取基本 MaxSP
  204.   #--------------------------------------------------------------------------
  205.   def base_maxsp
  206.     return $data_actors[@actor_id].parameters[1, @level]
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 获取基本力量
  210.   #--------------------------------------------------------------------------
  211.   def base_str
  212.     n = $data_actors[@actor_id].parameters[2, @level]
  213.     weapon = $data_weapons[@weapon_id]
  214.     armor1 = $data_armors[@armor1_id]
  215.     armor2 = $data_armors[@armor2_id]
  216.     armor3 = $data_armors[@armor3_id]
  217.     armor4 = $data_armors[@armor4_id]
  218.     n += weapon != nil ? weapon.str_plus : 0
  219.     n += armor1 != nil ? armor1.str_plus : 0
  220.     n += armor2 != nil ? armor2.str_plus : 0
  221.     n += armor3 != nil ? armor3.str_plus : 0
  222.     n += armor4 != nil ? armor4.str_plus : 0
  223.     return [[n, 1].max, 9999].min
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 获取基本灵巧
  227.   #--------------------------------------------------------------------------
  228.   def base_dex
  229.     n = $data_actors[@actor_id].parameters[3, @level]
  230.     weapon = $data_weapons[@weapon_id]
  231.     armor1 = $data_armors[@armor1_id]
  232.     armor2 = $data_armors[@armor2_id]
  233.     armor3 = $data_armors[@armor3_id]
  234.     armor4 = $data_armors[@armor4_id]
  235.     n += weapon != nil ? weapon.dex_plus : 0
  236.     n += armor1 != nil ? armor1.dex_plus : 0
  237.     n += armor2 != nil ? armor2.dex_plus : 0
  238.     n += armor3 != nil ? armor3.dex_plus : 0
  239.     n += armor4 != nil ? armor4.dex_plus : 0
  240.     return [[n, 1].max, 9999].min
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 获取基本速度
  244.   #--------------------------------------------------------------------------
  245.   def base_agi
  246.     n = $data_actors[@actor_id].parameters[4, @level]
  247.     weapon = $data_weapons[@weapon_id]
  248.     armor1 = $data_armors[@armor1_id]
  249.     armor2 = $data_armors[@armor2_id]
  250.     armor3 = $data_armors[@armor3_id]
  251.     armor4 = $data_armors[@armor4_id]
  252.     n += weapon != nil ? weapon.agi_plus : 0
  253.     n += armor1 != nil ? armor1.agi_plus : 0
  254.     n += armor2 != nil ? armor2.agi_plus : 0
  255.     n += armor3 != nil ? armor3.agi_plus : 0
  256.     n += armor4 != nil ? armor4.agi_plus : 0
  257.    

  258.     for kds in @skills
  259.       if $data_skills[kds].element_set.include?(40)
  260.         n = n*120/100
  261.         break
  262.       elsif $data_skills[kds].element_set.include?(39)
  263.         n = n*110/100
  264.         break
  265.       end
  266.     end
  267.     for kds in @skills
  268.       if $data_skills[kds].element_set.include?(70)
  269.         n = n*85/100
  270.         break
  271.       end
  272.     end
  273.     return [[n, 1].max, 9999].min
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 获取基本魔力
  277.   #--------------------------------------------------------------------------
  278.   def base_int
  279.     n = $data_actors[@actor_id].parameters[5, @level]
  280.     weapon = $data_weapons[@weapon_id]
  281.     armor1 = $data_armors[@armor1_id]
  282.     armor2 = $data_armors[@armor2_id]
  283.     armor3 = $data_armors[@armor3_id]
  284.     armor4 = $data_armors[@armor4_id]
  285.     n += weapon != nil ? weapon.int_plus : 0
  286.     n += armor1 != nil ? armor1.int_plus : 0
  287.     n += armor2 != nil ? armor2.int_plus : 0
  288.     n += armor3 != nil ? armor3.int_plus : 0
  289.     n += armor4 != nil ? armor4.int_plus : 0
  290.     return [[n, 1].max, 9999].min
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 获取基本攻击力
  294.   #--------------------------------------------------------------------------
  295.   def base_atk
  296.     weapon = $data_weapons[@weapon_id]
  297.     return weapon != nil ? weapon.atk : 0
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 获取基本物理防御
  301.   #--------------------------------------------------------------------------
  302.   def base_pdef
  303.     weapon = $data_weapons[@weapon_id]
  304.     armor1 = $data_armors[@armor1_id]
  305.     armor2 = $data_armors[@armor2_id]
  306.     armor3 = $data_armors[@armor3_id]
  307.     armor4 = $data_armors[@armor4_id]
  308.     pdef1 = weapon != nil ? weapon.pdef : 0
  309.     pdef2 = armor1 != nil ? armor1.pdef : 0
  310.     pdef3 = armor2 != nil ? armor2.pdef : 0
  311.     pdef4 = armor3 != nil ? armor3.pdef : 0
  312.     pdef5 = armor4 != nil ? armor4.pdef : 0
  313.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 获取基本魔法防御
  317.   #--------------------------------------------------------------------------
  318.   def base_mdef
  319.     weapon = $data_weapons[@weapon_id]
  320.     armor1 = $data_armors[@armor1_id]
  321.     armor2 = $data_armors[@armor2_id]
  322.     armor3 = $data_armors[@armor3_id]
  323.     armor4 = $data_armors[@armor4_id]
  324.     mdef1 = weapon != nil ? weapon.mdef : 0
  325.     mdef2 = armor1 != nil ? armor1.mdef : 0
  326.     mdef3 = armor2 != nil ? armor2.mdef : 0
  327.     mdef4 = armor3 != nil ? armor3.mdef : 0
  328.     mdef5 = armor4 != nil ? armor4.mdef : 0
  329.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 获取基本回避修正
  333.   #--------------------------------------------------------------------------
  334.   def base_eva
  335.     armor1 = $data_armors[@armor1_id]
  336.     armor2 = $data_armors[@armor2_id]
  337.     armor3 = $data_armors[@armor3_id]
  338.     armor4 = $data_armors[@armor4_id]
  339.     eva1 = armor1 != nil ? armor1.eva : 0
  340.     eva2 = armor2 != nil ? armor2.eva : 0
  341.     eva3 = armor3 != nil ? armor3.eva : 0
  342.     eva4 = armor4 != nil ? armor4.eva : 0
  343.     return eva1 + eva2 + eva3 + eva4
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 普通攻击 获取攻击方动画 ID
  347.   #--------------------------------------------------------------------------
  348.   def animation1_id
  349.     weapon = $data_weapons[@weapon_id]
  350.     return weapon != nil ? weapon.animation1_id : 0
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 普通攻击 获取对像方动画 ID
  354.   #--------------------------------------------------------------------------
  355.   def animation2_id
  356.     weapon = $data_weapons[@weapon_id]
  357.     return weapon != nil ? weapon.animation2_id : 0
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● 获取类名
  361.   #--------------------------------------------------------------------------
  362.   def class_name
  363.     return $data_classes[@class_id].name
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 获取 EXP 字符串
  367.   #--------------------------------------------------------------------------
  368.   def exp_s
  369.     return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 获取下一等级的 EXP 字符串
  373.   #--------------------------------------------------------------------------
  374.   def next_exp_s
  375.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 获取离下一等级还需的 EXP 字符串
  379.   #--------------------------------------------------------------------------
  380.   def next_rest_exp_s
  381.     return @exp_list[@level+1] > 0 ?
  382.       (@exp_list[@level+1] - @exp).to_s : "-------"
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ● 更新自动状态
  386.   #     old_armor : 卸下防具
  387.   #     new_armor : 装备防具
  388.   #--------------------------------------------------------------------------
  389.   def update_auto_state(old_armor, new_armor)
  390.     # 强制解除卸下防具的自动状态
  391.     if old_armor != nil and old_armor.auto_state_id != 0
  392.       remove_state(old_armor.auto_state_id, true)
  393.     end
  394.     # 强制附加装备防具的自动状态
  395.     if new_armor != nil and new_armor.auto_state_id != 0
  396.       add_state(new_armor.auto_state_id, true)
  397.     end
  398.   end
  399.   #--------------------------------------------------------------------------
  400.   # ● 装备固定判定
  401.   #     equip_type : 装备类型
  402.   #--------------------------------------------------------------------------
  403.   def equip_fix?(equip_type)
  404.     case equip_type
  405.     when 0  # 武器
  406.       return $data_actors[@actor_id].weapon_fix
  407.     when 1  # 盾
  408.       return $data_actors[@actor_id].armor1_fix
  409.     when 2  # 头
  410.       return $data_actors[@actor_id].armor2_fix
  411.     when 3  # 身体
  412.       return $data_actors[@actor_id].armor3_fix
  413.     when 4  # 装饰品
  414.       return $data_actors[@actor_id].armor4_fix
  415.     end
  416.     return false
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ● 变更装备
  420.   #     equip_type : 装备类型
  421.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  422.   #--------------------------------------------------------------------------
  423.   def equip(equip_type, id)
  424.     case equip_type
  425.     when 0  # 武器
  426.       if id == 0 or $game_party.weapon_number(id) > 0
  427.         $game_party.gain_weapon(@weapon_id, 1)
  428.         @weapon_id = id
  429.         $game_party.lose_weapon(id, 1)
  430.       end
  431.     when 1  # 盾
  432.       if id == 0 or $game_party.armor_number(id) > 0
  433.         update_auto_state($data_armors[@armor1_id], $data_armors[id])
  434.         $game_party.gain_armor(@armor1_id, 1)
  435.         @armor1_id = id
  436.         $game_party.lose_armor(id, 1)
  437.       end
  438.     when 2  # 头
  439.       if id == 0 or $game_party.armor_number(id) > 0
  440.         update_auto_state($data_armors[@armor2_id], $data_armors[id])
  441.         $game_party.gain_armor(@armor2_id, 1)
  442.         @armor2_id = id
  443.         $game_party.lose_armor(id, 1)
  444.       end
  445.     when 3  # 身体
  446.       if id == 0 or $game_party.armor_number(id) > 0
  447.         update_auto_state($data_armors[@armor3_id], $data_armors[id])
  448.         $game_party.gain_armor(@armor3_id, 1)
  449.         @armor3_id = id
  450.         $game_party.lose_armor(id, 1)
  451.       end
  452.     when 4  # 装饰品
  453.       if id == 0 or $game_party.armor_number(id) > 0
  454.         update_auto_state($data_armors[@armor4_id], $data_armors[id])
  455.         $game_party.gain_armor(@armor4_id, 1)
  456.         @armor4_id = id
  457.         $game_party.lose_armor(id, 1)
  458.       end
  459.     end
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ● 可以装备判定
  463.   #     item : 物品
  464.   #--------------------------------------------------------------------------
  465.   def equippable?(item)
  466.     # 武器的情况
  467.     if item.is_a?(RPG::Weapon)
  468.       # 包含当前的职业可以装备武器的场合
  469.       if $data_classes[@class_id].weapon_set.include?(item.id)
  470.         return true
  471.       end
  472.     end
  473.     # 防具的情况
  474.     if item.is_a?(RPG::Armor)
  475.       # 不包含当前的职业可以装备武器的场合
  476.       if $data_classes[@class_id].armor_set.include?(item.id)
  477.         return true
  478.       end
  479.     end
  480.     return false
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 更改 EXP
  484.   #     exp : 新的 EXP
  485.   #--------------------------------------------------------------------------
  486.   def exp=(exp)
  487.     @exp = [[exp, 9999999].min, 0].max
  488.     # 升级
  489.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  490.       @level += 1
  491.       @qianli += 5     
  492.       # 学会特技
  493.       for j in $data_classes[@class_id].learnings
  494.         if j.level == @level
  495.           learn_skill(j.skill_id)
  496.         end
  497.       end
  498.     end
  499.     # 降级
  500.     while @exp < @exp_list[@level]
  501.       @level -= 1
  502.       @qianli -= 5
  503.       @qianli = [@qianli , 0].max
  504.     end
  505.     # 修正当前的 HP 与 SP 超过最大值
  506.     @hp = [@hp, self.maxhp].min
  507.     @sp = [@sp, self.maxsp].min
  508.   end
  509.   #--------------------------------------------------------------------------
  510.   # ● 更改水品
  511.   #     level : 新的等级
  512.   #--------------------------------------------------------------------------
  513.   def level=(level)
  514.     # 检查上下限
  515.     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  516.     # 更改 EXP
  517.     self.exp = @exp_list[level]
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● 觉悟特技
  521.   #     skill_id : 特技 ID
  522.   #--------------------------------------------------------------------------
  523.   def learn_skill(skill_id)
  524.     if skill_id > 0 and not skill_learn?(skill_id)
  525.       @skills.push(skill_id)
  526.       @skills.sort!
  527.     end
  528.   end
  529.   #--------------------------------------------------------------------------
  530.   # ● 遗忘特技
  531.   #     skill_id : 特技 ID
  532.   #--------------------------------------------------------------------------
  533.   def forget_skill(skill_id)
  534.     @skills.delete(skill_id)
  535.   end
  536.   #--------------------------------------------------------------------------
  537.   # ● 已经学会的特技判定
  538.   #     skill_id : 特技 ID
  539.   #--------------------------------------------------------------------------
  540.   def skill_learn?(skill_id)
  541.     return @skills.include?(skill_id)
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ● 可以使用特技判定
  545.   #     skill_id : 特技 ID
  546.   #--------------------------------------------------------------------------
  547.   def skill_can_use?(skill_id)
  548.     if not skill_learn?(skill_id)
  549.       return false
  550.     end
  551.     return super
  552.   end

  553.   #--------------------------------------------------------------------------
  554.   # ● 更改职业 ID
  555.   #     class_id : 新的职业 ID
  556.   #--------------------------------------------------------------------------
  557.   def class_id=(class_id)
  558.     if $data_classes[class_id] != nil
  559.       @class_id = class_id
  560.       # 避开无法装备的物品
  561.       unless equippable?($data_weapons[@weapon_id])
  562.         equip(0, 0)
  563.       end
  564.       unless equippable?($data_armors[@armor1_id])
  565.         equip(1, 0)
  566.       end
  567.       unless equippable?($data_armors[@armor2_id])
  568.         equip(2, 0)
  569.       end
  570.       unless equippable?($data_armors[@armor3_id])
  571.         equip(3, 0)
  572.       end
  573.       unless equippable?($data_armors[@armor4_id])
  574.         equip(4, 0)
  575.       end
  576.     end
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 更改图形
  580.   #     character_name : 新的角色 文件名
  581.   #     character_hue  : 新的角色 色相
  582.   #     battler_name   : 新的战斗者 文件名
  583.   #     battler_hue    : 新的战斗者 色相
  584.   #--------------------------------------------------------------------------
  585.   def set_graphic(character_name, character_hue, battler_name, battler_hue)
  586.     @character_name = character_name
  587.     @character_hue = character_hue
  588.     @battler_name = battler_name
  589.     @battler_hue = battler_hue
  590.   end
  591.   #--------------------------------------------------------------------------
  592.   #--------------------------------------------------------------------------
  593.   # ● 取得战斗画面的 X 坐标
  594.   #--------------------------------------------------------------------------
  595.   def screen_x
  596.     $kds_x = 260
  597.     if self.id < 20
  598.      case self.ac_id
  599.      when 0
  600.        return 560 + $kds_x
  601.      when 1
  602.        return 620 + $kds_x
  603.      when 2
  604.        return 680 + $kds_x
  605.      when 3
  606.       return 740 + $kds_x
  607.      end
  608.     else
  609.      case $game_actors[self.zhuren].ac_id
  610.      when 0
  611.       return 500 + $kds_x
  612.      when 1
  613.       return 560 + $kds_x
  614.      when 2
  615.       return 620 + $kds_x
  616.      when 3
  617.       return 680 + $kds_x
  618.      end
  619.     end
  620.   end
  621.   
  622.   def s_x
  623.     if @s_x == nil
  624.       @s_x = screen_x
  625.       return screen_x
  626.     else
  627.       return @s_x
  628.     end
  629.   end
  630.   def s_x=(s_x)
  631.      @s_x = s_x
  632.       return @s_x
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 取得战斗画面的 Y 坐标
  636.   #--------------------------------------------------------------------------
  637.   def screen_y
  638.     $kds_y = 70
  639.     if self.id < 20
  640.      case self.ac_id
  641.      when 0
  642.       return 430 + $kds_y
  643.      when 1
  644.       return 390 + $kds_y
  645.      when 2
  646.       return 350 + $kds_y
  647.      when 3
  648.       return 310 + $kds_y
  649.      end
  650.     else
  651.      case $game_actors[self.zhuren].ac_id
  652.      when 0
  653.       return 370 + $kds_y
  654.      when 1
  655.       return 330 + $kds_y
  656.      when 2
  657.       return 290 + $kds_y
  658.      when 3
  659.       return 250 + $kds_y
  660.      end
  661.     end
  662.   end
  663.   def s_y
  664.     if @s_y == nil
  665.       @s_y = screen_y
  666.       return screen_y
  667.     else
  668.       return @s_y
  669.     end
  670.   end
  671.   def s_y=(s_y)
  672.      @s_y = s_y
  673.       return @s_y
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ● 取得战斗画面的 Z 坐标
  677.   #--------------------------------------------------------------------------
  678.   def screen_z
  679.     # 返回计算后的队伍 Z 坐标的排列顺序
  680.     if self.index != nil
  681.       return 4 - self.index
  682.     else
  683.       return 0
  684.     end
  685.   end
  686.   def s_z
  687.     if @s_z == nil
  688.       @s_z = screen_z
  689.       return screen_z
  690.     else
  691.       return @s_z
  692.     end
  693.   end
  694.   def s_z=(s_z)
  695.      @s_z = s_z
  696.       return @s_z
  697.   end
  698. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
3
发表于 2011-6-5 14:53:41 | 只看该作者
Game_Actor类中没有定义remove_states_auto2
remove_states_auto2的效果是?

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
2
发表于 2011-6-5 14:53:00 | 只看该作者
好像是remove_states_auto2这个方法不存在本类及其父类中?
搜索
  1. def remove_states_auto2
复制代码
看看存不存在这个类中.


你这个if id>20应该是ID20以后的角色是宠物吧?宠物出场就用了def remove_states_auto2这个方法,但找不到.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 06:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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