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

Project1

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

动画战斗脚本问题带范例

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
52
在线时间
0 小时
注册时间
2009-3-7
帖子
64
跳转到指定楼层
1
发表于 2009-3-23 20:02:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我的游戏人物的带机动画能实现了怪的没找到哪改
哪个帮看看是哪的问题下面的是范例{/ll}
http://rpg.blue/upload_program/d/xyt072912_Project3_118238476.rar
此贴于 2009-3-25 12:06:38 被版主darkten提醒,请楼主看到后对本贴做出回应。

Lv1.梦旅人

梦石
0
星屑
52
在线时间
0 小时
注册时间
2009-3-7
帖子
64
2
 楼主| 发表于 2009-3-24 03:04:10 | 只看该作者
{/fn}居然没人理会
{/ll}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
9 小时
注册时间
2008-7-21
帖子
174
3
发表于 2009-3-24 03:57:11 | 只看该作者
他的三个脚本
  1. #==============================================================================
  2. # ■ Game_Battler (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  5. # 超级类来使用。
  6. #==============================================================================

  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :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.     @hidden = 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.       end
  233.     end
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 更改 SP
  237.   #     sp : 新的 SP
  238.   #--------------------------------------------------------------------------
  239.   def sp=(sp)
  240.     @sp = [[sp, maxsp].min, 0].max
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 全回复
  244.   #--------------------------------------------------------------------------
  245.   def recover_all
  246.     @hp = maxhp
  247.     @sp = maxsp
  248.     for i in @states.clone
  249.       remove_state(i)
  250.     end
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 获取当前的动作
  254.   #--------------------------------------------------------------------------
  255.   def current_action
  256.     return @current_action
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 确定动作速度
  260.   #--------------------------------------------------------------------------
  261.   def make_action_speed
  262.     @current_action.speed = agi + rand(10 + agi / 4)
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 战斗不能判定
  266.   #--------------------------------------------------------------------------
  267.   def dead?
  268.     return (@hp == 0 and not @immortal)
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 存在判定
  272.   #--------------------------------------------------------------------------
  273.   def exist?
  274.     return (not @hidden and (@hp > 0 or @immortal))
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● HP 0 判定
  278.   #--------------------------------------------------------------------------
  279.   def hp0?
  280.     return (not @hidden and @hp == 0)
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 可以输入命令判定
  284.   #--------------------------------------------------------------------------
  285.   def inputable?
  286.     return (not @hidden and restriction <= 1)
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 可以行动判定
  290.   #--------------------------------------------------------------------------
  291.   def movable?
  292.     return (not @hidden and restriction < 4)
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 防御中判定
  296.   #--------------------------------------------------------------------------
  297.   def guarding?
  298.     return (@current_action.kind == 0 and @current_action.basic == 1)
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 休止中判定
  302.   #--------------------------------------------------------------------------
  303.   def resting?
  304.     return (@current_action.kind == 0 and @current_action.basic == 3)
  305.   end
  306. end
复制代码




  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================

  7. class Sprite_Battler < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :battler                  # 战斗者
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport : 显示端口
  15.   #     battler  : 战斗者 (Game_Battler)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, battler = nil)
  18.     super(viewport)
  19.     @battler = battler
  20.     @battler_visible = false
  21.     #★★★★★★★★★★★★
  22.     @nx = 0
  23.     @xbit = 0
  24.     #★★★★★★★★★★★★
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 释放
  28.   #--------------------------------------------------------------------------
  29.   def dispose
  30.     if self.bitmap != nil
  31.       self.bitmap.dispose
  32.     end
  33.     super
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 刷新画面
  37.   #--------------------------------------------------------------------------
  38.   def update
  39.     super
  40.     # 战斗者为 nil 的情况下
  41.     if @battler == nil
  42.       self.bitmap = nil
  43.       loop_animation(nil)
  44.       return
  45.     end
  46.     # 文件名和色相与当前情况有差异的情况下
  47.     if @battler.battler_name != @battler_name or
  48.        @battler.battler_hue != @battler_hue
  49.       @battler_hue = @battler.battler_hue
  50.       # 获取、设置位图
  51.       @battler_name = @battler.battler_name
  52.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  53.       @width = bitmap.width
  54.       @height = bitmap.height
  55.       self.ox = @width / 2
  56.       self.oy = @height
  57.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  58.       if @battler.is_a?(Game_Enemy)
  59.         if @battler.dead? or @battler.hidden
  60.           self.opacity = 0
  61.         end
  62.       end
  63.     end
  64.    
  65.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  66.     if @battler.is_a?(Game_Actor)
  67.       @nx += 1
  68.       @nx %= 40
  69.       @xbit = @nx / 10 * self.bitmap.width/8
  70.       self.src_rect.set(@xbit, 0, self.bitmap.width/8, self.bitmap.height)
  71.     end
  72.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  73.    
  74.     # 动画 ID 与当前的情况有差异的情况下
  75.     if @battler.damage == nil and
  76.        @battler.state_animation_id != @state_animation_id
  77.       @state_animation_id = @battler.state_animation_id
  78.       loop_animation($data_animations[@state_animation_id])
  79.     end
  80.     # 应该被显示的角色的情况下
  81.     if @battler.is_a?(Game_Actor) and @battler_visible
  82.       # 不是主状态的时候稍稍降低点透明度
  83.       if $game_temp.battle_main_phase
  84.         self.opacity += 3 if self.opacity < 255
  85.       else
  86.         self.opacity -= 3 if self.opacity > 207
  87.       end
  88.     end
  89.     # 明灭
  90.     if @battler.blink
  91.       blink_on
  92.     else
  93.       blink_off
  94.     end
  95.     # 不可见的情况下
  96.     unless @battler_visible
  97.       # 出现 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  98.       if not @battler.hidden and not @battler.dead? and
  99.          (@battler.damage == nil or @battler.damage_pop)
  100.         if @battler.is_a?(Game_Enemy)
  101.           appear
  102.         else
  103.           @battler.battler_name = @battler.battler_name.split(/★/)[0]
  104.         end
  105.         @battler_visible = true
  106.       end
  107.     end
  108.     # 可见的情况下
  109.     if @battler_visible
  110.       # 逃跑
  111.       if @battler.hidden
  112.         $game_system.se_play($data_system.escape_se)
  113.         escape
  114.         @battler_visible = false
  115.       end
  116.       # 白色闪烁
  117.       if @battler.white_flash
  118.         whiten
  119.         @battler.white_flash = false
  120.       end
  121.       # 动画
  122.       if @battler.animation_id != 0
  123.         animation = $data_animations[@battler.animation_id]
  124.         animation(animation, @battler.animation_hit)
  125.         @battler.animation_id = 0
  126.       end
  127.       # 伤害
  128.       if @battler.damage_pop
  129.         damage(@battler.damage, @battler.critical)
  130.         @battler.damage = nil
  131.         @battler.critical = false
  132.         @battler.damage_pop = false
  133.       end
  134.       # korapusu★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  135.       if @battler.damage == nil and @battler.dead?
  136.         if @battler.is_a?(Game_Enemy)
  137.           $game_system.se_play($data_system.enemy_collapse_se)
  138.           collapse
  139.         else
  140.           $game_system.se_play($data_system.actor_collapse_se)
  141.           @battler.battler_name = @battler.battler_name.split(/★/)[0]
  142.           @battler.battler_name = @battler.battler_name + "★2"
  143.         end
  144.         @battler_visible = false
  145.       end
  146.     end
  147.     # 设置活动块的坐标
  148.     self.x = @battler.screen_x
  149.     self.y = @battler.screen_y
  150.     self.z = @battler.screen_z
  151.   end
  152. end
