Project1

标题: 战斗表现效果:可视化选框 [打印本页]

作者: 柳柳    时间: 2008-1-14 03:41
标题: 战斗表现效果:可视化选框


极其简单的小脚本,算是这次整合系统提出要求中通用性最好的功能之一。

使用时候首先先下载以下图:
http://rpg.blue/UP_PIC/200801/enemy_select_back_80681796.png
命名为enemy_select_back.png放在Graphics/system下面

然后修改脚本:

第一段:选择敌人的窗体的时候
class Window_TargetEnemy < Window_Command
  #--------------------------------------------------------------------------
  # ● 刷新屏幕敌人状态
  #--------------------------------------------------------------------------  
  def update
    super
    if @index != @now_index
      @now_index = @index
      $scene.update_target_select_sprite(enemy)
    end
  end
end



第二段:战斗逻辑判断:
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 开始对象敌人的选择
  #--------------------------------------------------------------------------
  def start_target_enemy_selection
    @target_enemy_window = Window_TargetEnemy.new
    @target_enemy_window.y = @info_viewport.rect.y
    @info_viewport.rect.x += @target_enemy_window.width
    @info_viewport.ox += @target_enemy_window.width
    @actor_command_window.active = false
    @target_select_sprite = Sprite.new
    @target_select_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @target_select_sprite.opacity = 160
  end
  #--------------------------------------------------------------------------
  # ● 刷新选择对象的选择框
  #--------------------------------------------------------------------------
  def update_target_select_sprite(enemy)
    @target_select_sprite.bitmap.clear
    @target_select_sprite.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(0, 0, 0, 255))
    #enemy_bmp = enemy.avatar("站立", 0)
    enemy_bmp = Cache.battler(enemy.battler_name, enemy.battler_hue)
    enemy_x = enemy.screen_x
    enemy_y = enemy.screen_y
    dest_rect = Rect.new(enemy_x - enemy_bmp.width / 2, enemy_y - enemy_bmp.height ,
                         enemy_bmp.width, enemy_bmp.height)
    src_bitmap = Cache.system("enemy_select_back")
    src_rect = src_bitmap.rect
    @target_select_sprite.bitmap.clear_rect(dest_rect)
    @target_select_sprite.bitmap.stretch_blt(dest_rect, src_bitmap, src_rect)
    @target_select_sprite.bitmap.blur
    @target_select_sprite.bitmap.blur
  end
  #--------------------------------------------------------------------------
  # ● 结束对象敌人的选择
  #--------------------------------------------------------------------------
  def end_target_enemy_selection
    @info_viewport.rect.x -= @target_enemy_window.width
    @info_viewport.ox -= @target_enemy_window.width
    @target_enemy_window.dispose
    @target_enemy_window = nil
    @target_select_sprite.dispose
    @target_select_sprite = nil
    if @actor_command_window.index == 0
      @actor_command_window.active = true
    end
  end
end


简单这么一改就可以了。此算法同样适用于RMXP,但是由于RMXP没有blur功能,选框的边缘需要好好做一做,这里我就不写了,有兴趣可以自己尝试一下。


作者: 柳柳    时间: 2008-1-14 03:41
标题: 战斗表现效果:可视化选框


极其简单的小脚本,算是这次整合系统提出要求中通用性最好的功能之一。

使用时候首先先下载以下图:
http://rpg.blue/UP_PIC/200801/enemy_select_back_80681796.png
命名为enemy_select_back.png放在Graphics/system下面

然后修改脚本:

第一段:选择敌人的窗体的时候
class Window_TargetEnemy < Window_Command
  #--------------------------------------------------------------------------
  # ● 刷新屏幕敌人状态
  #--------------------------------------------------------------------------  
  def update
    super
    if @index != @now_index
      @now_index = @index
      $scene.update_target_select_sprite(enemy)
    end
  end
end



