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

Project1

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

[已经解决] 这个脚本如何实现不同角色显示不同状态?

[复制链接]

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

跳转到指定楼层
1
 楼主| 发表于 2013-2-5 20:44:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 美丽晨露 于 2013-2-12 14:19 编辑
  1. #==============================================================================
  2. # ■ Game_Battler (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  5. # 超级类来使用。
  6. #==============================================================================

  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :battler_name             # 战斗者 文件名
  12.   attr_reader   :battler_hue              # 战斗者 色相
  13.   attr_reader   :hp                       # HP
  14.   attr_reader   :sp                       # SP
  15.   attr_reader   :states                   # 状态
  16.   attr_accessor :hidden                   # 隐藏标志
  17.   attr_accessor :immortal                 # 不死身标志
  18.   attr_accessor :damage_pop               # 显示伤害标志
  19.   attr_accessor :damage                   # 伤害值
  20.   attr_accessor :critical                 # 会心一击标志
  21.   attr_accessor :animation_id             # 动画 ID
  22.   attr_accessor :animation_hit            # 动画 击中标志
  23.   attr_accessor :white_flash              # 白色屏幕闪烁标志
  24.   attr_accessor :blink                    # 闪烁标志
  25.   #--------------------------------------------------------------------------
  26.   # ● 初始化对像
  27.   #--------------------------------------------------------------------------
  28.   def initialize
  29.     @battler_name = ""
  30.     @battler_hue = 0
  31.     @hp = 0
  32.     @sp = 0
  33.     @states = []
  34.     @states_turn = {}
  35.     @maxhp_plus = 0
  36.     @maxsp_plus = 0
  37.     @str_plus = 0
  38.     @dex_plus = 0
  39.     @agi_plus = 0
  40.     @int_plus = 0
  41.     [url=home.php?mod=space&uid=292300]@Hidden[/url] = false
  42.     @immortal = false
  43.     @damage_pop = false
  44.     @damage = nil
  45.     @critical = false
  46.     @animation_id = 0
  47.     @animation_hit = false
  48.     @white_flash = false
  49.     @blink = false
  50.     @current_action = Game_BattleAction.new
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取 MaxHP
  54.   #--------------------------------------------------------------------------
  55.   def maxhp
  56.     n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
  57.     for i in @states
  58.       n *= $data_states[i].maxhp_rate / 100.0
  59.     end
  60.     n = [[Integer(n), 1].max, 999999].min
  61.     return n
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 获取 MaxSP
  65.   #--------------------------------------------------------------------------
  66.   def maxsp
  67.     n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min
  68.     for i in @states
  69.       n *= $data_states[i].maxsp_rate / 100.0
  70.     end
  71.     n = [[Integer(n), 0].max, 9999].min
  72.     return n
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取力量
  76.   #--------------------------------------------------------------------------
  77.   def str
  78.     n = [[base_str + @str_plus, 1].max, 999].min
  79.     for i in @states
  80.       n *= $data_states[i].str_rate / 100.0
  81.     end
  82.     n = [[Integer(n), 1].max, 999].min
  83.     return n
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 获取灵巧
  87.   #--------------------------------------------------------------------------
  88.   def dex
  89.     n = [[base_dex + @dex_plus, 1].max, 999].min
  90.     for i in @states
  91.       n *= $data_states[i].dex_rate / 100.0
  92.     end
  93.     n = [[Integer(n), 1].max, 999].min
  94.     return n
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 获取速度
  98.   #--------------------------------------------------------------------------
  99.   def agi
  100.     n = [[base_agi + @agi_plus, 1].max, 999].min
  101.     for i in @states
  102.       n *= $data_states[i].agi_rate / 100.0
  103.     end
  104.     n = [[Integer(n), 1].max, 999].min
  105.     return n
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 获取魔力
  109.   #--------------------------------------------------------------------------
  110.   def int
  111.     n = [[base_int + @int_plus, 1].max, 999].min
  112.     for i in @states
  113.       n *= $data_states[i].int_rate / 100.0
  114.     end
  115.     n = [[Integer(n), 1].max, 999].min
  116.     return n
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 设置 MaxHP
  120.   #     maxhp : 新的 MaxHP
  121.   #--------------------------------------------------------------------------
  122.   def maxhp=(maxhp)
  123.     @maxhp_plus += maxhp - self.maxhp
  124.     @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
  125.     @hp = [@hp, self.maxhp].min
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 设置 MaxSP
  129.   #     maxsp : 新的 MaxSP
  130.   #--------------------------------------------------------------------------
  131.   def maxsp=(maxsp)
  132.     @maxsp_plus += maxsp - self.maxsp
  133.     @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
  134.     @sp = [@sp, self.maxsp].min
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 设置力量
  138.   #     str : 新的力量
  139.   #--------------------------------------------------------------------------
  140.   def str=(str)
  141.     @str_plus += str - self.str
  142.     @str_plus = [[@str_plus, -999].max, 999].min
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 设置灵巧
  146.   #     dex : 新的灵巧
  147.   #--------------------------------------------------------------------------
  148.   def dex=(dex)
  149.     @dex_plus += dex - self.dex
  150.     @dex_plus = [[@dex_plus, -999].max, 999].min
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 设置速度
  154.   #     agi : 新的速度
  155.   #--------------------------------------------------------------------------
  156.   def agi=(agi)
  157.     @agi_plus += agi - self.agi
  158.     @agi_plus = [[@agi_plus, -999].max, 999].min
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 设置魔力
  162.   #     int : 新的魔力
  163.   #--------------------------------------------------------------------------
  164.   def int=(int)
  165.     @int_plus += int - self.int
  166.     @int_plus = [[@int_plus, -999].max, 999].min
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 获取命中率
  170.   #--------------------------------------------------------------------------
  171.   def hit
  172.     n = 100
  173.     for i in @states
  174.       n *= $data_states[i].hit_rate / 100.0
  175.     end
  176.     return Integer(n)
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取攻击力
  180.   #--------------------------------------------------------------------------
  181.   def atk
  182.     n = base_atk
  183.     for i in @states
  184.       n *= $data_states[i].atk_rate / 100.0
  185.     end
  186.     return Integer(n)
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 获取物理防御
  190.   #--------------------------------------------------------------------------
  191.   def pdef
  192.     n = base_pdef
  193.     for i in @states
  194.       n *= $data_states[i].pdef_rate / 100.0
  195.     end
  196.     return Integer(n)
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 获取魔法防御
  200.   #--------------------------------------------------------------------------
  201.   def mdef
  202.     n = base_mdef
  203.     for i in @states
  204.       n *= $data_states[i].mdef_rate / 100.0
  205.     end
  206.     return Integer(n)
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 获取回避修正
  210.   #--------------------------------------------------------------------------
  211.   def eva
  212.     n = base_eva
  213.     for i in @states
  214.       n += $data_states[i].eva
  215.     end
  216.     return n
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 更改 HP
  220.   #     hp : 新的 HP
  221.   #--------------------------------------------------------------------------
  222.   def hp=(hp)
  223.     @hp = [[hp, maxhp].min, 0].max
  224.     # 解除附加的战斗不能状态
  225.     for i in 1...$data_states.size
  226.       if $data_states[i].zero_hp
  227.         if self.dead?
  228.           add_state(i)
  229.         else
  230.           remove_state(i)
  231.         end
  232.         if @hp*100/maxhp <= 25 #如果HP百分比低于25的话

  233.         add_state(12)
  234.       else        
  235.        remove_state(12)
  236.      end
  237.     end
  238.       #####

  239.    #  return unless self.is_a?(Game_Actor)

  240.       # ↑如果不是Game_Actor类的话则跳过下面

  241.   #    if @hp*100/maxhp <= 25 #如果HP百分比低于25的话

  242.   #      add_state(12)
  243. #      else        
  244. #      remove_state(12)
  245.   #   end
  246.      
  247.      
  248.       if @hp*100/maxhp <= 50 #如果HP百分比低于50的话

  249.         add_state(13)
  250.       else        
  251.        remove_state(13)
  252.      end
  253.      
  254.          
  255.       if @hp*100/maxhp <= 75 #如果HP百分比低于75的话

  256.         add_state(14)
  257.       else        
  258.        remove_state(14)
  259.      end


  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● 更改 SP
  264.   #     sp : 新的 SP
  265.   #--------------------------------------------------------------------------
  266.   def sp=(sp)
  267.     @sp = [[sp, maxsp].min, 0].max
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 全回复
  271.   #--------------------------------------------------------------------------
  272.   def recover_all
  273.     @hp = maxhp
  274.     @sp = maxsp
  275.     for i in @states.clone
  276.       remove_state(i)
  277.     end
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 获取当前的动作
  281.   #--------------------------------------------------------------------------
  282.   def current_action
  283.     return @current_action
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 确定动作速度
  287.   #--------------------------------------------------------------------------
  288.   def make_action_speed
  289.     @current_action.speed = agi + rand(10 + agi / 4)
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 战斗不能判定
  293.   #--------------------------------------------------------------------------
  294.   def dead?
  295.     return (@hp == 0 and not @immortal)
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 存在判定
  299.   #--------------------------------------------------------------------------
  300.   def exist?
  301.     return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and (@hp > 0 or @immortal))
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● HP 0 判定
  305.   #--------------------------------------------------------------------------
  306.   def hp0?
  307.     return (not [url=home.php?mod=space&uid=292300]@Hidden[/url] and @hp == 0)
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 可以输入命令判定
  311.   #--------------------------------------------------------------------------
  312.   def inputable?
  313.     return (not @hidden and restriction <= 1)
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 可以行动判定
  317.   #--------------------------------------------------------------------------
  318.   def movable?
  319.     return (not @hidden and restriction < 4)
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 防御中判定
  323.   #--------------------------------------------------------------------------
  324.   def guarding?
  325.     return (@current_action.kind == 0 and @current_action.basic == 1)
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 休止中判定
  329.   #--------------------------------------------------------------------------
  330.   def resting?
  331.     return (@current_action.kind == 0 and @current_action.basic == 3)
  332.   end
  333. end
