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

Project1

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

[已经解决] 請教橫向戰鬥(3.4E)在敵方腳下顯示狀態圖示的方法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
帖子
184
跳转到指定楼层
1
发表于 2014-7-9 23:16:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
請教橫向戰鬥(3.4E)在敵方腳下顯示狀態圖示的方法
否則戰鬥中難以辨識敵方是否處於什麼樣的狀態
置頂橫條顯示不是很好的辦法
希望能顯示在敵人的腳邊,經驗絕對奉上,謝謝

点评

脚下空间不足吧...  发表于 2014-7-16 21:56

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
2
发表于 2014-7-12 23:35:21 | 只看该作者
本帖最后由 crow2006 于 2014-7-12 23:40 编辑


这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Arrow_Base
  3. #------------------------------------------------------------------------------
  4. #  在战斗画面使用的箭头光标的活动块。本类作为
  5. # Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
  6. #==============================================================================
  7.  
  8. class Arrow_Base < Sprite
  9.   #--------------------------------------------------------------------------
  10.   # ● 定义实例变量
  11.   #--------------------------------------------------------------------------
  12.   attr_reader   :index                    # 光标位置
  13.   attr_reader   :help_window              # 帮助窗口
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对像
  16.   #     viewport : 显示端口
  17.   #--------------------------------------------------------------------------
  18.   def initialize(viewport)
  19.     super(viewport)
  20.     self.bitmap = Cache.system("Arrow")
  21.     self.ox = 16
  22.     self.oy = 64
  23.     self.z = 2500
  24.     @blink_count = 0
  25.     @index = 0
  26.     @help_window = nil
  27.     update
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 设置光标位置
  31.   #     index : 新的光标位置
  32.   #--------------------------------------------------------------------------
  33.   def index=(index)
  34.     @index = index
  35.     update
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 设置帮助窗口
  39.   #     help_window : 新的帮助窗口
  40.   #--------------------------------------------------------------------------
  41.   def help_window=(help_window)
  42.     @help_window = help_window
  43.     # 刷新帮助文本 (update_help 定义了继承目标)
  44.     if @help_window != nil
  45.       update_help
  46.     end
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 刷新画面
  50.   #--------------------------------------------------------------------------
  51.   def update
  52.     # 刷新点灭记数
  53.     @blink_count = (@blink_count + 1) % 12
  54.     # 设置传送源矩形
  55.     if @blink_count < 6
  56.       self.src_rect.set(0, 0, 32, 32)
  57.     else
  58.       self.src_rect.set(32, 0, 32, 32)
  59.     end
  60.     # 刷新帮助文本 (update_help 定义了继承目标)
  61.     if @help_window != nil
  62.       update_help
  63.     end
  64.   end
  65. end
  66. #==============================================================================
  67. # ■ Arrow_Enemy
  68. #------------------------------------------------------------------------------
  69. #  选择敌人的箭头光标。本类继承 Arrow_Base
  70. # 类。
  71. #==============================================================================
  72.  
  73. class Arrow_Enemy < Arrow_Base
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取光标指向的敌人
  76.   #--------------------------------------------------------------------------
  77.   def enemy
  78.     return $game_troop.members[@index]
  79.   end
  80.  
  81.   def dispose
  82.     @enemy.loop_white_flash = false unless @enemy.nil?
  83.     super
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 刷新画面
  87.   #--------------------------------------------------------------------------
  88.   def update
  89.     super
  90.      if @enemy != enemy and enemy.exist?
  91.         @enemy.loop_white_flash = false unless @enemy.nil?
  92.         enemy.loop_white_flash = true
  93.         @enemy = enemy
  94.       end  
  95.  
  96.     # 如果指向不存在的敌人就离开
  97.     $game_troop.members.size.times do
  98.       break if self.enemy.exist?
  99.       @index += 1
  100.       @index %= $game_troop.members.size
  101.     end
  102.     # 光标右
  103.     if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
  104.       Sound.play_cursor
  105.       $game_troop.members.size.times do
  106.         @index += 1
  107.         @index %= $game_troop.members.size
  108.         break if self.enemy.exist?
  109.       end
  110.     end
  111.     # 光标左
  112.     if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
  113.      Sound.play_cursor
  114.       $game_troop.members.size.times do
  115.         @index += $game_troop.members.size - 1
  116.         @index %= $game_troop.members.size
  117.         break if self.enemy.exist?
  118.       end
  119.     end
  120.     # 设置活动块坐标
  121.     if self.enemy != nil
  122.       self.x = self.enemy.screen_x
  123.       self.y = self.enemy.screen_y
  124.     end
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 刷新帮助文本
  128.   #--------------------------------------------------------------------------
  129.   def update_help
  130.     # 帮助窗口显示敌人的名字与状态
  131.     @help_window.set_enemy(self.enemy)
  132.   end
  133. end
  134.  
  135.  
  136.  
  137.  
  138.  
  139. class Scene_Battle ##
  140.  
  141.  
  142.   #--------------------------------------------------------------------------
  143.   # ● 更新画面
  144.   #--------------------------------------------------------------------------
  145.   def update
  146.     super
  147.     update_basic(true)
  148.     update_info_viewport                  # 更新显示信息的视区
  149.     if $game_message.visible
  150.       @info_viewport.visible = false
  151.       @message_window.visible = true
  152.     end
  153.     unless $game_message.visible          # 在显示消息以外的情况
  154.       return if judge_win_loss            # 判断胜败
  155.       update_scene_change
  156.       if @enemy_arrow != nil
  157.         update_target_enemy_selection     # 选择敌方对象
  158.       elsif @target_actor_window != nil
  159.         update_target_actor_selection     # 选择对象角色
  160.       elsif @skill_window != nil
  161.         update_skill_selection            # 选择特技
  162.       elsif @item_window != nil
  163.         update_item_selection             # 选择物品
  164.       elsif @party_command_window.active
  165.         update_party_command_selection    # 选择同伴指令
  166.       elsif @actor_command_window.active
  167.         update_actor_command_selection    # 选择角色指令
  168.       else
  169.         process_battle_event              # 战斗处理
  170.         process_action                    # 战斗行动
  171.         process_battle_event              # 处理战斗事件
  172.       end
  173.     end
  174.   end
  175.  
  176.  
  177.  
  178.   def set_window(visible)
  179.     if !@skill_window.nil?
  180.       @skill_window.visible = visible
  181.     elsif !@item_window.nil?
  182.       @item_window.visible = visible
  183.     end
  184.   end
  185.  
  186.   #--------------------------------------------------------------------------
  187.   # ● 开始选择对象的敌方角色
  188.   #--------------------------------------------------------------------------
  189.   def start_target_enemy_selection
  190.     set_window(false)
  191.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
  192.     @enemy_window = Window_Enemy.new(176,0)
  193.     @enemy_arrow.help_window = @enemy_window
  194.     @actor_command_window.active = false   
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 选择对象敌方角色结束
  198.   #--------------------------------------------------------------------------
  199.   def end_target_enemy_selection
  200.     @enemy_arrow.dispose
  201.     @enemy_arrow = nil
  202.     @enemy_window.dispose
  203.     set_window(true)
  204.     if @actor_command_window.index == 0
  205.       @actor_command_window.active = true
  206.     end
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 更新选择对象敌方角色
  210.   #--------------------------------------------------------------------------
  211.   def update_target_enemy_selection
  212.      @enemy_arrow.update
  213.     if Input.trigger?(Input::B)
  214.       Sound.play_cancel
  215.       end_target_enemy_selection
  216.     elsif Input.trigger?(Input::C)
  217.       Sound.play_decision
  218.       @active_battler.action.target_index = @enemy_arrow.enemy.index
  219.       end_target_enemy_selection
  220.       end_skill_selection
  221.       end_item_selection
  222.       next_actor
  223.     end
  224.   end
  225.  
  226.  
  227. end
  228.  
  229.  
  230. class Spriteset_Battle ##
  231.   def viewport3
  232.     return @viewport3
  233.   end  
  234. end
  235.  
  236. class Game_Battler
  237.   attr_accessor :loop_white_flash              # 循环白色闪烁标记
  238. end
  239.  
  240. class Sprite_Battler ##
  241.   alias old_setup_new_effect setup_new_effect
  242.   def setup_new_effect
  243.     if @battler.loop_white_flash and @effect_duration == 0
  244.       @battler.white_flash = true
  245.     end
  246.     old_setup_new_effect
  247.   end
  248. end
  249.  
  250.  
  251. #==============================================================================
  252. # ■ Window_Enemy
  253. #------------------------------------------------------------------------------
  254. #  显示敌人信息的窗口,光标Arrow用。
  255. #==============================================================================
  256.  
  257. class Window_Enemy < Window_Base
  258.   #--------------------------------------------------------------------------
  259.   # ● 初始化窗口
  260.   #     x : 窗口的X坐标
  261.   #     y : 窗口的Y坐标
  262.   #--------------------------------------------------------------------------
  263.   def initialize(x, y)
  264.   # super(x+70, y, 300, WLH * 3 + 32)
  265.     super(x+70, y, 300, WLH * 5 + 32)   
  266. #     self.opacity = 0
  267.   end
  268.  
  269.   #--------------------------------------------------------------------------
  270.   # ● 设置文本
  271.   #     text  : 窗口显示的字符串
  272.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  273.   #--------------------------------------------------------------------------
  274.   def set_text(text, align = 0)
  275.     # 如果文本和对齐方式的至少一方与上次的不同
  276. #    if text != @text or align != @align
  277.       # 再描绘文本  
  278.       self.contents.clear
  279.       self.contents.font.color = normal_color
  280.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  281.       @text = text
  282.       @align = align
  283.       @actor = nil
  284. #    end
  285.     self.visible = true
  286.   end
  287.  
  288.  
  289.   #--------------------------------------------------------------------------
  290.   # ● 设置敌人
  291.   #     enemy : 要显示名字和状态的敌人
  292.   #--------------------------------------------------------------------------
  293.   def set_enemy(enemy)
  294.     self.contents.font.size = 14
  295.     if @enemy != enemy
  296.     text = enemy.name
  297.     set_text(text)
  298.     w = enemy.states.size * 24
  299.     draw_actor_state(enemy, contents.width - w , 50, w)
  300.     draw_actor_hp(enemy, 0 , WLH  )
  301.     draw_actor_mp(enemy, contents.width - 120 , WLH )
  302. draw_actor_parameter(enemy, 0,WLH * 3 , 0)
  303. draw_actor_parameter(enemy, 150,WLH * 3 , 1)
  304. draw_actor_parameter(enemy, 0,WLH * 4 , 2)
  305. draw_actor_parameter(enemy, 150,WLH * 4 , 3)
  306.     @enemy = enemy
  307.     end
  308.   end
  309. end





arrow.png (2.75 KB, 下载次数: 34)

arrow.png

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
帖子
184
3
 楼主| 发表于 2014-7-13 01:44:57 | 只看该作者
crow2006 发表于 2014-7-12 23:35
这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
#========================== ...

首先感謝您的回覆
不過,不太明白您圖中的意思
預設敵方的狀態圖示是要選擇敵人時才看的到的(置頂的窗口裡)
我想要能直接顯示在敵方圖片的旁邊,不用選取也能顯示呢

点评

那样的话恕我无能为力了。  发表于 2014-7-13 12:11
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
1235
在线时间
19 小时
注册时间
2015-4-19
帖子
3
4
发表于 2015-4-24 06:49:08 手机端发表。 | 只看该作者
crow2006 发表于 2014-7-12 23:35
这样可以吗?空白的arrow图片放到游戏文件夹下的system里面。坐标自己调整。
#========================== ...

跪求这个脚本,给我吧!

评分

参与人数 1星屑 -20 收起 理由
怪蜀黍 -20 请勿挖坟

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 06:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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