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

Project1

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

空手时攻击力大于有装备攻击力?!

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
跳转到指定楼层
1
发表于 2008-1-12 05:57:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
教程里给的空手攻击力算法是根据属性值算的,所以导致角色99级的时候装最好的武器攻击力都没有空手攻击力高……所以,如何设置成
装武器时攻击力 = 空手攻击力+武器攻击力 ?
这样就会去掉空手比装武器还厉害的bug。偶是脚本菜鸟……请问怎么写呃……
谢谢!
版务信息:本贴由楼主自主结贴~
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
2
 楼主| 发表于 2008-1-12 05:57:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
教程里给的空手攻击力算法是根据属性值算的,所以导致角色99级的时候装最好的武器攻击力都没有空手攻击力高……所以,如何设置成
装武器时攻击力 = 空手攻击力+武器攻击力 ?
这样就会去掉空手比装武器还厉害的bug。偶是脚本菜鸟……请问怎么写呃……
谢谢!
版务信息:本贴由楼主自主结贴~
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
3
发表于 2008-1-12 06:09:08 | 只看该作者
把脚本贴出来 我来改一下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
4
 楼主| 发表于 2008-1-12 06:25:52 | 只看该作者

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

  6. class Game_Actor < Game_Battler
  7.   #--------------------------------------------------------------------------
  8.   # ● 定义实例变量
  9.   #--------------------------------------------------------------------------
  10.   attr_reader   :name                     # 名称
  11.   attr_reader   :character_name           # 角色 文件名
  12.   attr_reader   :battler_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.   #--------------------------------------------------------------------------
  24.   # ● 初始化对像
  25.   #     actor_id : 角色 ID
  26.   #--------------------------------------------------------------------------
  27.   def initialize(actor_id)
  28.     super()
  29.     setup(actor_id)
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 设置
  33.   #     actor_id : 角色 ID
  34.   #--------------------------------------------------------------------------
  35.   def setup(actor_id)
  36.     actor = $data_actors[actor_id]
  37.     @actor_id = actor_id
  38.     @name = actor.name
  39.     @character_name = actor.character_name
  40.     @character_hue = actor.character_hue
  41.     @battler_name = actor.battler_name
  42.     @battler_hue = actor.battler_hue
  43.     @class_id = actor.class_id
  44.     @weapon_id = actor.weapon_id
  45.     @armor1_id = actor.armor1_id
  46.     @armor2_id = actor.armor2_id
  47.     @armor3_id = actor.armor3_id
  48.     @armor4_id = actor.armor4_id
  49.     @level = actor.initial_level
  50.     @exp_list = Array.new(101)
  51.     make_exp_list
  52.     @exp = @exp_list[@level]
  53.     @skills = []
  54.     @hp = maxhp
  55.     @sp = maxsp
  56.     @states = []
  57.     @states_turn = {}
  58.     @maxhp_plus = 0
  59.     @maxsp_plus = 0
  60.     @str_plus = 0
  61.     @dex_plus = 0
  62.     @agi_plus = 0
  63.     @int_plus = 0
  64.     # 学会特技
  65.     for i in 1..@level
  66.       for j in $data_classes[@class_id].learnings
  67.         if j.level == i
  68.           learn_skill(j.skill_id)
  69.         end
  70.       end
  71.     end
  72.     # 刷新自动状态
  73.     update_auto_state(nil, $data_armors[@armor1_id])
  74.     update_auto_state(nil, $data_armors[@armor2_id])
  75.     update_auto_state(nil, $data_armors[@armor3_id])
  76.     update_auto_state(nil, $data_armors[@armor4_id])
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 获取角色 ID
  80.   #--------------------------------------------------------------------------
  81.   def id
  82.     return @actor_id
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 获取索引
  86.   #--------------------------------------------------------------------------
  87.   def index
  88.     return $game_party.actors.index(self)
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 计算 EXP
  92.   #--------------------------------------------------------------------------
  93.   def make_exp_list
  94.     actor = $data_actors[@actor_id]
  95.     @exp_list[1] = 0
  96.     pow_i = 2.4 + actor.exp_inflation / 100.0
  97.     for i in 2..100
  98.       if i > actor.final_level
  99.         @exp_list[i] = 0
  100.       else
  101.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  102.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  103.       end
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 取得属性修正值
  108.   #     element_id : 属性 ID
  109.   #--------------------------------------------------------------------------
  110.   def element_rate(element_id)
  111.     # 获取对应属性有效度的数值
  112.     table = [0,200,150,100,50,0,-100]
  113.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  114.     # 防具能防御本属性的情况下效果减半
  115.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  116.       armor = $data_armors[i]
  117.       if armor != nil and armor.guard_element_set.include?(element_id)
  118.         result /= 2
  119.       end
  120.     end
  121.     # 状态能防御本属性的情况下效果减半
  122.     for i in @states
  123.       if $data_states[i].guard_element_set.include?(element_id)
  124.         result /= 2
  125.       end
  126.     end
  127.     # 过程结束
  128.     return result
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 获取属性有效度
  132.   #--------------------------------------------------------------------------
  133.   def state_ranks
  134.     return $data_classes[@class_id].state_ranks
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 判定防御属性
  138.   #     state_id : 属性 ID
  139.   #--------------------------------------------------------------------------
  140.   def state_guard?(state_id)
  141.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  142.       armor = $data_armors[i]
  143.       if armor != nil
  144.         if armor.guard_state_set.include?(state_id)
  145.           return true
  146.         end
  147.       end
  148.     end
  149.     return false
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 获取普通攻击属性
  153.   #--------------------------------------------------------------------------
  154.   def element_set
  155.     weapon = $data_weapons[@weapon_id]
  156.     return weapon != nil ? weapon.element_set : []
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 获取普通攻击状态变化 (+)
  160.   #--------------------------------------------------------------------------
  161.   def plus_state_set
  162.     weapon = $data_weapons[@weapon_id]
  163.     return weapon != nil ? weapon.plus_state_set : []
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 获取普通攻击状态变化 (-)
  167.   #--------------------------------------------------------------------------
  168.   def minus_state_set
  169.     weapon = $data_weapons[@weapon_id]
  170.     return weapon != nil ? weapon.minus_state_set : []
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 获取 MaxHP
  174.   #--------------------------------------------------------------------------
  175.   def maxhp
  176.     n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
  177.     for i in @states
  178.       n *= $data_states[i].maxhp_rate / 100.0
  179.     end
  180.     n = [[Integer(n), 1].max, 9999].min
  181.     return n
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 获取基本 MaxHP
  185.   #--------------------------------------------------------------------------
  186.   def base_maxhp
  187.     return $data_actors[@actor_id].parameters[0, @level]
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● 获取基本 MaxSP
  191.   #--------------------------------------------------------------------------
  192.   def base_maxsp
  193.     return $data_actors[@actor_id].parameters[1, @level]
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 获取基本力量
  197.   #--------------------------------------------------------------------------
  198.   def base_str
  199.     n = $data_actors[@actor_id].parameters[2, @level]
  200.     weapon = $data_weapons[@weapon_id]
  201.     armor1 = $data_armors[@armor1_id]
  202.     armor2 = $data_armors[@armor2_id]
  203.     armor3 = $data_armors[@armor3_id]
  204.     armor4 = $data_armors[@armor4_id]
  205.     n += weapon != nil ? weapon.str_plus : 0
  206.     n += armor1 != nil ? armor1.str_plus : 0
  207.     n += armor2 != nil ? armor2.str_plus : 0
  208.     n += armor3 != nil ? armor3.str_plus : 0
  209.     n += armor4 != nil ? armor4.str_plus : 0
  210.     return [[n, 1].max, 999].min
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 获取基本灵巧
  214.   #--------------------------------------------------------------------------
  215.   def base_dex
  216.     n = $data_actors[@actor_id].parameters[3, @level]
  217.     weapon = $data_weapons[@weapon_id]
  218.     armor1 = $data_armors[@armor1_id]
  219.     armor2 = $data_armors[@armor2_id]
  220.     armor3 = $data_armors[@armor3_id]
  221.     armor4 = $data_armors[@armor4_id]
  222.     n += weapon != nil ? weapon.dex_plus : 0
  223.     n += armor1 != nil ? armor1.dex_plus : 0
  224.     n += armor2 != nil ? armor2.dex_plus : 0
  225.     n += armor3 != nil ? armor3.dex_plus : 0
  226.     n += armor4 != nil ? armor4.dex_plus : 0
  227.     return [[n, 1].max, 999].min
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 获取基本速度
  231.   #--------------------------------------------------------------------------
  232.   def base_agi
  233.     n = $data_actors[@actor_id].parameters[4, @level]
  234.     weapon = $data_weapons[@weapon_id]
  235.     armor1 = $data_armors[@armor1_id]
  236.     armor2 = $data_armors[@armor2_id]
  237.     armor3 = $data_armors[@armor3_id]
  238.     armor4 = $data_armors[@armor4_id]
  239.     n += weapon != nil ? weapon.agi_plus : 0
  240.     n += armor1 != nil ? armor1.agi_plus : 0
  241.     n += armor2 != nil ? armor2.agi_plus : 0
  242.     n += armor3 != nil ? armor3.agi_plus : 0
  243.     n += armor4 != nil ? armor4.agi_plus : 0
  244.     return [[n, 1].max, 999].min
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 获取基本魔力
  248.   #--------------------------------------------------------------------------
  249.   def base_int
  250.     n = $data_actors[@actor_id].parameters[5, @level]
  251.     weapon = $data_weapons[@weapon_id]
  252.     armor1 = $data_armors[@armor1_id]
  253.     armor2 = $data_armors[@armor2_id]
  254.     armor3 = $data_armors[@armor3_id]
  255.     armor4 = $data_armors[@armor4_id]
  256.     n += weapon != nil ? weapon.int_plus : 0
  257.     n += armor1 != nil ? armor1.int_plus : 0
  258.     n += armor2 != nil ? armor2.int_plus : 0
  259.     n += armor3 != nil ? armor3.int_plus : 0
  260.     n += armor4 != nil ? armor4.int_plus : 0
  261.     return [[n, 1].max, 999].min
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 获取基本攻击力
  265.   #--------------------------------------------------------------------------
  266.   def base_atk
  267.     weapon = $data_weapons[@weapon_id]
  268.     return weapon != nil ? weapon.atk : 0
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 获取基本物理防御
  272.   #--------------------------------------------------------------------------
  273.   def base_pdef
  274.     weapon = $data_weapons[@weapon_id]
  275.     armor1 = $data_armors[@armor1_id]
  276.     armor2 = $data_armors[@armor2_id]
  277.     armor3 = $data_armors[@armor3_id]
  278.     armor4 = $data_armors[@armor4_id]
  279.     pdef1 = weapon != nil ? weapon.pdef : 0
  280.     pdef2 = armor1 != nil ? armor1.pdef : 0
  281.     pdef3 = armor2 != nil ? armor2.pdef : 0
  282.     pdef4 = armor3 != nil ? armor3.pdef : 0
  283.     pdef5 = armor4 != nil ? armor4.pdef : 0
  284.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● 获取基本魔法防御
  288.   #--------------------------------------------------------------------------
  289.   def base_mdef
  290.     weapon = $data_weapons[@weapon_id]
  291.     armor1 = $data_armors[@armor1_id]
  292.     armor2 = $data_armors[@armor2_id]
  293.     armor3 = $data_armors[@armor3_id]
  294.     armor4 = $data_armors[@armor4_id]
  295.     mdef1 = weapon != nil ? weapon.mdef : 0
  296.     mdef2 = armor1 != nil ? armor1.mdef : 0
  297.     mdef3 = armor2 != nil ? armor2.mdef : 0
  298.     mdef4 = armor3 != nil ? armor3.mdef : 0
  299.     mdef5 = armor4 != nil ? armor4.mdef : 0
  300.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 获取基本回避修正
  304.   #--------------------------------------------------------------------------
  305.   def base_eva
  306.     armor1 = $data_armors[@armor1_id]
  307.     armor2 = $data_armors[@armor2_id]
  308.     armor3 = $data_armors[@armor3_id]
  309.     armor4 = $data_armors[@armor4_id]
  310.     eva1 = armor1 != nil ? armor1.eva : 0
  311.     eva2 = armor2 != nil ? armor2.eva : 0
  312.     eva3 = armor3 != nil ? armor3.eva : 0
  313.     eva4 = armor4 != nil ? armor4.eva : 0
  314.     return eva1 + eva2 + eva3 + eva4
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● 普通攻击 获取攻击方动画 ID
  318.   #--------------------------------------------------------------------------
  319.   def animation1_id
  320.     weapon = $data_weapons[@weapon_id]
  321.     return weapon != nil ? weapon.animation1_id : 0
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 普通攻击 获取对像方动画 ID
  325.   #--------------------------------------------------------------------------
  326.   def animation2_id
  327.     weapon = $data_weapons[@weapon_id]
  328.     return weapon != nil ? weapon.animation2_id : 0
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 获取类名
  332.   #--------------------------------------------------------------------------
  333.   def class_name
  334.     return $data_classes[@class_id].name
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● 获取 EXP 字符串
  338.   #--------------------------------------------------------------------------
  339.   def exp_s
  340.     return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ● 获取下一等级的 EXP 字符串
  344.   #--------------------------------------------------------------------------
  345.   def next_exp_s
  346.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● 获取离下一等级还需的 EXP 字符串
  350.   #--------------------------------------------------------------------------
  351.   def next_rest_exp_s
  352.     return @exp_list[@level+1] > 0 ?
  353.       (@exp_list[@level+1] - @exp).to_s : "-------"
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● 更新自动状态
  357.   #     old_armor : 卸下防具
  358.   #     new_armor : 装备防具
  359.   #--------------------------------------------------------------------------
  360.   def update_auto_state(old_armor, new_armor)
  361.     # 强制解除卸下防具的自动状态
  362.     if old_armor != nil and old_armor.auto_state_id != 0
  363.       remove_state(old_armor.auto_state_id, true)
  364.     end
  365.     # 强制附加装备防具的自动状态
  366.     if new_armor != nil and new_armor.auto_state_id != 0
  367.       add_state(new_armor.auto_state_id, true)
  368.     end
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 装备固定判定
  372.   #     equip_type : 装备类型
  373.   #--------------------------------------------------------------------------
  374.   def equip_fix?(equip_type)
  375.     case equip_type
  376.     when 0  # 武器
  377.       return $data_actors[@actor_id].weapon_fix
  378.     when 1  # 盾
  379.       return $data_actors[@actor_id].armor1_fix
  380.     when 2  # 头
  381.       return $data_actors[@actor_id].armor2_fix
  382.     when 3  # 身体
  383.       return $data_actors[@actor_id].armor3_fix
  384.     when 4  # 装饰品
  385.       return $data_actors[@actor_id].armor4_fix
  386.     end
  387.     return false
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ● 变更装备
  391.   #     equip_type : 装备类型
  392.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  393.   #--------------------------------------------------------------------------
  394.   def equip(equip_type, id)
  395.     case equip_type
  396.     when 0  # 武器
  397.       if id == 0 or $game_party.weapon_number(id) > 0
  398.         $game_party.gain_weapon(@weapon_id, 1)
  399.         @weapon_id = id
  400.         $game_party.lose_weapon(id, 1)
  401.       end
  402.     when 1  # 盾
  403.       if id == 0 or $game_party.armor_number(id) > 0
  404.         update_auto_state($data_armors[@armor1_id], $data_armors[id])
  405.         $game_party.gain_armor(@armor1_id, 1)
  406.         @armor1_id = id
  407.         $game_party.lose_armor(id, 1)
  408.       end
  409.     when 2  # 头
  410.       if id == 0 or $game_party.armor_number(id) > 0
  411.         update_auto_state($data_armors[@armor2_id], $data_armors[id])
  412.         $game_party.gain_armor(@armor2_id, 1)
  413.         @armor2_id = id
  414.         $game_party.lose_armor(id, 1)
  415.       end
  416.     when 3  # 身体
  417.       if id == 0 or $game_party.armor_number(id) > 0
  418.         update_auto_state($data_armors[@armor3_id], $data_armors[id])
  419.         $game_party.gain_armor(@armor3_id, 1)
  420.         @armor3_id = id
  421.         $game_party.lose_armor(id, 1)
  422.       end
  423.     when 4  # 装饰品
  424.       if id == 0 or $game_party.armor_number(id) > 0
  425.         update_auto_state($data_armors[@armor4_id], $data_armors[id])
  426.         $game_party.gain_armor(@armor4_id, 1)
  427.         @armor4_id = id
  428.         $game_party.lose_armor(id, 1)
  429.       end
  430.     end
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # ● 可以装备判定
  434.   #     item : 物品
  435.   #--------------------------------------------------------------------------
  436.   def equippable?(item)
  437.     # 武器的情况
  438.     if item.is_a?(RPG::Weapon)
  439.       # 包含当前的职业可以装备武器的场合
  440.       if $data_classes[@class_id].weapon_set.include?(item.id)
  441.         return true
  442.       end
  443.     end
  444.     # 防具的情况
  445.     if item.is_a?(RPG::Armor)
  446.       # 不包含当前的职业可以装备武器的场合
  447.       if $data_classes[@class_id].armor_set.include?(item.id)
  448.         return true
  449.       end
  450.     end
  451.     return false
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ● 更改 EXP
  455.   #     exp : 新的 EXP
  456.   #--------------------------------------------------------------------------
  457.   def exp=(exp)
  458.     @exp = [[exp, 9999999].min, 0].max
  459.     # 升级
  460.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  461.       @level += 1
  462.       @hp=maxhp
  463.       @sp=maxsp
  464.       # 学会特技
  465.       for j in $data_classes[@class_id].learnings
  466.         if j.level == @level
  467.           learn_skill(j.skill_id)
  468.         end
  469.       end
  470.     end
  471.     # 降级
  472.     while @exp < @exp_list[@level]
  473.       @level -= 1
  474.     end
  475.     # 修正当前的 HP 与 SP 超过最大值
  476.     @hp = [@hp, self.maxhp].min
  477.     @sp = [@sp, self.maxsp].min
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # ● 更改水品
  481.   #     level : 新的等级
  482.   #--------------------------------------------------------------------------
  483.   def level=(level)
  484.     # 检查上下限
  485.     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  486.     # 更改 EXP
  487.     self.exp = @exp_list[level]
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ● 觉悟特技
  491.   #     skill_id : 特技 ID
  492.   #--------------------------------------------------------------------------
  493.   def learn_skill(skill_id)
  494.     if skill_id > 0 and not skill_learn?(skill_id)
  495.       @skills.push(skill_id)
  496.       @skills.sort!
  497.     end
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● 遗忘特技
  501.   #     skill_id : 特技 ID
  502.   #--------------------------------------------------------------------------
  503.   def forget_skill(skill_id)
  504.     @skills.delete(skill_id)
  505.   end
  506.   #--------------------------------------------------------------------------
  507.   # ● 已经学会的特技判定
  508.   #     skill_id : 特技 ID
  509.   #--------------------------------------------------------------------------
  510.   def skill_learn?(skill_id)
  511.     return @skills.include?(skill_id)
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ● 可以使用特技判定
  515.   #     skill_id : 特技 ID
  516.   #--------------------------------------------------------------------------
  517.   def skill_can_use?(skill_id)
  518.     if not skill_learn?(skill_id)
  519.       return false
  520.     end
  521.     return super
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 更改名称
  525.   #     name : 新的名称
  526.   #--------------------------------------------------------------------------
  527.   def name=(name)
  528.     @name = name
  529.   end
  530.   #--------------------------------------------------------------------------
  531.   # ● 更改职业 ID
  532.   #     class_id : 新的职业 ID
  533.   #--------------------------------------------------------------------------
  534.   def class_id=(class_id)
  535.     if $data_classes[class_id] != nil
  536.       @class_id = class_id
  537.       # 避开无法装备的物品
  538.       unless equippable?($data_weapons[@weapon_id])
  539.         equip(0, 0)
  540.       end
  541.       unless equippable?($data_armors[@armor1_id])
  542.         equip(1, 0)
  543.       end
  544.       unless equippable?($data_armors[@armor2_id])
  545.         equip(2, 0)
  546.       end
  547.       unless equippable?($data_armors[@armor3_id])
  548.         equip(3, 0)
  549.       end
  550.       unless equippable?($data_armors[@armor4_id])
  551.         equip(4, 0)
  552.       end
  553.     end
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 更改图形
  557.   #     character_name : 新的角色 文件名
  558.   #     character_hue  : 新的角色 色相
  559.   #     battler_name   : 新的战斗者 文件名
  560.   #     battler_hue    : 新的战斗者 色相
  561.   #--------------------------------------------------------------------------
  562.   def set_graphic(character_name, character_hue, battler_name, battler_hue)
  563.     @character_name = character_name
  564.     @character_hue = character_hue
  565.     @battler_name = battler_name
  566.     @battler_hue = battler_hue
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ● 取得战斗画面的 X 坐标
  570.   #--------------------------------------------------------------------------
  571.   def screen_x
  572.     # 返回计算后的队伍 X 坐标的排列顺序
  573.     if self.index != nil
  574.       return self.index * 160 + 80
  575.     else
  576.       return 0
  577.     end
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ● 取得战斗画面的 Y 坐标
  581.   #--------------------------------------------------------------------------
  582.   def screen_y
  583.     return 464
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 取得战斗画面的 Z 坐标
  587.   #--------------------------------------------------------------------------
  588.   def screen_z
  589.     # 返回计算后的队伍 Z 坐标的排列顺序
  590.     if self.index != nil
  591.       return 4 - self.index
  592.     else
  593.       return 0
  594.     end
  595.   end
  596. end
