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

Project1

 找回密码
 注册会员
搜索

脚本中Game_Actor的一个问题

查看数: 3997 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2009-8-9 15:15

正文摘要:

本帖最后由 tree52 于 2009-8-10 15:42 编辑 2楼紫苏已经帮忙完成了战斗中人物站位的问题,随之而来的是人物血条不对应,恳请大侠们帮忙看下是哪个地方的数据要更改,血条脚本参见7楼,再次致谢! 以下是2-8楼解 ...

回复

紫苏 发表于 2009-8-10 20:47:22
其实楼上几位提到的分歧法效率是最高的,但是那样写的话代码会变得比较冗长,n*(4-$game_party.actors.size) 的话就比较简洁~

你找到血条脚本中的两段 case...end,在后面对 x 和 y 做相同的加减运算:
x += 32 * (4 - $game_party.actors.size)
y -= 32 * (4 - $game_party.actors.size)
即可~
tree52 发表于 2009-8-10 20:27:47
超过三个小时自顶一次。

重新描述下问题:按照紫苏中32 * (4 - $game_party.actors.size) 这个关键的一步,怎么才能把血条放在人物下方?由于这个方法中人物位置是不固定的,所以如果获取了人物坐标会不会产生不是对应在某一主角下面…?如不能求解,我也就放弃继续询问了,谢谢…
tree52 发表于 2009-8-10 15:42:55
那现在人物与血条不对应了怎么办?
azuredam 发表于 2009-8-9 21:00:38
提示: 作者被禁止或删除 内容自动屏蔽
tree52 发表于 2009-8-9 20:31:52
本帖最后由 tree52 于 2009-8-9 20:40 编辑

