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

Project1

 找回密码
 注册会员
搜索
楼主: soulframe
打印 上一主题 下一主题

如何用闪光来限定挨打战斗图的出现时机?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
35 小时
注册时间
2006-3-11
帖子
153
21
 楼主| 发表于 2008-7-20 09:23:39 | 只看该作者
在彩虹神剑判断敌人跳跃处增加定义target之后,便可以改变对象战斗图的图形……试验了一下用在角色身上似乎可行,由于对脚本不熟没办法改得比较到位~

   
  1. case timing.flash_scope
  2.         when 1
  3.           unless dontflash
  4.             self.flash(timing.flash_color, timing.flash_duration * 2)
  5.             if @_total_damage >0
  6.               @flash_shake_switch = true
  7.               @flash_shake = 2
  8.               target=$game_party.random_target_actor
  9.               target.battler_name = target.battler_name.split(/★/)[0]
  10.               target.battler_name = target.battler_name + "★2"         
  11.             end
  12.           end
  13.           return timing.flash_color.alpha * timing.flash_duration
  14.         when 2
  15.           unless dontflash
  16.             if self.viewport != nil
  17.               self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  18.               target=$game_party.random_target_actor
  19.               target.battler_name = target.battler_name.split(/★/)[0]
  20.               target.battler_name = target.battler_name + "★2"
  21.               return timing.flash_color.alpha * timing.flash_duration
  22.             end
  23.           end
  24.         when 3
  25.           unless dontflash
  26.             self.flash(nil, timing.flash_duration * 2)
  27.           end
  28.           return timing.flash_color.alpha * timing.flash_duration
  29.         end
  30.       end      

  31.       return 0
  32.     end   
  33. end
  34. end
复制代码
soulframe-rpg.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
22
发表于 2008-7-20 09:23:52 | 只看该作者
我刚才看了看彩虹神剑,不过时间太短,判定还没有知道在那,不过有点思路了,如
  1. def damage(value, critical)
  2.       # 释放伤害,效果是伤害数字快速消失,觉得不如不消失好看......
  3.       #dispose_damage
  4.       #清除hit数
  5.       dispose_hit
  6.       # 如果伤害值是数值
  7.       if value.is_a?(Numeric)
  8.         # 绝对值转为字符串
  9.         damage_string = value.abs.to_s
  10.       else
  11.         # 转为字符串
  12.         damage_string = value.to_s
  13.       end
  14.       # 初始化位图
  15.       bitmap = Bitmap.new(162, 64)
  16.       bitmap.font.name = ["华文行楷","黑体", "宋体"]
  17.       bitmap.font.size = 32
  18.       # 伤害值是数值的情况下
  19.       if value.is_a?(Numeric)
  20.         # 分割伤害值字符串
  21.         damage_array = damage_string.scan(/./)
  22.         damage_x = 81 - damage_string.size * 9
  23.         # 伤害值为负的情况下
  24.         if value < 0
  25.           # 调用回复数字表
  26.           rect_y = 32
  27.         else
  28.           # 调用伤害数字表
  29.           rect_y = 0
  30.         end
  31.         # 循环伤害值字符串
  32.         for char in damage_array
  33.           number = char.to_i
  34.           # 显示伤害数字
  35.           bitmap.blt(damage_x, 32, RPG::Cache.picture("Damagenew"),
  36.           Rect.new(number * 18, rect_y, 18, 32))
  37.           # 后移一位
  38.           damage_x += 18
  39.         end
  40.       # 伤害值不是数值的情况
  41.       else
  42.         # 如果伤害值不是 Miss
  43.         unless value == "Miss"
  44.           # 系统默认描画字符串
  45.           bitmap.font.color.set(0, 0, 0)
  46.           bitmap.draw_text(-1, 27, 162, 36, damage_string, 1)
  47.           bitmap.draw_text(+1, 27, 162, 36, damage_string, 1)
  48.           bitmap.draw_text(-1, 29, 162, 36, damage_string, 1)
  49.           bitmap.draw_text(+1, 29, 162, 36, damage_string, 1)
  50.           bitmap.font.color.set(255, 255, 255)
  51.           bitmap.draw_text(0, 28, 162, 36, damage_string, 1)
  52.         # Miss 的情况下
  53.         else
  54.           # 显示未击中图画
  55.           bitmap.blt(36, 28, RPG::Cache.picture("Damage"), Rect.new(90, 64, 90, 32))
  56.         end
  57.       end
  58.       # 会心一击标志打开的情况
  59.       if critical
  60.         # 显示会心一击图画
  61.         bitmap.blt(36, 0, RPG::Cache.picture("Damage"), Rect.new(0, 64, 90, 32))
  62.       end
  63.       # 伤害值定位
  64.       @_damage_sprite = ::Sprite.new(self.viewport)
  65.       @_damage_sprite.bitmap = bitmap
  66.       @_damage_sprite.ox = 81
  67.       @_damage_sprite.oy = 20
  68.       @_damage_sprite.x = self.x
  69.       @_damage_sprite.y = self.y - self.oy / 2
  70.       @_damage_sprite.z = 3000
  71.       @_damage_duration = 40
  72.       @_damage.push([@_damage_sprite,@_damage_duration-10,0, rand(30) - 15, rand(3)])
  73.       make_total_damage(value)  

  74.     end
复制代码
这一段,它是伤害处理的,应该是每次伤害都要调用的,因为彩虹圣剑本身就是闪烁都要调用伤害处理的,所以楼主可以试试把挨打动画写入其中,当然刷新部分也要写,不过只是思路,明天如果还没有解决,并且我知道的话就做一个工程给你参考一下把。这方法肯定和超级横板的挨打部分冲突,把它去掉就可。还有就是必须要在伤害处理完结时,把动画去掉。如果miss时,不挨打最好是写入hit那里
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
23
发表于 2008-7-20 09:25:40 | 只看该作者
呵呵,思路一样。。。明天我试试把,现在太晚了,困死了,888
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
35 小时
注册时间
2006-3-11
帖子
153
24
 楼主| 发表于 2008-7-20 09:31:57 | 只看该作者