复制代码


这是RMXP里的Game_Actor。

  1. #========================================================================

  2. module Arm_Element
  3.   ARM_ATK = []
  4.   ARM_PDEF = []
  5.   ARM_MDEF = []
  6.   ARM_ELEMENT = []
  7.   ARM_ELE_PLUS = []
  8.   ARM_ELE_MINUS = []
  9.   ARM_ANIMATION1 = []
  10.   ARM_ANIMATION2 = []
  11.   #===================================================================
  12.   # 自定义开始
  13.   #====================================================================
  14.   # 空手时1号角色攻击力与力量值的百分比关系(60%)
  15.   ARM_ATK[1] = 0.6
  16.   # 空手时2号角色攻击力与力量值的百分比关系(70%),以下类推,不一一举例。
  17.   ARM_ATK[1] = 0.7
  18.   
  19.   # 空手时1号角色防御力与灵巧值的百分比关系(60%)
  20.   ARM_PDEF[1] = 0.6
  21.   
  22.   # 空手时1号角色魔法防御力与速度值的百分比关系(60%)
  23.   ARM_MDEF[1] = 0.6
  24.   
  25.   # 空手时攻击方动画编号
  26.   ARM_ANIMATION1[1] = 1
  27.   
  28.   # 空手时挨打方动画编号
  29.   ARM_ANIMATION2[1] = 4

  30. end

  31. class Game_Actor < Game_Battler
  32.   include Arm_Element
  33.   #--------------------------------------------------------------------
  34.   #------------------------------------------------------------------
  35.   alias base_atk_arm base_atk
  36.   def base_atk
  37.     if @weapon_id == 0 and ARM_ATK[@actor_id] != nil
  38.       return $data_actors[@actor_id].parameters[2, @level] * ARM_ATK[@actor_id]
  39.     end
  40.     return base_atk_arm
  41.   end

  42.   #--------------------------------------------------------------------
  43.   #-------------------------------------------------------------------
  44.   alias base_pdef_arm base_pdef
  45.   def base_pdef
  46.     if @weapon_id == 0 and ARM_PDEF[@actor_id] != nil
  47.       return base_pdef_arm + $data_actors[@actor_id].parameters[3, @level] * ARM_PDEF[@actor_id]
  48.     end
  49.     return base_pdef_arm
  50.   end
  51.   
  52.   #--------------------------------------------------------------------
  53.   #--------------------------------------------------------------------
  54.   alias base_mdef_arm base_mdef
  55.   def base_mdef
  56.     if @weapon_id == 0 and ARM_MDEF[@actor_id] != nil
  57.       return base_mdef_arm + $data_actors[@actor_id].parameters[4, @level] * ARM_MDEF[@actor_id]
  58.     end
  59.     return base_mdef_arm
  60.   end

  61.   #------------------------------------------------------------------
  62.   #--------------------------------------------------------------
  63.   alias element_set_arm element_set
  64.   def element_set
  65.     if @weapon_id == 0 and ARM_ELEMENT[@actor_id] != []
  66.       return ARM_ELEMENT[@actor_id]
  67.     end
  68.     return element_set_arm
  69.   end

  70.   #-----------------------------------------------------------------
  71.   #-------------------------------------------------------------------
  72.   alias plus_state_set_arm plus_state_set
  73.   def plus_state_set
  74.     if @weapon_id == 0 and ARM_ELE_PLUS[@actor_id] != []
  75.       return ARM_ELE_PLUS[@actor_id]
  76.     end
  77.     return plus_state_set_arm
  78.   end
  79.   
  80.   #-------------------------------------------------------------------
  81.   #------------------------------------------------------------------
  82.   alias minus_state_set_arm minus_state_set
  83.   def minus_state_set
  84.     if @weapon_id == 0 and ARM_ELE_MINUS[@actor_id] != []
  85.       return ARM_ELE_MINUS[@actor_id]
  86.     end
  87.     return minus_state_set_arm
  88.   end

  89.   #------------------------------------------------------------------
  90.   #-----------------------------------------------------------------
  91.   alias animation1_id_arm animation1_id
  92.   def animation1_id
  93.     if @weapon_id == 0 and ARM_ANIMATION1[@actor_id] != nil
  94.       return ARM_ANIMATION1[@actor_id]
  95.     end
  96.     return animation1_id_arm
  97.   end
  98.   
  99.   #---------------------------------------------------------------------
  100.   #------------------------------------------------------------------
  101.   alias animation2_id_arm animation2_id
  102.   def animation2_id
  103.     if @weapon_id == 0 and ARM_ANIMATION2[@actor_id] != nil
  104.       return ARM_ANIMATION2[@actor_id]
  105.     end
  106.     return animation2_id_arm
  107.   end
  108. end



  109. #=====================================================================
  110. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  111. #====================================================================
