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

Project1

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

[已经解决] 脚本中Game_Actor的一个问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
120
在线时间
92 小时
注册时间
2009-8-1
帖子
438
跳转到指定楼层
1
发表于 2009-8-9 15:15:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 tree52 于 2009-8-10 15:42 编辑

2楼紫苏已经帮忙完成了战斗中人物站位的问题,随之而来的是人物血条不对应,恳请大侠们帮忙看下是哪个地方的数据要更改,血条脚本参见7楼,再次致谢!

以下是2-8楼解决的问题:
=============================================
我在做45度战斗中遇到人物站位的一个问题。按照如下脚本设置的话,那么如果队伍中有一个人,那么这个人就在一个角落的那里,两个人的话就挨着第一个人,总之不能达到一个人也罢、两个人也罢、三个四个人也在居中于斜对角线那里的效果。以图示说明下面的脚本:
队伍中只有一个人(不管是谁):
两人:
三人: 四人:
脚本如下:
  1. #--------------------------------------------------------------------------
  2.   # ● 取得战斗画面的 X 坐标
  3.   #--------------------------------------------------------------------------
  4.   def screen_x
  5.     # 返回计算后的队伍 X 坐标的排列顺序
  6.     if self.index != nil
  7.       case self.index
  8.       when 0
  9.         return 340
  10.       when 1
  11.         return 380
  12.       when 2
  13.         return 440
  14.       when 3
  15.         return 500
  16.       end
  17.     else
  18.       return 0
  19.     end
  20.   end
  21. #--------------------------------------------------------------------------
  22.   # ● 取得战斗画面的 Y 坐标
  23.   #--------------------------------------------------------------------------
  24.   def screen_y
  25.     case self.index
  26.     when 0
  27.       return 420
  28.     when 1
  29.       return 360
  30.     when 2
  31.       return 300
  32.     when 3
  33.       return 240
  34.     end
  35.   end
复制代码
现在不希望这种效果,人物都站偏了,能否有个脚本可以达到不管几个人,都能在居中于斜对角线那里的效果呢?如图:
一人: 两人:
三人: 然后是四人:
================================================
以上问题2-8楼以解决,请大家帮我解决最上面提出的问题。十分感谢。
完成后定会一同结贴与认可。
哎呦,好像快要能发布一款游戏了,这次一定要低调!

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2009-8-9 15:52:32 | 只看该作者
  1.   #--------------------------------------------------------------------------
  2.   # ● 取得战斗画面的 X 坐标
  3.   #--------------------------------------------------------------------------
  4.   def screen_x
  5.     # 返回计算后的队伍 X 坐标的排列顺序
  6.     return (if self.index != nil
  7.       (case self.index
  8.       when 0
  9.         340
  10.       when 1
  11.         380
  12.       when 2
  13.         440
  14.       when 3
  15.         500
  16.       end) + 32 * (4 - $game_party.actors.size)
  17.     else
  18.       0
  19.     end)
  20.   end
  21. #--------------------------------------------------------------------------
  22.   # ● 取得战斗画面的 Y 坐标
  23.   #--------------------------------------------------------------------------
  24.   def screen_y
  25.     return (case self.index
  26.     when 0
  27.       420
  28.     when 1
  29.       360
  30.     when 2
  31.       300
  32.     when 3
  33.       240
  34.     end) - 32 * (4 - $game_party.actors.size)
  35.   end
复制代码
32 * (4 - $game_party.actors.size) 这里是关键,可以自行调节~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6695
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
发表于 2009-8-9 16:01:42 | 只看该作者
本帖最后由 后知后觉 于 2009-8-9 16:05 编辑

玩过梦幻西游没?

1号位置放中间
2号位置放1号位置的右边
3号位置放1号位置的左边
4号位置放2号位置的右边
5号位置放3号位置的左边

        4
      2
    1
  3
5











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
92 小时
注册时间
2009-8-1
帖子
438
4
 楼主| 发表于 2009-8-9 16:38:46 | 只看该作者
本帖最后由 tree52 于 2009-8-9 16:43 编辑

2# 紫苏

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


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

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

还有个问题哈…那个血条怎么处理呢?
哎呦,好像快要能发布一款游戏了,这次一定要低调!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
84
在线时间
156 小时
注册时间
2009-8-5
帖子
533
5
发表于 2009-8-9 17:20:18 | 只看该作者
  #--------------------------------------------------------------------------
  # ● 取得战斗画面的 X 坐标
  #--------------------------------------------------------------------------
  def screen_x
...
紫苏 发表于 2009-8-9 15:52

要改的地方还有血条的位置...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
6
发表于 2009-8-9 19:39:25 | 只看该作者
麻烦你把血条的脚本贴出来
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
92 小时
注册时间
2009-8-1
帖子
438
7
 楼主| 发表于 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
复制代码
哎呦,好像快要能发布一款游戏了,这次一定要低调!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-8-2
帖子
275
8
发表于 2009-8-9 21:00:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
92 小时
注册时间
2009-8-1
帖子
438
9
 楼主| 发表于 2009-8-10 15:42:55 | 只看该作者
那现在人物与血条不对应了怎么办?
哎呦,好像快要能发布一款游戏了,这次一定要低调!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
92 小时
注册时间
2009-8-1
帖子
438
10
 楼主| 发表于 2009-8-10 20:27:47 | 只看该作者
超过三个小时自顶一次。

重新描述下问题:按照紫苏中32 * (4 - $game_party.actors.size) 这个关键的一步,怎么才能把血条放在人物下方?由于这个方法中人物位置是不固定的,所以如果获取了人物坐标会不会产生不是对应在某一主角下面…?如不能求解,我也就放弃继续询问了,谢谢…
哎呦,好像快要能发布一款游戏了,这次一定要低调!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-4 23:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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