复制代码
比如二号角色处于HP<25%时
不添加12号状态,而添加15号状态
该怎么做?   
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

2
 楼主| 发表于 2013-2-6 10:21:04 手机端发表。 | 只看该作者
没有人知道么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
568 小时
注册时间
2012-9-7
帖子
611
3
发表于 2013-2-6 11:35:34 | 只看该作者
本帖最后由 wingzeroplus 于 2013-2-6 11:59 编辑

加一条件 if @active_battler.id == 2 判断一下
看看行不行,因为你发的脚本不完整,不敢保证一定行得通
FTM正式版已经发布,点击图片开启传送门
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

4
 楼主| 发表于 2013-2-6 17:06:37 | 只看该作者
wingzeroplus 发表于 2013-2-6 11:35
加一条件 if @active_battler.id == 2 判断一下
看看行不行,因为你发的脚本不完整,不敢保证一定行得通 ...

不行啊
没有效果耶
那我把完整的脚本发出来把

点评

原来是在GAME BATTLER里面改的,那确实不行……貌似……我也不知道  发表于 2013-2-6 19:12
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

5
 楼主| 发表于 2013-2-7 16:45:12 | 只看该作者
没有人知道么?
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
6
发表于 2013-2-7 16:52:03 | 只看该作者
case self.id
when 2
add_state(12)
else
add_state(9)
end
湿滑落式骑!
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

7
 楼主| 发表于 2013-2-7 16:57:31 | 只看该作者

为什么XP无法显示♥符号?

羞射了 发表于 2013-2-7 16:52
case self.id
when 2
add_state(12)

看不太明白
能不能解释一下要插入在哪儿?
self.id指的是角色ID么?
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
8
发表于 2013-2-7 17:02:13 | 只看该作者
      if @hp*100/maxhp <= 25 #如果HP百分比低于25的话     
case self.id
when 2
add_state(12)
else
add_state(9)
end
     else        
      remove_state(12)
     end
湿滑落式骑!
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

9
 楼主| 发表于 2013-2-7 17:06:49 | 只看该作者
羞射了 发表于 2013-2-7 17:02
if @hp*100/maxhp

略微明白了
可是状态9要在哪里移除呢?
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
10
发表于 2013-2-7 17:22:45 | 只看该作者
把 remove_state(12) 也这样替换掉啊,你这也叫懂了??

点评

笑尿了  发表于 2013-2-8 10:00
湿滑落式骑!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-6-28 12:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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