好的多谢~

以下引用lhbadsl于2008-7-20 1:25:40的发言:

呵呵,思路一样。。。明天我试试把,现在太晚了,困死了,888

soulframe-rpg.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
25
发表于 2008-7-21 02:45:49 | 只看该作者
呵呵,不好意思,问题只解决了一半。。还差一个等待函数。。。个人真的对rgss1.0十分的无奈,万恶的xp。。居然没有wait()函数,不过其他已经解决了。。。我的方法是,在彩虹圣剑代码中的def damage(value, critical)中就是我昨天告诉你的那里加入了。。。
  1. bat=@battler
  2.       #p @battler
  3.        #p bat.damage
  4.        if bat.damage != nil
  5.         temp_name=bat.battler_name
  6.         p temp_name
  7.         bat.battler_name = bat.battler_name.split(/★/)[0]
  8.         bat.battler_name = bat.battler_name + "★3"
  9.         #wait(20)#这里写入等待数帧,因为如果不等待“挨打”是不会显示出来的,因为
  10.         #xp没有wait()这个在vx中常用的等待函数,我还在想解决的办法。。。。就是它
  11.         #所以问题才解决了一半,我想你的xp比我好一点,可能会知道办法,我先发出来,
  12.         #给你看一下,好看看对你这会不会更容易一点(比我这个xp白痴。。。)
  13.         p bat.battler_name
  14.         bat.battler_name=temp_name
  15.         #p bat.battler_name
  16.         end
复制代码

几句,它的意思是这样的,因为彩虹神剑每次闪光都要调用def damage(value, critical)函数,所以我把它写在这里,因为我看过柳柳的彩虹,应该没有比这个地方更好的(用代码少,冲突少,基本上除了和超级横板的挨打那里冲突外,这是肯定的,要把它去掉,我手上没有超级横板,对他的研究很少,不过因为超级和彩虹都是66写的,我估计他们本身是不会冲突的),上面我用了@battler这个变量是因为damage(value, critical)是在内部类定义的,很底层所以直接用battler_name肯定不行,只有用@battler这个同样底层的变量了(它的意思是画面上的所有战斗者),为了避免和其他有用到@battler的地方冲突,写了这一句bat=@battler,就是用另外一个变量代替它。但是到了这里直接用@battler会出现一个问题,就是行动方也会改变图,因为在这个地方同样不能用target这个方法,原因是父类不能用子类的方法。。。。所以你的重定义target是一个非常不好的方法(当然也不是不行,不过问题会更加复杂,冲突多如牛毛),所以我用了if bat.damage != nil这一句就是受到伤害的都“挨打”,后面的你也可以看得动了,不用我讲了吧。。我试过可以的,判定很准确,一闪光就挨打。。。p语句是测试它的功能性的,全#了就可,我做了个工程是满足了你的要求了,不过由于xp没有wait()就是等待函数,这就是为什么问题只解决了一半的原因,我在看着vx的说明书看看有什么办法把它翻译成rgss...无奈也
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
26
发表于 2008-7-21 02:57:11 | 只看该作者
http://rpg.blue/upload_program/files/Project4_97008665.rar
这个是我做的脚本工程,一开始就开始战斗,直接用十字斩,敌人也只会用十字斩,看过后,再看看我数据库中的十字斩定义就可以知道,这个东西有用并且也就知道了这个东西为什么只完成了一半。。。。。谁叫我不懂xp呢。。。。正在努力找出xp的做wait()函数的办法。。埃,如果楼主用的是vx那有多好啊!!!!!!!!!!
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
27
发表于 2008-7-21 03:05:29 | 只看该作者
http://rpg.blue/upload_program/files/Project4_97009179.rar
那个下不了,重新发一个。。。还有楼主打开游戏后,不用管主角liu的战斗图,它是有的不过由于没有调坐标,看不到。。如果找到等待代码的方法请告诉在下。。。我也在想办法,应该不久后会知道的。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
35 小时
注册时间
2006-3-11
帖子
153
28
 楼主| 发表于 2008-7-21 04:05:18 | 只看该作者
p出来的战斗图名字确实是加过星的,但是去掉p以后正常运行看着并没有变化,果然是等待的问题么……

以下引用lhbadsl于2008-7-20 19:05:29的发言:

http://rpg.blue/upload_program/files/Project4_97009179.rar
那个下不了,重新发一个。。。还有楼主打开游戏后,不用管主角liu的战斗图,它是有的不过由于没有调坐标,看不到。。如果找到等待代码的方法请告诉在下。。。我也在想办法,应该不久后会知道的。。。

soulframe-rpg.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
35 小时
注册时间
2006-3-11
帖子
153
29
 楼主| 发表于 2008-7-21 04:38:07 | 只看该作者
你看他那个脚本里面有无什么刷新的步骤能够把战斗图变回来放到那步去处理?

以下引用lhbadsl于2008-7-20 19:05:29的发言:

http://rpg.blue/upload_program/files/Project4_97009179.rar
那个下不了,重新发一个。。。还有楼主打开游戏后,不用管主角liu的战斗图,它是有的不过由于没有调坐标,看不到。。如果找到等待代码的方法请告诉在下。。。我也在想办法,应该不久后会知道的。。。

soulframe-rpg.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
30
发表于 2008-7-21 04:39:07 | 只看该作者
呵呵,已经解决了,等我在上传完整版的,这次好了,呵呵呵。xp啊。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-8-11 04:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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