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

Project1

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

[已经过期] 请教,怎样做战斗时查看敌人的基本属性

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
433 小时
注册时间
2010-5-13
帖子
116
跳转到指定楼层
1
发表于 2010-11-22 15:39:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想在战斗时的选择框中加入一个“查看敌人”的选项,按下后指标指向敌人,可以出现一个窗口显示敌人的基本属性,比如攻击力,防御力,敏捷性等,就像在菜单中"状态"选项可以查看我方属性差不多的。。。。。。

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5809
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
2
发表于 2010-11-22 21:37:08 | 只看该作者
本帖最后由 一箭烂YiJL 于 2010-11-22 21:46 编辑

知道攻击敏捷的话会不好玩。
给一个这个吧。
需要配图案


把这个图案放在system资料夹之下

备注:此脚本支持横板战,只显示血条、名字、灵气条、状态
  1. #==============================================================================
  2. # ■ Arrow_Base
  3. #------------------------------------------------------------------------------
  4. #  在战斗画面使用的箭头光标的活动块。本类作为
  5. # Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
  6. #==============================================================================

  7. class Arrow_Base < Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :index                    # 光标位置
  12.   attr_reader   :help_window              # 帮助窗口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化对像
  15.   #     viewport : 显示端口
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport)
  18.     super(viewport)
  19.     self.bitmap = Cache.system("Arrow")
  20.     self.ox = 16
  21.     self.oy = 64
  22.     self.z = 2500
  23.     @blink_count = 0
  24.     @index = 0
  25.     @help_window = nil
  26.     update
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 设置光标位置
  30.   #     index : 新的光标位置
  31.   #--------------------------------------------------------------------------
  32.   def index=(index)
  33.     @index = index
  34.     update
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 设置帮助窗口
  38.   #     help_window : 新的帮助窗口
  39.   #--------------------------------------------------------------------------
  40.   def help_window=(help_window)
  41.     @help_window = help_window
  42.     # 刷新帮助文本 (update_help 定义了继承目标)
  43.     if @help_window != nil
  44.       update_help
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 刷新画面
  49.   #--------------------------------------------------------------------------
  50.   def update
  51.     # 刷新点灭记数
  52.     @blink_count = (@blink_count + 1) % 12
  53.     # 设置传送源矩形
  54.     if @blink_count < 6
  55.       self.src_rect.set(0, 0, 32, 32)
  56.     else
  57.       self.src_rect.set(32, 0, 32, 32)
  58.     end
  59.     # 刷新帮助文本 (update_help 定义了继承目标)
  60.     if @help_window != nil
  61.       update_help
  62.     end
  63.   end
  64. end
  65. #==============================================================================
  66. # ■ Arrow_Enemy
  67. #------------------------------------------------------------------------------
  68. #  选择敌人的箭头光标。本类继承 Arrow_Base
  69. # 类。
  70. #==============================================================================

  71. class Arrow_Enemy < Arrow_Base
  72.   #--------------------------------------------------------------------------
  73.   # ● 获取光标指向的敌人
  74.   #--------------------------------------------------------------------------
  75.   def enemy
  76.     return $game_troop.members[@index]
  77.   end
  78.   
  79.   def dispose
  80.     @enemy.loop_white_flash = false unless @enemy.nil?
  81.     super
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 刷新画面
  85.   #--------------------------------------------------------------------------
  86.   def update
  87.     super
  88.      if @enemy != enemy and enemy.exist?
  89.         @enemy.loop_white_flash = false unless @enemy.nil?
  90.         enemy.loop_white_flash = true
  91.         @enemy = enemy
  92.       end  
  93.    
  94.     # 如果指向不存在的敌人就离开
  95.     $game_troop.members.size.times do
  96.       break if self.enemy.exist?
  97.       @index += 1
  98.       @index %= $game_troop.members.size
  99.     end
  100.     # 光标右
  101.     if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
  102.       Sound.play_cursor
  103.       $game_troop.members.size.times do
  104.         @index += 1
  105.         @index %= $game_troop.members.size
  106.         break if self.enemy.exist?
  107.       end
  108.     end
  109.     # 光标左
  110.     if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
  111.      Sound.play_cursor
  112.       $game_troop.members.size.times do
  113.         @index += $game_troop.members.size - 1
  114.         @index %= $game_troop.members.size
  115.         break if self.enemy.exist?
  116.       end
  117.     end
  118.     # 设置活动块坐标
  119.     if self.enemy != nil
  120.       self.x = self.enemy.screen_x
  121.       self.y = self.enemy.screen_y
  122.     end
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 刷新帮助文本
  126.   #--------------------------------------------------------------------------
  127.   def update_help
  128.     # 帮助窗口显示敌人的名字与状态
  129.     @help_window.set_enemy(self.enemy)
  130.   end
  131. end





  132. class Scene_Battle ##
  133.   
  134.   
  135.   #--------------------------------------------------------------------------
  136.   # ● 更新画面
  137.   #--------------------------------------------------------------------------
  138.   def update
  139.     super
  140.     update_basic(true)
  141.     update_info_viewport                  # 更新显示信息的视区
  142.     if $game_message.visible
  143.       @info_viewport.visible = false
  144.       @message_window.visible = true
  145.     end
  146.     unless $game_message.visible          # 在显示消息以外的情况
  147.       return if judge_win_loss            # 判断胜败
  148.       update_scene_change
  149.       if @enemy_arrow != nil
  150.         update_target_enemy_selection     # 选择敌方对象
  151.       elsif @target_actor_window != nil
  152.         update_target_actor_selection     # 选择对象角色
  153.       elsif @skill_window != nil
  154.         update_skill_selection            # 选择特技
  155.       elsif @item_window != nil
  156.         update_item_selection             # 选择物品
  157.       elsif @party_command_window.active
  158.         update_party_command_selection    # 选择同伴指令
  159.       elsif @actor_command_window.active
  160.         update_actor_command_selection    # 选择角色指令
  161.       else
  162.         process_battle_event              # 战斗处理
  163.         process_action                    # 战斗行动
  164.         process_battle_event              # 处理战斗事件
  165.       end
  166.     end
  167.   end
  168.   

  169.   
  170.   def set_window(visible)
  171.     if !@skill_window.nil?
  172.       @skill_window.visible = visible
  173.     elsif !@item_window.nil?
  174.       @item_window.visible = visible
  175.     end
  176.   end

  177.   #--------------------------------------------------------------------------
  178.   # ● 开始选择对象的敌方角色
  179.   #--------------------------------------------------------------------------
  180.   def start_target_enemy_selection
  181.     set_window(false)
  182.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
  183.     @enemy_window = Window_Enemy.new(176,0)
  184.     @enemy_arrow.help_window = @enemy_window
  185.     @actor_command_window.active = false
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 选择对象敌方角色结束
  189.   #--------------------------------------------------------------------------
  190.   def end_target_enemy_selection
  191.     @enemy_arrow.dispose
  192.     @enemy_arrow = nil
  193.     @enemy_window.dispose
  194.     set_window(true)
  195.     if @actor_command_window.index == 0
  196.       @actor_command_window.active = true
  197.     end
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 更新选择对象敌方角色
  201.   #--------------------------------------------------------------------------
  202.   def update_target_enemy_selection
  203.      @enemy_arrow.update
  204.     if Input.trigger?(Input::B)
  205.       Sound.play_cancel
  206.       end_target_enemy_selection
  207.     elsif Input.trigger?(Input::C)
  208.       Sound.play_decision
  209.       @active_battler.action.target_index = @enemy_arrow.enemy.index
  210.       end_target_enemy_selection
  211.       end_skill_selection
  212.       end_item_selection
  213.       next_actor
  214.     end
  215.   end


  216. end


  217. class Spriteset_Battle ##
  218.   def viewport3
  219.     return @viewport3
  220.   end  
  221. end

  222. class Game_Battler
  223.   attr_accessor :loop_white_flash              # 循环白色闪烁标记
  224. end

  225. class Sprite_Battler ##
  226.   alias old_setup_new_effect setup_new_effect
  227.   def setup_new_effect
  228.     if @battler.loop_white_flash and @effect_duration == 0
  229.       @battler.white_flash = true
  230.     end
  231.     old_setup_new_effect
  232.   end
  233. end


  234. #==============================================================================
  235. # ■ Window_Enemy
  236. #------------------------------------------------------------------------------
  237. #  显示敌人信息的窗口,光标Arrow用。
  238. #==============================================================================

  239. class Window_Enemy < Window_Base
  240.   #--------------------------------------------------------------------------
  241.   # ● 初始化窗口
  242.   #     x : 窗口的X坐标
  243.   #     y : 窗口的Y坐标
  244.   #--------------------------------------------------------------------------
  245.   def initialize(x, y)
  246.     super(x, y, 300, WLH * 2 + 32)
  247. #~     self.opacity = 0
  248.   end

  249.   #--------------------------------------------------------------------------
  250.   # ● 设置文本
  251.   #     text  : 窗口显示的字符串
  252.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  253.   #--------------------------------------------------------------------------
  254.   def set_text(text, align = 0)
  255.     # 如果文本和对齐方式的至少一方与上次的不同
  256.     if text != @text or align != @align
  257.       # 再描绘文本
  258.       self.contents.clear
  259.       self.contents.font.color = normal_color
  260.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  261.       @text = text
  262.       @align = align
  263.       @actor = nil
  264.     end
  265.     self.visible = true
  266.   end
  267.   
  268.   
  269.   #--------------------------------------------------------------------------
  270.   # ● 设置敌人
  271.   #     enemy : 要显示名字和状态的敌人
  272.   #--------------------------------------------------------------------------
  273.   def set_enemy(enemy)
  274.     if @enemy != enemy
  275.     text = enemy.name
  276.     set_text(text)
  277.     w = enemy.states.size * 24
  278.     draw_actor_state(enemy, contents.width - w , 0, w)
  279.     draw_actor_hp(enemy, 0 , WLH  )
  280.     draw_actor_mp(enemy, contents.width - 120 , WLH )
  281.     @enemy = enemy
  282.     end
  283.   end
  284. end
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