第二段:战斗逻辑判断:
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 开始对象敌人的选择
  #--------------------------------------------------------------------------
  def start_target_enemy_selection
    @target_enemy_window = Window_TargetEnemy.new
    @target_enemy_window.y = @info_viewport.rect.y
    @info_viewport.rect.x += @target_enemy_window.width
    @info_viewport.ox += @target_enemy_window.width
    @actor_command_window.active = false
    @target_select_sprite = Sprite.new
    @target_select_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @target_select_sprite.opacity = 160
  end
  #--------------------------------------------------------------------------
  # ● 刷新选择对象的选择框
  #--------------------------------------------------------------------------
  def update_target_select_sprite(enemy)
    @target_select_sprite.bitmap.clear
    @target_select_sprite.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(0, 0, 0, 255))
    #enemy_bmp = enemy.avatar("站立", 0)
    enemy_bmp = Cache.battler(enemy.battler_name, enemy.battler_hue)
    enemy_x = enemy.screen_x
    enemy_y = enemy.screen_y
    dest_rect = Rect.new(enemy_x - enemy_bmp.width / 2, enemy_y - enemy_bmp.height ,
                         enemy_bmp.width, enemy_bmp.height)
    src_bitmap = Cache.system("enemy_select_back")
    src_rect = src_bitmap.rect
    @target_select_sprite.bitmap.clear_rect(dest_rect)
    @target_select_sprite.bitmap.stretch_blt(dest_rect, src_bitmap, src_rect)
    @target_select_sprite.bitmap.blur
    @target_select_sprite.bitmap.blur
  end
  #--------------------------------------------------------------------------
  # ● 结束对象敌人的选择
  #--------------------------------------------------------------------------
  def end_target_enemy_selection
    @info_viewport.rect.x -= @target_enemy_window.width
    @info_viewport.ox -= @target_enemy_window.width
    @target_enemy_window.dispose
    @target_enemy_window = nil
    @target_select_sprite.dispose
    @target_select_sprite = nil
    if @actor_command_window.index == 0
      @actor_command_window.active = true
    end
  end
end


简单这么一改就可以了。此算法同样适用于RMXP,但是由于RMXP没有blur功能,选框的边缘需要好好做一做,这里我就不写了,有兴趣可以自己尝试一下。


作者: 风雪优游    时间: 2008-1-14 04:44
超帅!!!无限支持中~~~战斗系统能加入脸图在下面吗?如2003样的
作者: 柳柳    时间: 2008-1-14 04:51
哦……我这个里面是有的……很简单啊,你居然不看我以前的录像教程{/dk} 太可恶了,实在是太可恶了{/dk},我哭……

你要的话我再发个帖子就好了。
作者: 叮当    时间: 2008-1-15 04:56
http://f53.aaa.livedoor.jp/~momomo/rgss2/Target_Flash.html

更简单方便的选框
作者: 柳柳    时间: 2008-1-15 05:21
这个是XP时候的闪烁或变白效果么?不够恶搞,咱这个可以把遮罩图做成一个大大的桃心~~
作者: 玄天    时间: 2008-1-15 05:25
不如一按选择就好像被闪光弹闪到一样吧,更爽
作者: 叮当    时间: 2008-1-15 20:46
以下引用柳柳于2008-1-14 21:21:24的发言:

这个是XP时候的闪烁或变白效果么?不够恶搞,咱这个可以把遮罩图做成一个大大的桃心~~


囧…………………………………………………………… 爱的攻击
作者: 风雪优游    时间: 2008-1-16 08:12
以下引用柳柳于2008-1-13 20:51:42的发言:

哦……我这个里面是有的……很简单啊,你居然不看我以前的录像教程 太可恶了,实在是太可恶了,我哭……

你要的话我再发个帖子就好了。


那啥,我还没开始研究脚本拉~~~
当然,请放发出来吧,但是……
希望能够不是帖图的效果,因为4个角色嘛= =

我觉得战斗系统可能要大改- -|||,2003第二的战斗模式……为什么VX不是呢?
作者: tranpol    时间: 2008-1-16 12:18
!!!???
竟有这么神奇的功能
做成桃心也行吗?!
....俺开始想Y了...
这个PNG图可以做成带柔化过渡的吗~~
那效果会更好
作者: 柳柳    时间: 2008-1-16 15:55
可以啊。不过放缩之后会有一些质量缩水而已。好在VX本身就可以模糊
作者: 风雪优游    时间: 2008-1-17 06:22
=[]=脚本错误= =|||为什么为什么为什么!!!
作者: 御灵    时间: 2008-2-22 19:26
发布完毕。
http://rpg.blue/web/htm/news980.htm
vip+2
作者: 柳柳    时间: 2009-6-12 08:00
有帖子啊,往下翻翻……
战斗也改了啊……啊……算了……不说了……{/gg}你自己不翻……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1