复制代码


这是教程里的“空手时的攻防能力”。

我想应该是在Game_Actor里改吧?
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
5
 楼主| 发表于 2008-1-12 06:53:08 | 只看该作者
这是Game_Actor:

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

  6. class Game_Actor < Game_Battler
  7. #--------------------------------------------------------------------------
  8. # ● 定义实例变量
  9. #--------------------------------------------------------------------------
  10. attr_reader   :name                     # 名称
  11. attr_reader   :character_name           # 角色 文件名
  12. attr_reader   :battler_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. #--------------------------------------------------------------------------
  24. # ● 初始化对像
  25. #     actor_id : 角色 ID
  26. #--------------------------------------------------------------------------
  27. def initialize(actor_id)
  28.    super()
  29.    setup(actor_id)
  30. end
  31. #--------------------------------------------------------------------------
  32. # ● 设置
  33. #     actor_id : 角色 ID
  34. #--------------------------------------------------------------------------
  35. def setup(actor_id)
  36.    actor = $data_actors[actor_id]
  37.    @actor_id = actor_id
  38.    @name = actor.name
  39.    @character_name = actor.character_name
  40.    @character_hue = actor.character_hue
  41.    @battler_name = actor.battler_name
  42.    @battler_hue = actor.battler_hue
  43.    @class_id = actor.class_id
  44.    @weapon_id = actor.weapon_id
  45.    @armor1_id = actor.armor1_id
  46.    @armor2_id = actor.armor2_id
  47.    @armor3_id = actor.armor3_id
  48.    @armor4_id = actor.armor4_id
  49.    @level = actor.initial_level
  50.    @exp_list = Array.new(101)
  51.    make_exp_list
  52.    @exp = @exp_list[@level]
  53.    @skills = []
  54.    @hp = maxhp
  55.    @sp = maxsp
  56.    @states = []
  57.    @states_turn = {}
  58.    @maxhp_plus = 0
  59.    @maxsp_plus = 0
  60.    @str_plus = 0
  61.    @dex_plus = 0
  62.    @agi_plus = 0
  63.    @int_plus = 0
  64.    # 学会特技
  65.    for i in 1..@level
  66.      for j in $data_classes[@class_id].learnings
  67.        if j.level == i
  68.          learn_skill(j.skill_id)
  69.        end
  70.      end
  71.    end
  72.    # 刷新自动状态
  73.    update_auto_state(nil, $data_armors[@armor1_id])
  74.    update_auto_state(nil, $data_armors[@armor2_id])
  75.    update_auto_state(nil, $data_armors[@armor3_id])
  76.    update_auto_state(nil, $data_armors[@armor4_id])
  77. end
  78. #--------------------------------------------------------------------------
  79. # ● 获取角色 ID
  80. #--------------------------------------------------------------------------
  81. def id
  82.    return @actor_id
  83. end
  84. #--------------------------------------------------------------------------
  85. # ● 获取索引
  86. #--------------------------------------------------------------------------
  87. def index
  88.    return $game_party.actors.index(self)
  89. end
  90. #--------------------------------------------------------------------------
  91. # ● 计算 EXP
  92. #--------------------------------------------------------------------------
  93. def make_exp_list
  94.    actor = $data_actors[@actor_id]
  95.    @exp_list[1] = 0
  96.    pow_i = 2.4 + actor.exp_inflation / 100.0
  97.    for i in 2..100
  98.      if i > actor.final_level
  99.        @exp_list[i] = 0
  100.      else
  101.        n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  102.        @exp_list[i] = @exp_list[i-1] + Integer(n)
  103.      end
  104.    end
  105. end
  106. #--------------------------------------------------------------------------
  107. # ● 取得属性修正值
  108. #     element_id : 属性 ID
  109. #--------------------------------------------------------------------------
  110. def element_rate(element_id)
  111.    # 获取对应属性有效度的数值
  112.    table = [0,200,150,100,50,0,-100]
  113.    result = table[$data_classes[@class_id].element_ranks[element_id]]
  114.    # 防具能防御本属性的情况下效果减半
  115.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  116.      armor = $data_armors[i]
  117.      if armor != nil and armor.guard_element_set.include?(element_id)
  118.        result /= 2
  119.      end
  120.    end
  121.    # 状态能防御本属性的情况下效果减半
  122.    for i in @states
  123.      if $data_states[i].guard_element_set.include?(element_id)
  124.        result /= 2
  125.      end
  126.    end
  127.    # 过程结束
  128.    return result
  129. end
  130. #--------------------------------------------------------------------------
  131. # ● 获取属性有效度
  132. #--------------------------------------------------------------------------
  133. def state_ranks
  134.    return $data_classes[@class_id].state_ranks
  135. end
  136. #--------------------------------------------------------------------------
  137. # ● 判定防御属性
  138. #     state_id : 属性 ID
  139. #--------------------------------------------------------------------------
  140. def state_guard?(state_id)
  141.    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  142.      armor = $data_armors[i]
  143.      if armor != nil
  144.        if armor.guard_state_set.include?(state_id)
  145.          return true
  146.        end
  147.      end
  148.    end
  149.    return false
  150. end
  151. #--------------------------------------------------------------------------
  152. # ● 获取普通攻击属性
  153. #--------------------------------------------------------------------------
  154. def element_set
  155.    weapon = $data_weapons[@weapon_id]
  156.    return weapon != nil ? weapon.element_set : []
  157. end
  158. #--------------------------------------------------------------------------
  159. # ● 获取普通攻击状态变化 (+)
  160. #--------------------------------------------------------------------------
  161. def plus_state_set
  162.    weapon = $data_weapons[@weapon_id]
  163.    return weapon != nil ? weapon.plus_state_set : []
  164. end
  165. #--------------------------------------------------------------------------
  166. # ● 获取普通攻击状态变化 (-)
  167. #--------------------------------------------------------------------------
  168. def minus_state_set
  169.    weapon = $data_weapons[@weapon_id]
  170.    return weapon != nil ? weapon.minus_state_set : []
  171. end
  172. #--------------------------------------------------------------------------
  173. # ● 获取 MaxHP
  174. #--------------------------------------------------------------------------
  175. def maxhp
  176.    n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
  177.    for i in @states
  178.      n *= $data_states[i].maxhp_rate / 100.0
  179.    end
  180.    n = [[Integer(n), 1].max, 9999].min
  181.    return n
  182. end
  183. #--------------------------------------------------------------------------
  184. # ● 获取基本 MaxHP
  185. #--------------------------------------------------------------------------
  186. def base_maxhp
  187.    return $data_actors[@actor_id].parameters[0, @level]
  188. end
  189. #--------------------------------------------------------------------------
  190. # ● 获取基本 MaxSP
  191. #--------------------------------------------------------------------------
  192. def base_maxsp
  193.    return $data_actors[@actor_id].parameters[1, @level]
  194. end
  195. #--------------------------------------------------------------------------
  196. # ● 获取基本力量
  197. #--------------------------------------------------------------------------
  198. def base_str
  199.    n = $data_actors[@actor_id].parameters[2, @level]
  200.    weapon = $data_weapons[@weapon_id]
  201.    armor1 = $data_armors[@armor1_id]
  202.    armor2 = $data_armors[@armor2_id]
  203.    armor3 = $data_armors[@armor3_id]
  204.    armor4 = $data_armors[@armor4_id]
  205.    n += weapon != nil ? weapon.str_plus : 0
  206.    n += armor1 != nil ? armor1.str_plus : 0
  207.    n += armor2 != nil ? armor2.str_plus : 0
  208.    n += armor3 != nil ? armor3.str_plus : 0
  209.    n += armor4 != nil ? armor4.str_plus : 0
  210.    return [[n, 1].max, 999].min
  211. end
  212. #--------------------------------------------------------------------------
  213. # ● 获取基本灵巧
  214. #--------------------------------------------------------------------------
  215. def base_dex
  216.    n = $data_actors[@actor_id].parameters[3, @level]
  217.    weapon = $data_weapons[@weapon_id]
  218.    armor1 = $data_armors[@armor1_id]
  219.    armor2 = $data_armors[@armor2_id]
  220.    armor3 = $data_armors[@armor3_id]
  221.    armor4 = $data_armors[@armor4_id]
  222.    n += weapon != nil ? weapon.dex_plus : 0
  223.    n += armor1 != nil ? armor1.dex_plus : 0
  224.    n += armor2 != nil ? armor2.dex_plus : 0
  225.    n += armor3 != nil ? armor3.dex_plus : 0
  226.    n += armor4 != nil ? armor4.dex_plus : 0
  227.    return [[n, 1].max, 999].min
  228. end
  229. #--------------------------------------------------------------------------
  230. # ● 获取基本速度
  231. #--------------------------------------------------------------------------
  232. def base_agi
  233.    n = $data_actors[@actor_id].parameters[4, @level]
  234.    weapon = $data_weapons[@weapon_id]
  235.    armor1 = $data_armors[@armor1_id]
  236.    armor2 = $data_armors[@armor2_id]
  237.    armor3 = $data_armors[@armor3_id]
  238.    armor4 = $data_armors[@armor4_id]
  239.    n += weapon != nil ? weapon.agi_plus : 0
  240.    n += armor1 != nil ? armor1.agi_plus : 0
  241.    n += armor2 != nil ? armor2.agi_plus : 0
  242.    n += armor3 != nil ? armor3.agi_plus : 0
  243.    n += armor4 != nil ? armor4.agi_plus : 0
  244.    return [[n, 1].max, 999].min
  245. end
  246. #--------------------------------------------------------------------------
  247. # ● 获取基本魔力
  248. #--------------------------------------------------------------------------
  249. def base_int
  250.    n = $data_actors[@actor_id].parameters[5, @level]
  251.    weapon = $data_weapons[@weapon_id]
  252.    armor1 = $data_armors[@armor1_id]
  253.    armor2 = $data_armors[@armor2_id]
  254.    armor3 = $data_armors[@armor3_id]
  255.    armor4 = $data_armors[@armor4_id]
  256.    n += weapon != nil ? weapon.int_plus : 0
  257.    n += armor1 != nil ? armor1.int_plus : 0
  258.    n += armor2 != nil ? armor2.int_plus : 0
  259.    n += armor3 != nil ? armor3.int_plus : 0
  260.    n += armor4 != nil ? armor4.int_plus : 0
  261.    return [[n, 1].max, 999].min
  262. end
  263. #--------------------------------------------------------------------------
  264. # ● 获取基本攻击力
  265. #--------------------------------------------------------------------------
  266. def base_atk
  267.    weapon = $data_weapons[@weapon_id]
  268.    return weapon != nil ? weapon.atk : 0
  269. end
  270. #--------------------------------------------------------------------------
  271. # ● 获取基本物理防御
  272. #--------------------------------------------------------------------------
  273. def base_pdef
  274.    weapon = $data_weapons[@weapon_id]
  275.    armor1 = $data_armors[@armor1_id]
  276.    armor2 = $data_armors[@armor2_id]
  277.    armor3 = $data_armors[@armor3_id]
  278.    armor4 = $data_armors[@armor4_id]
  279.    pdef1 = weapon != nil ? weapon.pdef : 0
  280.    pdef2 = armor1 != nil ? armor1.pdef : 0
  281.    pdef3 = armor2 != nil ? armor2.pdef : 0
  282.    pdef4 = armor3 != nil ? armor3.pdef : 0
  283.    pdef5 = armor4 != nil ? armor4.pdef : 0
  284.    return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  285. end
  286. #--------------------------------------------------------------------------
  287. # ● 获取基本魔法防御
  288. #--------------------------------------------------------------------------
  289. def base_mdef
  290.    weapon = $data_weapons[@weapon_id]
  291.    armor1 = $data_armors[@armor1_id]
  292.    armor2 = $data_armors[@armor2_id]
  293.    armor3 = $data_armors[@armor3_id]
  294.    armor4 = $data_armors[@armor4_id]
  295.    mdef1 = weapon != nil ? weapon.mdef : 0
  296.    mdef2 = armor1 != nil ? armor1.mdef : 0
  297.    mdef3 = armor2 != nil ? armor2.mdef : 0
  298.    mdef4 = armor3 != nil ? armor3.mdef : 0
  299.    mdef5 = armor4 != nil ? armor4.mdef : 0
  300.    return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  301. end
  302. #--------------------------------------------------------------------------
  303. # ● 获取基本回避修正
  304. #--------------------------------------------------------------------------
  305. def base_eva
  306.    armor1 = $data_armors[@armor1_id]
  307.    armor2 = $data_armors[@armor2_id]
  308.    armor3 = $data_armors[@armor3_id]
  309.    armor4 = $data_armors[@armor4_id]
  310.    eva1 = armor1 != nil ? armor1.eva : 0
  311.    eva2 = armor2 != nil ? armor2.eva : 0
  312.    eva3 = armor3 != nil ? armor3.eva : 0
  313.    eva4 = armor4 != nil ? armor4.eva : 0
  314.    return eva1 + eva2 + eva3 + eva4
  315. end
  316. #--------------------------------------------------------------------------
  317. # ● 普通攻击 获取攻击方动画 ID
  318. #--------------------------------------------------------------------------
  319. def animation1_id
  320.    weapon = $data_weapons[@weapon_id]
  321.    return weapon != nil ? weapon.animation1_id : 0
  322. end
  323. #--------------------------------------------------------------------------
  324. # ● 普通攻击 获取对像方动画 ID
  325. #--------------------------------------------------------------------------
  326. def animation2_id
  327.    weapon = $data_weapons[@weapon_id]
  328.    return weapon != nil ? weapon.animation2_id : 0
  329. end
  330. #--------------------------------------------------------------------------
  331. # ● 获取类名
  332. #--------------------------------------------------------------------------
  333. def class_name
  334.    return $data_classes[@class_id].name
  335. end
  336. #--------------------------------------------------------------------------
  337. # ● 获取 EXP 字符串
  338. #--------------------------------------------------------------------------
  339. def exp_s
  340.    return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
  341. end
  342. #--------------------------------------------------------------------------
  343. # ● 获取下一等级的 EXP 字符串
  344. #--------------------------------------------------------------------------
  345. def next_exp_s
  346.    return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
  347. end
  348. #--------------------------------------------------------------------------
  349. # ● 获取离下一等级还需的 EXP 字符串
  350. #--------------------------------------------------------------------------
  351. def next_rest_exp_s
  352.    return @exp_list[@level+1] > 0 ?
  353.      (@exp_list[@level+1] - @exp).to_s : "-------"
  354. end
  355. #--------------------------------------------------------------------------
  356. # ● 更新自动状态
  357. #     old_armor : 卸下防具
  358. #     new_armor : 装备防具
  359. #--------------------------------------------------------------------------
  360. def update_auto_state(old_armor, new_armor)
  361.    # 强制解除卸下防具的自动状态
  362.    if old_armor != nil and old_armor.auto_state_id != 0
  363.      remove_state(old_armor.auto_state_id, true)
  364.    end
  365.    # 强制附加装备防具的自动状态
  366.    if new_armor != nil and new_armor.auto_state_id != 0
  367.      add_state(new_armor.auto_state_id, true)
  368.    end
  369. end
  370. #--------------------------------------------------------------------------
  371. # ● 装备固定判定
  372. #     equip_type : 装备类型
  373. #--------------------------------------------------------------------------
  374. def equip_fix?(equip_type)
  375.    case equip_type
  376.    when 0  # 武器
  377.      return $data_actors[@actor_id].weapon_fix
  378.    when 1  # 盾
  379.      return $data_actors[@actor_id].armor1_fix
  380.    when 2  # 头
  381.      return $data_actors[@actor_id].armor2_fix
  382.    when 3  # 身体
  383.      return $data_actors[@actor_id].armor3_fix
  384.    when 4  # 装饰品
  385.      return $data_actors[@actor_id].armor4_fix
  386.    end
  387.    return false
  388. end
  389. #--------------------------------------------------------------------------
  390. # ● 变更装备
  391. #     equip_type : 装备类型
  392. #     id    : 武器 or 防具 ID  (0 为解除装备)
  393. #--------------------------------------------------------------------------
  394. def equip(equip_type, id)
  395.    case equip_type
  396.    when 0  # 武器
  397.      if id == 0 or $game_party.weapon_number(id) > 0
  398.        $game_party.gain_weapon(@weapon_id, 1)
  399.        @weapon_id = id
  400.        $game_party.lose_weapon(id, 1)
  401.      end
  402.    when 1  # 盾
  403.      if id == 0 or $game_party.armor_number(id) > 0
  404.        update_auto_state($data_armors[@armor1_id], $data_armors[id])
  405.        $game_party.gain_armor(@armor1_id, 1)
  406.        @armor1_id = id
  407.        $game_party.lose_armor(id, 1)
  408.      end
  409.    when 2  # 头
  410.      if id == 0 or $game_party.armor_number(id) > 0
  411.        update_auto_state($data_armors[@armor2_id], $data_armors[id])
  412.        $game_party.gain_armor(@armor2_id, 1)
  413.        @armor2_id = id
  414.        $game_party.lose_armor(id, 1)
  415.      end
  416.    when 3  # 身体
  417.      if id == 0 or $game_party.armor_number(id) > 0
  418.        update_auto_state($data_armors[@armor3_id], $data_armors[id])
  419.        $game_party.gain_armor(@armor3_id, 1)
  420.        @armor3_id = id
  421.        $game_party.lose_armor(id, 1)
  422.      end
  423.    when 4  # 装饰品
  424.      if id == 0 or $game_party.armor_number(id) > 0
  425.        update_auto_state($data_armors[@armor4_id], $data_armors[id])
  426.        $game_party.gain_armor(@armor4_id, 1)
  427.        @armor4_id = id
  428.        $game_party.lose_armor(id, 1)
  429.      end
  430.    end
  431. end
  432. #--------------------------------------------------------------------------
  433. # ● 可以装备判定
  434. #     item : 物品
  435. #--------------------------------------------------------------------------
  436. def equippable?(item)
  437.    # 武器的情况
  438.    if item.is_a?(RPG::Weapon)
  439.      # 包含当前的职业可以装备武器的场合
  440.      if $data_classes[@class_id].weapon_set.include?(item.id)
  441.        return true
  442.      end
  443.    end
  444.    # 防具的情况
  445.    if item.is_a?(RPG::Armor)
  446.      # 不包含当前的职业可以装备武器的场合
  447.      if $data_classes[@class_id].armor_set.include?(item.id)
  448.        return true
  449.      end
  450.    end
  451.    return false
  452. end
  453. #--------------------------------------------------------------------------
  454. # ● 更改 EXP
  455. #     exp : 新的 EXP
  456. #--------------------------------------------------------------------------
  457. def exp=(exp)
  458.    @exp = [[exp, 9999999].min, 0].max
  459.    # 升级
  460.    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  461.      @level += 1
  462.      @hp=maxhp
  463.      @sp=maxsp
  464.      # 学会特技
  465.      for j in $data_classes[@class_id].learnings
  466.        if j.level == @level
  467.          learn_skill(j.skill_id)
  468.        end
  469.      end
  470.    end
  471.    # 降级
  472.    while @exp < @exp_list[@level]
  473.      @level -= 1
  474.    end
  475.    # 修正当前的 HP 与 SP 超过最大值
  476.    @hp = [@hp, self.maxhp].min
  477.    @sp = [@sp, self.maxsp].min
  478. end
  479. #--------------------------------------------------------------------------
  480. # ● 更改水品
  481. #     level : 新的等级
  482. #--------------------------------------------------------------------------
  483. def level=(level)
  484.    # 检查上下限
  485.    level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  486.    # 更改 EXP
  487.    self.exp = @exp_list[level]
  488. end
  489. #--------------------------------------------------------------------------
  490. # ● 觉悟特技
  491. #     skill_id : 特技 ID
  492. #--------------------------------------------------------------------------
  493. def learn_skill(skill_id)
  494.    if skill_id > 0 and not skill_learn?(skill_id)
  495.      @skills.push(skill_id)
  496.      @skills.sort!
  497.    end
  498. end
  499. #--------------------------------------------------------------------------
  500. # ● 遗忘特技
  501. #     skill_id : 特技 ID
  502. #--------------------------------------------------------------------------
  503. def forget_skill(skill_id)
  504.    @skills.delete(skill_id)
  505. end
  506. #--------------------------------------------------------------------------
  507. # ● 已经学会的特技判定
  508. #     skill_id : 特技 ID
  509. #--------------------------------------------------------------------------
  510. def skill_learn?(skill_id)
  511.    return @skills.include?(skill_id)
  512. end
  513. #--------------------------------------------------------------------------
  514. # ● 可以使用特技判定
  515. #     skill_id : 特技 ID
  516. #--------------------------------------------------------------------------
  517. def skill_can_use?(skill_id)
  518.    if not skill_learn?(skill_id)
  519.      return false
  520.    end
  521.    return super
  522. end
  523. #--------------------------------------------------------------------------
  524. # ● 更改名称
  525. #     name : 新的名称
  526. #--------------------------------------------------------------------------
  527. def name=(name)
  528.    @name = name
  529. end
  530. #--------------------------------------------------------------------------
  531. # ● 更改职业 ID
  532. #     class_id : 新的职业 ID
  533. #--------------------------------------------------------------------------
  534. def class_id=(class_id)
  535.    if $data_classes[class_id] != nil
  536.      @class_id = class_id
  537.      # 避开无法装备的物品
  538.      unless equippable?($data_weapons[@weapon_id])
  539.        equip(0, 0)
  540.      end
  541.      unless equippable?($data_armors[@armor1_id])
  542.        equip(1, 0)
  543.      end
  544.      unless equippable?($data_armors[@armor2_id])
  545.        equip(2, 0)
  546.      end
  547.      unless equippable?($data_armors[@armor3_id])
  548.        equip(3, 0)
  549.      end
  550.      unless equippable?($data_armors[@armor4_id])
  551.        equip(4, 0)
  552.      end
  553.    end
  554. end
  555. #--------------------------------------------------------------------------
  556. # ● 更改图形
  557. #     character_name : 新的角色 文件名
  558. #     character_hue  : 新的角色 色相
  559. #     battler_name   : 新的战斗者 文件名
  560. #     battler_hue    : 新的战斗者 色相
  561. #--------------------------------------------------------------------------
  562. def set_graphic(character_name, character_hue, battler_name, battler_hue)
  563.    @character_name = character_name
  564.    @character_hue = character_hue
  565.    @battler_name = battler_name
  566.    @battler_hue = battler_hue
  567. end
  568. #--------------------------------------------------------------------------
  569. # ● 取得战斗画面的 X 坐标
  570. #--------------------------------------------------------------------------
  571. def screen_x
  572.    # 返回计算后的队伍 X 坐标的排列顺序
  573.    if self.index != nil
  574.      return self.index * 160 + 80
  575.    else
  576.      return 0
  577.    end
  578. end
  579. #--------------------------------------------------------------------------
  580. # ● 取得战斗画面的 Y 坐标
  581. #--------------------------------------------------------------------------
  582. def screen_y
  583.    return 464
  584. end
  585. #--------------------------------------------------------------------------
  586. # ● 取得战斗画面的 Z 坐标
  587. #--------------------------------------------------------------------------
  588. def screen_z
  589.    # 返回计算后的队伍 Z 坐标的排列顺序
  590.    if self.index != nil
  591.      return 4 - self.index
  592.    else
  593.      return 0
  594.    end
  595. end
  596. end