复制代码




  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def damage(value, critical)
  4.       dispose_damage
  5.       if value.is_a?(Numeric)
  6.         damage_string = value.abs.to_s
  7.       else
  8.         damage_string = value.to_s
  9.       end
  10.       bitmap = Bitmap.new(160, 48)
  11.       bitmap.font.name = "Arial Black"
  12.       bitmap.font.size = 32
  13.       bitmap.font.color.set(0, 0, 0)
  14.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  15.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  16.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  17.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  18.       if value.is_a?(Numeric) and value < 0
  19.         bitmap.font.color.set(176, 255, 144)
  20.       else
  21.         bitmap.font.color.set(255, 255, 255)
  22.       end
  23.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  24.       if critical
  25.         bitmap.font.size = 20
  26.         bitmap.font.color.set(0, 0, 0)
  27.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  28.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  29.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  30.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  31.         bitmap.font.color.set(255, 255, 255)
  32.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  33.       end
  34.       @_damage_sprite = ::Sprite.new(self.viewport)
  35.       @_damage_sprite.bitmap = bitmap
  36.       @_damage_sprite.ox = 80
  37.       @_damage_sprite.oy = 20
  38.       @_damage_sprite.x = self.x
  39.       @_damage_sprite.x -= self.bitmap.width/2 if @battler.is_a?(Game_Actor)
  40.       @_damage_sprite.y = self.y - self.oy / 2
  41.       @_damage_sprite.z = 3000
  42.       @_damage_duration = 40
  43.     end
  44.   end
  45. end
复制代码




大家看一看



楼主你的范例不能玩
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
0 小时
注册时间
2009-3-7
帖子
64
4
 楼主| 发表于 2009-6-12 08:00:00 | 只看该作者
以下引用xyt072912于2009-3-23 19:04:10的发言:

居然没人理会

太伤自尊了
版主对此帖的评论:『……无意义回复。』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

5
发表于 2009-3-24 08:26:01 | 只看该作者
- -我就不给你啥都做到了,你那是按照66的修改法修改的吧?
找到if @battler.is_a?(Game_Enemy),按照if @battler.is_a?(Game_Actor)的方法同理修改即可。

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
0 小时
注册时间
2009-3-7
帖子
64
6
 楼主| 发表于 2009-3-24 20:25:46 | 只看该作者
是按照66的改法改的可是没什么效果!~你说的这个有点复杂{/cy}不是很明白
以下引用天圣的马甲于2009-3-24 0:26:01的发言:

- -我就不给你啥都做到了,你那是按照66的修改法修改的吧?
找到if @battler.is_a?(Game_Enemy),按照if @battler.is_a?(Game_Actor)的方法同理修改即可。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
0 小时
注册时间
2009-3-7
帖子
64
7
 楼主| 发表于 2009-3-25 01:56:51 | 只看该作者
哪个帮改下啊?
我是新手光改人物的脚本就弄了2晚上。。还是翻的宝典很多地方看不懂!
怪的还不知道弄到什么时候!~
哪个能帮改下啊!~
先谢谢了啊

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
0
在线时间
0 小时
注册时间
2009-3-25
帖子
2
8
发表于 2009-3-25 06:33:35 | 只看该作者
本人新手飘过
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 06:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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