赞 | 0 |
VIP | 37 |
好人卡 | 0 |
积分 | 1 |
经验 | 48662 |
最后登录 | 2012-11-14 |
在线时间 | 3 小时 |
Lv1.梦旅人 SB們大家好<
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 3 小时
- 注册时间
- 2008-1-7
- 帖子
- 457
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
- #本脚本来自66RPG,作者趙雲,如需转载请保留本信息。
- #==============================================================================
- # ■ Arrow_Base
- #------------------------------------------------------------------------------
- # 在战斗画面使用的箭头光标的活动块。本类作为
- # Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
- #==============================================================================
- class Arrow_Base < Sprite
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_reader :index # 光标位置
- attr_reader :help_window # 帮助窗口
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # viewport : 显示端口
- #--------------------------------------------------------------------------
- def initialize(viewport)
- super(viewport)
- self.bitmap = Cache.system("Arrow")
- self.ox = 16
- self.oy = 64
- self.z = 2500
- @blink_count = 0
- @index = 0
- @help_window = nil
- update
- end
- #--------------------------------------------------------------------------
- # ● 设置光标位置
- # index : 新的光标位置
- #--------------------------------------------------------------------------
- def index=(index)
- @index = index
- update
- end
- #--------------------------------------------------------------------------
- # ● 设置帮助窗口
- # help_window : 新的帮助窗口
- #--------------------------------------------------------------------------
- def help_window=(help_window)
- @help_window = help_window
- # 刷新帮助文本 (update_help 定义了继承目标)
- if @help_window != nil
- update_help
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- # 刷新点灭记数
- @blink_count = (@blink_count + 1) % 12
- # 设置传送源矩形
- if @blink_count < 6
- self.src_rect.set(0, 0, 32, 32)
- else
- self.src_rect.set(32, 0, 32, 32)
- end
- # 刷新帮助文本 (update_help 定义了继承目标)
- if @help_window != nil
- update_help
- end
- end
- end
- #==============================================================================
- # ■ Arrow_Enemy
- #------------------------------------------------------------------------------
- # 选择敌人的箭头光标。本类继承 Arrow_Base
- # 类。
- #==============================================================================
- class Arrow_Enemy < Arrow_Base
- #--------------------------------------------------------------------------
- # ● 获取光标指向的敌人
- #--------------------------------------------------------------------------
- def enemy
- return $game_troop.members[@index]
- end
-
- def dispose
- @enemy.loop_white_flash = false unless @enemy.nil?
- super
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- super
- if @enemy != enemy and enemy.exist?
- @enemy.loop_white_flash = false unless @enemy.nil?
- enemy.loop_white_flash = true
- @enemy = enemy
- end
-
- # 如果指向不存在的敌人就离开
- $game_troop.members.size.times do
- break if self.enemy.exist?
- @index += 1
- @index %= $game_troop.members.size
- end
- # 光标右
- if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
- Sound.play_cursor
- $game_troop.members.size.times do
- @index += 1
- @index %= $game_troop.members.size
- break if self.enemy.exist?
- end
- end
- # 光标左
- if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
- Sound.play_cursor
- $game_troop.members.size.times do
- @index += $game_troop.members.size - 1
- @index %= $game_troop.members.size
- break if self.enemy.exist?
- end
- end
- # 设置活动块坐标
- if self.enemy != nil
- self.x = self.enemy.screen_x
- self.y = self.enemy.screen_y
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新帮助文本
- #--------------------------------------------------------------------------
- def update_help
- # 帮助窗口显示敌人的名字与状态
- @help_window.set_enemy(self.enemy)
- end
- end
- class Scene_Battle ##
-
-
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- super
- update_basic(true)
- update_info_viewport # 更新显示信息的视区
- if $game_message.visible
- @info_viewport.visible = false
- @message_window.visible = true
- end
- unless $game_message.visible # 在显示消息以外的情况
- return if judge_win_loss # 判断胜败
- update_scene_change
- if @enemy_arrow != nil
- update_target_enemy_selection # 选择敌方对象
- elsif @target_actor_window != nil
- update_target_actor_selection # 选择对象角色
- elsif @skill_window != nil
- update_skill_selection # 选择特技
- elsif @item_window != nil
- update_item_selection # 选择物品
- elsif @party_command_window.active
- update_party_command_selection # 选择同伴指令
- elsif @actor_command_window.active
- update_actor_command_selection # 选择角色指令
- else
- process_battle_event # 战斗处理
- process_action # 战斗行动
- process_battle_event # 处理战斗事件
- end
- end
- end
-
-
- def set_window(visible)
- if !@skill_window.nil?
- @skill_window.visible = visible
- elsif !@item_window.nil?
- @item_window.visible = visible
- end
- end
- #--------------------------------------------------------------------------
- # ● 开始选择对象的敌方角色
- #--------------------------------------------------------------------------
- def start_target_enemy_selection
- set_window(false)
- @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
- @enemy_window = Window_Enemy.new(176,0)
- @enemy_arrow.help_window = @enemy_window
- @actor_command_window.active = false
- end
- #--------------------------------------------------------------------------
- # ● 选择对象敌方角色结束
- #--------------------------------------------------------------------------
- def end_target_enemy_selection
- @enemy_arrow.dispose
- @enemy_arrow = nil
- @enemy_window.dispose
- set_window(true)
- if @actor_command_window.index == 0
- @actor_command_window.active = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新选择对象敌方角色
- #--------------------------------------------------------------------------
- def update_target_enemy_selection
- @enemy_arrow.update
- if Input.trigger?(Input::B)
- Sound.play_cancel
- end_target_enemy_selection
- elsif Input.trigger?(Input::C)
- Sound.play_decision
- @active_battler.action.target_index = @enemy_arrow.enemy.index
- end_target_enemy_selection
- end_skill_selection
- end_item_selection
- next_actor
- end
- end
- end
- class Spriteset_Battle ##
- def viewport3
- return @viewport3
- end
- end
- class Game_Battler
- attr_accessor :loop_white_flash # 循环白色闪烁标记
- end
- class Sprite_Battler ##
- alias old_setup_new_effect setup_new_effect
- def setup_new_effect
- if @battler.loop_white_flash and @effect_duration == 0
- @battler.white_flash = true
- end
- old_setup_new_effect
- end
- end
- #==============================================================================
- # ■ Window_Enemy
- #------------------------------------------------------------------------------
- # 显示敌人信息的窗口,光标Arrow用。
- #==============================================================================
- class Window_Enemy < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- # x : 窗口的X坐标
- # y : 窗口的Y坐标
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y, 288, WLH * 2 + 32)
- #~ self.opacity = 0
- end
- #--------------------------------------------------------------------------
- # ● 设置文本
- # text : 窗口显示的字符串
- # align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
- #--------------------------------------------------------------------------
- def set_text(text, align = 0)
- # 如果文本和对齐方式的至少一方与上次的不同
- if text != @text or align != @align
- # 再描绘文本
- self.contents.clear
- self.contents.font.color = normal_color
- self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
- @text = text
- @align = align
- @actor = nil
- end
- self.visible = true
- end
-
-
- #--------------------------------------------------------------------------
- # ● 设置敌人
- # enemy : 要显示名字和状态的敌人
- #--------------------------------------------------------------------------
- def set_enemy(enemy)
- if @enemy != enemy
- text = enemy.name
- set_text(text)
- w = enemy.states.size * 24
- draw_actor_state(enemy, contents.width - w , 0, w)
- draw_actor_hp(enemy, 0 , WLH )
- draw_actor_mp(enemy, contents.width - 120 , WLH )
- @enemy = enemy
- end
- end
- end
复制代码
使用方法 :
将脚本插入 main前面后
把
放在 Graphics\System 文件夹下。
效果
|
|