6# 紫苏
以下是血条的脚本,我不是特别理解,放上去血条不能在人物正下方对齐,麻烦再看下吧,谢谢o(∩_∩)o...
  1. #==============================================================================
  2. # ■ Window_Base
  3. #------------------------------------------------------------------------------
  4. #  游戏中全部窗口的超级类。
  5. #==============================================================================

  6. class Window_Base < Window
  7. #--------------------------------------------------------------------------
  8. # ● 描绘 HP
  9. #     actor : 角色
  10. #     x     : 描画目标 X 坐标
  11. #     y     : 描画目标 Y 坐标
  12. #     width : 描画目标的宽
  13. #--------------------------------------------------------------------------
  14. def draw_actor_hp1(actor, x, y, width = 72)
  15.    # 描绘字符串 "HP"
  16.    self.contents.font.color = system_color
  17.    self.contents.draw_text(x, y, 24, 24, $data_system.words.hp)
  18.    # 计算描绘 MaxHP 所需的空间
  19.    if width - 24 >= 32
  20.      hp_x = x + 32# + width - 24
  21.    end
  22.    # 描绘 HP
  23.    self.contents.font.color = actor.hp == 0 ? knockout_color :
  24.      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  25.    self.contents.draw_text(hp_x, y, 32, 24, actor.hp.to_s, 2)
  26. end
  27. #--------------------------------------------------------------------------
  28. # ● 描绘 SP
  29. #     actor : 角色
  30. #     x     : 描画目标 X 坐标
  31. #     y     : 描画目标 Y 坐标
  32. #     width : 描画目标的宽
  33. #--------------------------------------------------------------------------
  34. def draw_actor_sp1(actor, x, y, width = 72)
  35.    # 描绘字符串 "SP"
  36.    self.contents.font.color = system_color
  37.    self.contents.draw_text(x, y, 24, 24, $data_system.words.sp)
  38.    # 计算描绘 MaxSP 所需的空间
  39.    if width - 24 >= 32
  40.      sp_x = x + 32# + width - 24
  41.    end
  42.    # 描绘 SP
  43.    self.contents.font.color = actor.sp == 0 ? knockout_color :
  44.      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  45.    self.contents.draw_text(sp_x, y, 32, 24, actor.sp.to_s, 2)
  46. end
  47. end





  48. #==============================================================================
  49. # ■ Window_BattleStatus
  50. #------------------------------------------------------------------------------
  51. #  显示战斗画面同伴状态的窗口。
  52. #==============================================================================

  53. class Window_BattleStatus < Window_Base
  54. #--------------------------------------------------------------------------
  55. # ● 初始化对像
  56. #--------------------------------------------------------------------------
  57. #$data_system_level_up_me = "Audio/ME/升级音乐"
  58. def initialize
  59.    super(0, 0, 640, 480)
  60.    self.contents = Bitmap.new(width - 10, height - 32)
  61.    self.opacity = 0
  62.    @level_up_flags = [false, false, false, false]
  63.    refresh
  64. end
  65. #--------------------------------------------------------------------------
  66. # ● 释放
  67. #--------------------------------------------------------------------------
  68. def dispose
  69.    super
  70. end
  71. #--------------------------------------------------------------------------
  72. # ● 设置升级标志
  73. #     actor_index : 角色索引
  74. #--------------------------------------------------------------------------
  75. def level_up(actor_index)
  76.    @level_up_flags[actor_index] = true
  77. end
  78. #--------------------------------------------------------------------------
  79. # ● 刷新
  80. #--------------------------------------------------------------------------
  81. def refresh
  82.    self.contents.clear
  83.    @item_max = $game_party.actors.size
  84.     for i in 0...$game_party.actors.size
  85.      actor = $game_party.actors[i]
  86.      case i
  87.        when 0
  88.         x = 310
  89.         y = 390
  90.        when 1
  91.         x = 390
  92.         y = 340
  93.        when 2
  94.         x = 480
  95.         y = 300
  96.        when 3
  97.         x = 550
  98.         y = 270
  99.       end
  100.      if @level_up_flags[i]
  101.        self.contents.font.color = normal_color
  102.        self.contents.draw_text(x, y, 80, 24, "LEVEL UP!")
  103.        Audio.me_stop
  104. #        Audio.me_play($data_system_level_up_me)
  105.      else
  106.      draw_actor_hp1(actor, x-15, y-15, 80)
  107.      draw_actor_sp1(actor, x-15, y+5, 80)
  108.     end
  109.    end
  110. end

  111. #--------------------------------------------------------------------------
  112.   # ● 刷新画面
  113.   #--------------------------------------------------------------------------
  114.   def update
  115.     super
  116.     # 主界面的不透明度下降
  117.     if $game_temp.battle_main_phase
  118.       self.contents_opacity -= 4 if self.contents_opacity > 191
  119.     else
  120.       self.contents_opacity += 4 if self.contents_opacity < 255
  121.     end
  122.   end
  123. end





  124. #==============================================================================
  125. # ■ Window_BattleStatus
  126. #==============================================================================
  127. class Window_BattleStatus < Window_Base
  128. #--------------------------------------------------------------------------
  129. # ● 初始化
  130. #--------------------------------------------------------------------------
  131. alias xrxs_bp2_refresh refresh
  132. def refresh
  133.    xrxs_bp2_refresh
  134.    @item_max = $game_party.actors.size
  135.     for i in 0...$game_party.actors.size
  136.      actor = $game_party.actors[i]
  137.      case i
  138.        when 0
  139.         x = 310
  140.         y = 390
  141.        when 1
  142.         x = 390
  143.         y = 340
  144.        when 2
  145.         x = 480
  146.         y = 300
  147.        when 3
  148.         x = 550
  149.         y = 270
  150.       end
  151.      draw_actor_hp_meter(actor, x, y, 50)
  152.      draw_actor_sp_meter(actor, x, y + 8, 50)
  153.    end
  154. end
  155. end

  156. #==============================================================================
  157. # ■ Window_Base
  158. #==============================================================================
  159. class Window_Base < Window
  160. #--------------------------------------------------------------------------
  161. # ● HP描画
  162. #--------------------------------------------------------------------------
  163. def draw_actor_hp_meter(actor, x, y, width = 156, type = 0)
  164.    if type == 1 and actor.hp == 0
  165.      return
  166.    end
  167.    self.contents.font.color = system_color
  168.    self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 25))
  169.    w = width * actor.hp / actor.maxhp
  170.    self.contents.fill_rect(x, y+28, w,1, Color.new(255, 96, 96, 255))
  171.    self.contents.fill_rect(x, y+29, w,1, Color.new(255, 0, 0, 255))
  172.    self.contents.fill_rect(x, y+30, w,1, Color.new(128, 0, 0, 255))
  173.    self.contents.fill_rect(x, y+31, w,1, Color.new(0, 0, 0, 255))
  174.    
  175.    end
  176. #--------------------------------------------------------------------------
  177. # ● SP描画
  178. #--------------------------------------------------------------------------
  179. def draw_actor_sp_meter(actor, x, y, width = 156, type = 0)
  180.    if type == 1 and actor.hp == 0
  181.      return
  182.    end
  183.    self.contents.font.color = system_color
  184.    self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  185.    w = width * actor.sp / actor.maxsp
  186.    self.contents.fill_rect(x, y+28, w,1, Color.new(128, 255, 255, 255))
  187.    self.contents.fill_rect(x, y+29, w,1, Color.new(0, 255, 255, 255))
  188.    self.contents.fill_rect(x, y+30, w,1, Color.new(0, 192, 192, 255))
  189.    self.contents.fill_rect(x, y+31, w,1, Color.new(0, 128, 128, 255))
  190. end
  191. end
复制代码
紫苏 发表于 2009-8-9 19:39:25
麻烦你把血条的脚本贴出来
传说中di 发表于 2009-8-9 17:20:18
  #--------------------------------------------------------------------------
  # ● 取得战斗画面的 X 坐标
  #--------------------------------------------------------------------------
  def screen_x
...
紫苏 发表于 2009-8-9 15:52

要改的地方还有血条的位置...
tree52 发表于 2009-8-9 16:38:46
本帖最后由 tree52 于 2009-8-9 16:43 编辑

2# 紫苏

十分感谢 紫苏 !学习了……嗯
玩过梦幻西游没?


        4
      2
    1
  3
5 ...
后知后觉 发表于 2009-8-9 16:01

也谢谢 后知后觉,原来也可以这样子的~~嘿嘿

还有个问题哈…那个血条怎么处理呢?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-1-11 05:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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