铃铃塔的守护者

梦石
0
星屑
626
在线时间
961 小时
注册时间
2010-10-24
帖子
2768

贵宾

3
发表于 2010-11-22 22:10:20 | 只看该作者
经验证有BUG出现,且非兼容性问题。
求解决。

11235.JPG (9.76 KB, 下载次数: 20)

11235.JPG

点评

你的问题好像已经解决了,看5楼我的解答。  发表于 2010-11-26 18:17
我试过没有问题,是冲突吗?新工程也是这样吗?这时支持横版的。  发表于 2010-11-23 17:42

魔法麻将独立游戏制作中,欢迎热情的测试员与UI设计师合作开发~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
433 小时
注册时间
2010-5-13
帖子
116
4
 楼主| 发表于 2010-11-22 23:46:10 | 只看该作者
回复 一箭烂YiJL 的帖子

谢了,这是赵云的那个仿xp式箭头的脚本吧,我用过,和我现在的工程有冲突,

点评

1.我不明白什么赵云XP。 2.我试过了,和横版是没有冲突的,是有什么冲突吗?  发表于 2010-11-23 17:40
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5809
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
5
发表于 2010-11-26 18:34:52 | 只看该作者
本帖最后由 一箭烂YiJL 于 2010-11-26 22:33 编辑

回复 px.凤翔九天 的帖子

对于“px.凤翔九天”前辈的问题已解决。

在验证后,上述问题证实是因为插入了在脚本页“Sprite_Battler”之上
请插入在“▼ 外掛程式腳本素材”之下
或者main之上

点评

哦,好像是啊,我直接放在了第一个,忘了执行顺序问题了...感谢解决。  发表于 2010-11-26 23:39
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
433 小时
注册时间
2010-5-13
帖子
116
6
 楼主| 发表于 2010-11-29 19:26:38 | 只看该作者
继续求。。。。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-15 18:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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