复制代码


这是空手的攻防能力:


  1. #========================================================================

  2. module Arm_Element
  3. ARM_ATK = []
  4. ARM_PDEF = []
  5. ARM_MDEF = []
  6. ARM_ELEMENT = []
  7. ARM_ELE_PLUS = []
  8. ARM_ELE_MINUS = []
  9. ARM_ANIMATION1 = []
  10. ARM_ANIMATION2 = []
  11. #===================================================================
  12. # 自定义开始
  13. #====================================================================
  14. # 空手时1号角色攻击力与力量值的百分比关系(60%)
  15. ARM_ATK[1] = 0.6
  16. # 空手时2号角色攻击力与力量值的百分比关系(70%),以下类推,不一一举例。
  17. ARM_ATK[1] = 0.7

  18. # 空手时1号角色防御力与灵巧值的百分比关系(60%)
  19. ARM_PDEF[1] = 0.6

  20. # 空手时1号角色魔法防御力与速度值的百分比关系(60%)
  21. ARM_MDEF[1] = 0.6

  22. # 空手时攻击方动画编号
  23. ARM_ANIMATION1[1] = 1

  24. # 空手时挨打方动画编号
  25. ARM_ANIMATION2[1] = 4

  26. end

  27. class Game_Actor < Game_Battler
  28. include Arm_Element
  29. #--------------------------------------------------------------------
  30. #------------------------------------------------------------------
  31. alias base_atk_arm base_atk
  32. def base_atk
  33.    if @weapon_id == 0 and ARM_ATK[@actor_id] != nil
  34.      return $data_actors[@actor_id].parameters[2, @level] * ARM_ATK[@actor_id]
  35.    end
  36.    return base_atk_arm
  37. end

  38. #--------------------------------------------------------------------
  39. #-------------------------------------------------------------------
  40. alias base_pdef_arm base_pdef
  41. def base_pdef
  42.    if @weapon_id == 0 and ARM_PDEF[@actor_id] != nil
  43.      return base_pdef_arm + $data_actors[@actor_id].parameters[3, @level] * ARM_PDEF[@actor_id]
  44.    end
  45.    return base_pdef_arm
  46. end

  47. #--------------------------------------------------------------------
  48. #--------------------------------------------------------------------
  49. alias base_mdef_arm base_mdef
  50. def base_mdef
  51.    if @weapon_id == 0 and ARM_MDEF[@actor_id] != nil
  52.      return base_mdef_arm + $data_actors[@actor_id].parameters[4, @level] * ARM_MDEF[@actor_id]
  53.    end
  54.    return base_mdef_arm
  55. end

  56. #------------------------------------------------------------------
  57. #--------------------------------------------------------------
  58. alias element_set_arm element_set
  59. def element_set
  60.    if @weapon_id == 0 and ARM_ELEMENT[@actor_id] != []
  61.      return ARM_ELEMENT[@actor_id]
  62.    end
  63.    return element_set_arm
  64. end

  65. #-----------------------------------------------------------------
  66. #-------------------------------------------------------------------
  67. alias plus_state_set_arm plus_state_set
  68. def plus_state_set
  69.    if @weapon_id == 0 and ARM_ELE_PLUS[@actor_id] != []
  70.      return ARM_ELE_PLUS[@actor_id]
  71.    end
  72.    return plus_state_set_arm
  73. end

  74. #-------------------------------------------------------------------
  75. #------------------------------------------------------------------
  76. alias minus_state_set_arm minus_state_set
  77. def minus_state_set
  78.    if @weapon_id == 0 and ARM_ELE_MINUS[@actor_id] != []
  79.      return ARM_ELE_MINUS[@actor_id]
  80.    end
  81.    return minus_state_set_arm
  82. end

  83. #------------------------------------------------------------------
  84. #-----------------------------------------------------------------
  85. alias animation1_id_arm animation1_id
  86. def animation1_id
  87.    if @weapon_id == 0 and ARM_ANIMATION1[@actor_id] != nil
  88.      return ARM_ANIMATION1[@actor_id]
  89.    end
  90.    return animation1_id_arm
  91. end

  92. #---------------------------------------------------------------------
  93. #------------------------------------------------------------------
  94. alias animation2_id_arm animation2_id
  95. def animation2_id
  96.    if @weapon_id == 0 and ARM_ANIMATION2[@actor_id] != nil
  97.      return ARM_ANIMATION2[@actor_id]
  98.    end
  99.    return animation2_id_arm
  100. end
  101. end
