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

Project1

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

[已经过期] 淘到一个脚本,希望做些小修改

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
跳转到指定楼层
发表于 2011-9-16 14:17:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 stella 于 2011-9-16 14:23 编辑

这个脚本的作用是当MISS的时候被攻击方移动战斗图,当播放完攻击动画再移回来,我希望添加的是:当命中的时候被攻击方的战斗图快速地左右移动三个来回,用来模仿抖动的样子,在播放完攻击动画之前移回原位,应该怎么改?
  1. class Game_Battler
  2.   attr_accessor :add_x
  3.   alias hzhj_old_ini initialize
  4.   def initialize
  5.     hzhj_old_ini
  6.     @add_x = 0
  7.   end
  8. end

  9. class Sprite_Battler < RPG::Sprite
  10.   MoveSpeed = 8
  11.   alias hzhj_old_initialize initialize
  12.   def initialize(viewport, battler = nil)
  13.     hzhj_old_initialize(viewport, battler)
  14.     if not @battler.nil?
  15.       self.x = @battler.screen_x
  16.     end
  17.     @hzhj_x = self.x
  18.   end
  19.   def battler=(value)
  20.     if @battler != value and value != nil
  21.       self.x = value.screen_x
  22.     end
  23.     @hzhj_x = self.x
  24.     @battler = value
  25.   end
  26.   alias hzhj_old_update update
  27.   def update
  28.     hzhj_old_update
  29.     self.x = @hzhj_x
  30.     if not @battler.nil? and not @battler.dead?
  31.       if self.x < @battler.screen_x + @battler.add_x
  32.         self.x = [self.x + MoveSpeed, @battler.screen_x + @battler.add_x].min
  33.       elsif self.x > @battler.screen_x + @battler.add_x
  34.         self.x = [self.x - MoveSpeed, @battler.screen_x + @battler.add_x].max
  35.       end
  36.     end
  37.     @hzhj_x = self.x
  38.   end
  39.   def x
  40.     if @effect_hzhj
  41.       if @battler.nil?
  42.         return super
  43.       else
  44.         return @battler.screen_x
  45.       end
  46.     else
  47.       return super
  48.     end
  49.   end
  50.   def update_animation
  51.     @effect_hzhj = true
  52.     super
  53.     @effect_hzhj = false
  54.   end
  55.   def animation(*args)
  56.     @effect_hzhj = true
  57.     super(*args)
  58.     @effect_hzhj = false
  59.   end
  60.   def update_damage
  61.     @effect_hzhj = true
  62.     super
  63.     @effect_hzhj = false
  64.   end
  65.   def damage(*args)
  66.     @effect_hzhj = true
  67.     super(*args)
  68.     @effect_hzhj = false
  69.   end
  70. end

  71. class Scene_Battle
  72.   alias hzhj_old_update_phase4_step4 update_phase4_step4
  73.   def update_phase4_step4
  74.     hzhj_old_update_phase4_step4
  75.     for target in @target_battlers
  76.       next if target.dead?
  77.       next if target.damage != "Miss"
  78.       if target.is_a?(Game_Actor)
  79.         target.add_x = -64
  80.       elsif target.is_a?(Game_Enemy)
  81.         target.add_x = 64
  82.       end
  83.     end
  84.   end
  85.   alias hzhj_old_update_phase4_step5 update_phase4_step5
  86.   def update_phase4_step5
  87.     hzhj_old_update_phase4_step5
  88.     for target in @target_battlers
  89.       target.add_x = 0
  90.     end
  91.   end
  92. end
复制代码

点评

马甲挺多的。  发表于 2011-9-19 08:51

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
11
发表于 2011-9-19 16:23:59 | 只看该作者
我也想等触手解答,
因为函数的重定义后,会使用最后一个函数,所以要先等等前一个触发完后在触发另外一个动作,

所以才不能直接在底下添加,那应该是找些代码加入脚本变为先后顺序吧??
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
10
 楼主| 发表于 2011-9-19 15:54:40 | 只看该作者
本帖最后由 stella 于 2011-9-19 15:55 编辑
双叶GL 发表于 2011-9-19 15:13
因为else,除了这些情况以外的情况时就会移动距离X-10...

        if not @battler.nil? and not @battle ...


我就是要在播放攻击动画的时候多次循环啊,但是循环不出来啊,没有往复移动的效果,用loop do都没用啊。。!
  1.         if not @battler.nil? and not @battler.dead?
  2.           dd = 3
  3.           loop do
  4.             dd -= 1
  5.             target.add_x = 0 - target.add_x
  6.             if dd == 0
  7.               break
  8.             end
  9.           end
  10.         end
复制代码
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
9
发表于 2011-9-19 15:13:28 | 只看该作者
本帖最后由 双叶GL 于 2011-9-19 15:24 编辑
stella 发表于 2011-9-19 12:34
是不是最后一段改成这样?但是打中对方没有来回抖动啊?只动了一下。。MISS的效果我不需要改,我只改动命 ...


因为else,除了这些情况以外的情况时就会移动距离X-10...

        if not @battler.nil? and not @battler.dead?
          if self.x < @battler.screen_x + @battler.add_x
            self.x = [self.x + MoveSpeed, @battler.screen_x + @battler.add_x ].min  
          elsif self.x > @battler.screen_x + @battler.add_x
            self.x = [self.x - MoveSpeed, @battler.screen_x + @battler.add_x].max  
          end
上面有的这一段代码应该不需要重复输入吧

想要来回多重应该是循环吧,F1帮助里面有个循环,我对纯文字不理解,所以无法试验....