复制代码


呃…………
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

6
发表于 2008-1-12 09:30:31 | 只看该作者
这个空手看着怪啊...
他是如果没武器的话用一个公式..有武器又是另一种....
这样

  1. class Game_Actor < Game_Battler
  2. include Arm_Element
  3. #--------------------------------------------------------------------
  4. #------------------------------------------------------------------
  5. alias base_atk_arm base_atk
  6. def base_atk
  7.    if @weapon_id == 0 and ARM_ATK[@actor_id] != nil
  8.      val = $data_actors[@actor_id].parameters[2, @level] * ARM_ATK[@actor_id]
  9.    else
  10.      val = base_atk_arm
  11.    end
  12.    weapon_atk = @weapon_id == 0 ? 0 : $data_weapons[@weapon_id].atk
  13.    return val + weapon_atk
  14. end
  15. end
复制代码
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
7
 楼主| 发表于 2008-1-12 18:34:41 | 只看该作者
楼上?

那段代码怎么添加进去?无论是覆盖还是直接添加我都试了,怎么不行……?
99级的时候还是,装上武器攻击力变低了……
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
8
发表于 2008-1-12 19:02:39 | 只看该作者
  1. #========================================================================

  2. module Arm_Element
  3. ARM_ATK = []
  4. ARM_PDEF = []
  5. ARM_MDEF = []
  6. ARM_ELEMENT = []
  7. ARM_ELE_PLUS = []
  8. ARM_ELE_MINUS = []
  9. ARM_ANIMATION1 = []
  10. ARM_ANIMATION2 = []
  11. #===================================================================
  12. # 自定义开始
  13. #====================================================================
  14. # 空手时1号角色攻击力与力量值的百分比关系(60%)
  15. ARM_ATK[1] = 0.6
  16. # 空手时2号角色攻击力与力量值的百分比关系(70%),以下类推,不一一举例。
  17. ARM_ATK[1] = 0.7

  18. # 空手时1号角色防御力与灵巧值的百分比关系(60%)
  19. ARM_PDEF[1] = 0.6

  20. # 空手时1号角色魔法防御力与速度值的百分比关系(60%)
  21. ARM_MDEF[1] = 0.6

  22. # 空手时攻击方动画编号
  23. ARM_ANIMATION1[1] = 1

  24. # 空手时挨打方动画编号
  25. ARM_ANIMATION2[1] = 4

  26. end

  27. class Game_Actor < Game_Battler
  28. include Arm_Element
  29. #--------------------------------------------------------------------
  30. #------------------------------------------------------------------
  31. alias base_atk_arm base_atk
  32. def base_atk
  33.    if @weapon_id == 0 and ARM_ATK[@actor_id] != nil
  34.      val = $data_actors[@actor_id].parameters[2, @level] * ARM_ATK[@actor_id]
  35.    else
  36.      val = base_atk_arm
  37.    end
  38.    weapon_atk = @weapon_id == 0 ? 0 : $data_weapons[@weapon_id].atk
  39.    return val + weapon_atk
  40. end
  41. #--------------------------------------------------------------------
  42. #-------------------------------------------------------------------
  43. alias base_pdef_arm base_pdef
  44. def base_pdef
  45.    if @weapon_id == 0 and ARM_PDEF[@actor_id] != nil
  46.      return base_pdef_arm + $data_actors[@actor_id].parameters[3, @level] * ARM_PDEF[@actor_id]
  47.    end
  48.    return base_pdef_arm
  49. end

  50. #--------------------------------------------------------------------
  51. #--------------------------------------------------------------------
  52. alias base_mdef_arm base_mdef
  53. def base_mdef
  54.    if @weapon_id == 0 and ARM_MDEF[@actor_id] != nil
  55.      return base_mdef_arm + $data_actors[@actor_id].parameters[4, @level] * ARM_MDEF[@actor_id]
  56.    end
  57.    return base_mdef_arm
  58. end

  59. #------------------------------------------------------------------
  60. #--------------------------------------------------------------
  61. alias element_set_arm element_set
  62. def element_set
  63.    if @weapon_id == 0 and ARM_ELEMENT[@actor_id] != []
  64.      return ARM_ELEMENT[@actor_id]
  65.    end
  66.    return element_set_arm
  67. end

  68. #-----------------------------------------------------------------
  69. #-------------------------------------------------------------------
  70. alias plus_state_set_arm plus_state_set
  71. def plus_state_set
  72.    if @weapon_id == 0 and ARM_ELE_PLUS[@actor_id] != []
  73.      return ARM_ELE_PLUS[@actor_id]
  74.    end
  75.    return plus_state_set_arm
  76. end

  77. #-------------------------------------------------------------------
  78. #------------------------------------------------------------------
  79. alias minus_state_set_arm minus_state_set
  80. def minus_state_set
  81.    if @weapon_id == 0 and ARM_ELE_MINUS[@actor_id] != []
  82.      return ARM_ELE_MINUS[@actor_id]
  83.    end
  84.    return minus_state_set_arm
  85. end

  86. #------------------------------------------------------------------
  87. #-----------------------------------------------------------------
  88. alias animation1_id_arm animation1_id
  89. def animation1_id
  90.    if @weapon_id == 0 and ARM_ANIMATION1[@actor_id] != nil
  91.      return ARM_ANIMATION1[@actor_id]
  92.    end
  93.    return animation1_id_arm
  94. end

  95. #---------------------------------------------------------------------
  96. #------------------------------------------------------------------
  97. alias animation2_id_arm animation2_id
  98. def animation2_id
  99.    if @weapon_id == 0 and ARM_ANIMATION2[@actor_id] != nil
  100.      return ARM_ANIMATION2[@actor_id]
  101.    end
  102.    return animation2_id_arm
  103. end
  104. end
复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2008-1-6
帖子
56
9
 楼主| 发表于 2008-1-12 21:09:00 | 只看该作者
谢谢~~
又经过我微薄的脚本能力,我成功了……

谢谢大家!
傻,就是傻。有时傻也会变得很聪明。傻反被傻误,成为聪明人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-27 23:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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