评分

参与人数 1星屑 +400 梦石 +2 收起 理由
「旅」 + 400 + 2 好认真的回复~

查看全部评分

- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
8
 楼主| 发表于 2011-9-19 12:34:55 | 只看该作者
本帖最后由 stella 于 2011-9-19 13:13 编辑
双叶GL 发表于 2011-9-19 11:55
Game_Enemy是敌人单位移动
Game_Actor是自己单位移动,
这里计算坐标移动的距离


是不是最后一段改成这样?但是打中对方没有来回抖动啊?只动了一下。。MISS的效果我不需要改,我只改动命中后战斗图的抖动
  1. class Scene_Battle
  2.   alias hzhj_old_update_phase4_step4 update_phase4_step4
  3.   def update_phase4_step4
  4.     hzhj_old_update_phase4_step4
  5.     for target in @target_battlers
  6.       next if target.dead?
  7.       if target.damage == "Miss"
  8.         if target.is_a?(Game_Actor)
  9.           target.add_x = -64
  10.         elsif target.is_a?(Game_Enemy)
  11.           target.add_x = 64
  12.         end
  13.       else
  14.         if target.is_a?(Game_Actor)
  15.           target.add_x = -10
  16.         elsif target.is_a?(Game_Enemy)
  17.           target.add_x = 10
  18.         end
  19.         if not @battler.nil? and not @battler.dead?
  20.           if self.x < @battler.screen_x + @battler.add_x
  21.             self.x = [self.x + MoveSpeed, @battler.screen_x + @battler.add_x ].min  
  22.           elsif self.x > @battler.screen_x + @battler.add_x
  23.             self.x = [self.x - MoveSpeed, @battler.screen_x + @battler.add_x].max  
  24.           end
  25.         end
  26.       end
  27.     end
  28.   end
  29.   alias hzhj_old_update_phase4_step5 update_phase4_step5
  30.   def update_phase4_step5
  31.     hzhj_old_update_phase4_step5
  32.     for target in @target_battlers
  33.       target.add_x = 0
  34.     end
  35.   end
  36. end
复制代码
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
7
发表于 2011-9-19 11:55:21 | 只看该作者
本帖最后由 双叶GL 于 2011-9-19 12:11 编辑

Game_Enemy是敌人单位移动
Game_Actor是自己单位移动,
这里计算坐标移动的距离
    if not @battler.nil? and not @battler.dead?
      if self.x < @battler.screen_x + @battler.add_x
        self.x = [self.x + MoveSpeed, @battler.screen_x + @battler.add_x ].min//self.x + MoveSpeed,这就是坐标+移动的速度,修改MoveSpeed加快移动的速度例如self.x + 200
      elsif self.x > @battler.screen_x + @battler.add_x
        self.x = [self.x - MoveSpeed, @battler.screen_x + @battler.add_x].max //这里就是回来的攻击结束后回来的速度
      end
    end
后面的(之前说的)target.add_x是移动的方向和移动的距离,
最后一段
  alias hzhj_old_update_phase4_step5 update_phase4_step5
  def update_phase4_step5
    hzhj_old_update_phase4_step5
    for target in @target_battlers
      target.add_x = 0这里是还原坐标为0
那么就应该是在这上面一段添加一段代码,

怎么解释很麻烦,我不会解释!!!!嗯,求触解释���
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
6
 楼主| 发表于 2011-9-19 08:45:15 | 只看该作者
双叶GL 发表于 2011-9-19 00:14
在73~86那段改
class Scene_Battle
  alias hzhj_old_update_phase4_step4 update_phase4_step4

我想做的是战斗图往复运动的效果,也就是战斗图左右左右左右平移之后回到原位,应该怎么写?

而且原来脚本的效果是:被攻击方的动作在攻击动画结束之后才完成,如果作为被打效果显得慢了一拍。我希望被攻击方的平移动作和攻击动画同时进行、同时结束。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
122 小时
注册时间
2010-12-23
帖子
179
5
发表于 2011-9-19 00:14:42 | 只看该作者
本帖最后由 双叶GL 于 2011-9-19 00:16 编辑

在73~86那段改
class Scene_Battle
  alias hzhj_old_update_phase4_step4 update_phase4_step4
  def update_phase4_step4
    hzhj_old_update_phase4_step4
    for target in @target_battlers
      next if target.dead?
      next if target.damage != "Miss"
      if target.is_a?(Game_Actor)//判断成功就后退
         target.add_x = -64//这里看移动的距离
在这里添加被打中miss时的特效↑,也可以变成图片什么的,

      elsif target.is_a?(Game_Enemy)//然后又还原就是这里
        target.add_x = 64//这里就还原
这里就是攻击结束后记得还原就可以了

      end
    end
  end
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复

使用道具 举报

Lv1.梦旅人

神仙

梦石
0
星屑
69
在线时间
596 小时
注册时间
2007-5-14
帖子
1289
4
发表于 2011-9-18 17:52:09 | 只看该作者
哎呀!不错啊
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
3
发表于 2011-9-18 17:45:38 | 只看该作者
将Miss的效果依样画葫芦到被命中时不就行了,这么简单,自己动手吧

博客:我的博客
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
153 小时
注册时间
2008-5-25
帖子
585
2
发表于 2011-9-18 10:42:27 | 只看该作者
对战斗脚本不是很了解。。。
就这种效果吧。
要懂得知足,不是你要什么效果就有人会帮你改的。
还得自己动手。
[color=DimGray]TransFormer4[/color]
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 12:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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