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

Project1

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

[讨论] Windows_BattleStatus 更新!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
跳转到指定楼层
1
发表于 2010-10-18 00:45:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Rion幻音 于 2010-10-18 11:18 编辑

因为只是修改坐标……所以不敢以原创发布……

截图


脚本
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #   作者:Rion幻音
  5. #   来自:66RPG
  6. #  显示战斗画面同伴状态的窗口。
  7. #==============================================================================

  8. class Window_BattleStatus < Window_Selectable
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对像
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(0, 0, 416, 128)
  14.     refresh
  15.     self.active = false
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 释放
  19.   #--------------------------------------------------------------------------
  20.   def dispose
  21.     super
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     self.contents.clear
  28.     @item_max = $game_party.members.size
  29.     for i in 0...@item_max
  30.       draw_item(i)
  31.     end
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 描绘项目
  35.   #     index : 项目索引
  36.   #--------------------------------------------------------------------------
  37.     def draw_item(index)
  38.     rect = item_rect(index)
  39.     rect.x += 4
  40.     rect.width -= 8
  41.     self.contents.clear_rect(rect)
  42.     self.contents.font.color = normal_color
  43.     @item_max = $game_party.members.size
  44.     for actor in $game_party.members
  45.     draw_actor_face(actor,actor.index*96, 0)
  46.     draw_actor_name(actor,actor.index*96, 0)
  47.     draw_actor_state(actor,actor.index*96, 24)  
  48.     draw_actor_hp(actor,actor.index*96, 54,96)
  49.     draw_actor_mp(actor,actor.index*96, 72,96)
  50.   end
  51. end
  52.     def update_cursor
  53.     if @index < 0
  54.       self.cursor_rect.empty
  55.     else
  56.       self.cursor_rect.set(@index * 96, 0, 96, 96)
  57.     end
  58.   end
  59. end
复制代码
更新项目!!!

(感谢oikl1268以及九大的指出)
截图

脚本
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #   作者:Rion幻音
  5. #   来自:66RPG
  6. #  显示战斗画面同伴状态的窗口。
  7. #==============================================================================

  8. class Window_BattleStatus < Window_Selectable
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对像
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(0, 0, 544, 128)
  14.     refresh
  15.     self.active = false
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 释放
  19.   #--------------------------------------------------------------------------
  20.   def dispose
  21.     super
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     self.contents.clear
  28.     @item_max = $game_party.members.size
  29.     for i in 0...@item_max
  30.       draw_item(i)
  31.     end
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 描绘项目
  35.   #     index : 项目索引
  36.   #--------------------------------------------------------------------------
  37.     def draw_item(index)
  38.     rect = item_rect(index)
  39.     rect.x += 4
  40.     rect.width -= 8
  41.     self.contents.clear_rect(rect)
  42.     self.contents.font.color = normal_color
  43.     @item_max = $game_party.members.size
  44.     for actor in $game_party.members
  45.     draw_actor_face(actor,actor.index*128, 0)
  46.     draw_actor_name(actor,actor.index*128, 0)
  47.     draw_actor_state(actor,actor.index*128, 24)  
  48.     draw_actor_hp(actor,actor.index*128, 54)
  49.     draw_actor_mp(actor,actor.index*128, 72)
  50.   end
  51. end
  52.     def update_cursor
  53.     if @index < 0
  54.       self.cursor_rect.empty
  55.     else
  56.       self.cursor_rect.set(@index * 128, 0, 128, 96)
  57.     end
  58.   end
  59. end
复制代码
第二个
  1. #==============================================================================
  2. # ■ Window_PartyCommand
  3. #------------------------------------------------------------------------------
  4. #  战斗画面、选择战斗与逃跑的窗口。
  5. #==============================================================================

  6. class Window_PartyCommand < Window_Command
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     s1 = Vocab::fight
  12.     s2 = Vocab::escape
  13.     super(272, [s1, s2], 2, 1)
  14.     draw_item(0, true)
  15.     draw_item(1, $game_troop.can_escape)
  16.     self.active = false
  17.   end
  18. end

  19. #==============================================================================
  20. # ■ Window_ActorCommand
  21. #------------------------------------------------------------------------------
  22. #  选择角色命令(如「攻击」或「技能」)的窗口。
  23. #==============================================================================

  24. class Window_ActorCommand < Window_Command
  25.   #--------------------------------------------------------------------------
  26.   # ● 初始化对像
  27.   #--------------------------------------------------------------------------
  28.   def initialize
  29.     super(544, [], 4, 1)
  30.     self.active = false
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置
  34.   #     actor : 角色
  35.   #--------------------------------------------------------------------------
  36.   def setup(actor)
  37.     s1 = Vocab::attack
  38.     s2 = Vocab::skill
  39.     s3 = Vocab::guard
  40.     s4 = Vocab::item
  41.     if actor.class.skill_name_valid     # 是否指定职业技能文字
  42.       s2 = actor.class.skill_name       # 替换「技能」命令文字
  43.     end
  44.     @commands = [s1, s2, s3, s4]
  45.     @item_max = 4
  46.     refresh
  47.     self.index = 0
  48.   end
  49. end

  50. #==============================================================================
  51. # ■ Scene_Battle
  52. #------------------------------------------------------------------------------
  53. #  处理战斗画面的类。
  54. #==============================================================================

  55. class Scene_Battle < Scene_Base
  56.   def update
  57.     super
  58.     update_basic(true)
  59.     update_info_viewport                  # 更新资讯显示端口
  60.     if $game_message.visible
  61.       @info_viewport.visible = false
  62.       @info_viewport.visible1 = false
  63.       @info_viewport.visible2 = false
  64.       @message_window.visible = true
  65.     end
  66.     unless $game_message.visible          # 除非讯息显示中
  67.       return if judge_win_loss            # 判断胜负结果
  68.       update_scene_change
  69.       if @target_enemy_window != nil
  70.         update_target_enemy_selection     # 选择目标敌人
  71.       elsif @target_actor_window != nil
  72.         update_target_actor_selection     # 选择目标角色
  73.       elsif @skill_window != nil
  74.         update_skill_selection            # 选择技能
  75.       elsif @item_window != nil
  76.         update_item_selection             # 选择物品
  77.       elsif @party_command_window.active
  78.         update_party_command_selection    # 选择队伍命令
  79.       elsif @actor_command_window.active
  80.         update_actor_command_selection    # 选择角色命令
  81.       else
  82.         process_battle_event              # 战斗事件处理
  83.         process_action                    # 战斗行动
  84.         process_battle_event              # 战斗事件处理
  85.       end
  86.     end
  87.   end
  88.   def create_info_viewport
  89.     @info_viewport = Viewport.new(0, 288, 544, 416)
  90.     @info_viewport1 = Viewport.new(0, 0, 544, 56)
  91.     @info_viewport2 = Viewport.new(0, 232, 544, 56)
  92.     @info_viewport.z = 100
  93.     @info_viewport1.z = 100
  94.     @info_viewport2.z = 100
  95.     @status_window = Window_BattleStatus.new
  96.     @party_command_window = Window_PartyCommand.new
  97.     @actor_command_window = Window_ActorCommand.new
  98.     @status_window.viewport = @info_viewport
  99.     @party_command_window.viewport = @info_viewport1
  100.     @actor_command_window.viewport = @info_viewport2
  101.     @info_viewport.visible = false
  102.     @info_viewport1.visible = false
  103.     @info_viewport2.visible = false
  104.   end
  105.   
  106.   def dispose_info_viewport
  107.     @status_window.dispose
  108.     @party_command_window.dispose
  109.     @actor_command_window.dispose
  110.     @info_viewport.dispose
  111.     @info_viewport1.dispose
  112.     @info_viewport2.dispose
  113.   end
  114.   
  115.   def update_info_viewport
  116.     @info_viewport1.visible = true if @party_command_window.active
  117.     @info_viewport1.visible = false if @actor_command_window.active
  118.     @info_viewport2.visible = true if @actor_command_window.active
  119.     @info_viewport2.visible = false if @party_command_window.active
  120.     @party_command_window.update
  121.     @actor_command_window.update
  122.     @status_window.update
  123.   end
  124.   
  125.   def start_party_command_selection
  126.     if $game_temp.in_battle
  127.       @status_window.refresh
  128.       @status_window.index = @actor_index = -1
  129.       @active_battler = nil
  130.       @info_viewport.visible = true
  131.       @info_viewport1.visible = true
  132.       @message_window.visible = false
  133.       @party_command_window.active = true
  134.       @party_command_window.index = 0
  135.       @actor_command_window.active = false
  136.       $game_party.clear_actions
  137.       if $game_troop.surprise or not $game_party.inputable?
  138.         start_main
  139.       end
  140.     end
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 开始角色命令选择
  144.   #--------------------------------------------------------------------------
  145.   def start_actor_command_selection
  146.     @party_command_window.active = false
  147.     @actor_command_window.setup(@active_battler)
  148.     @actor_command_window.active = true
  149.     @actor_command_window.index = 0
  150.     @info_viewport2.visible = true
  151.   end
  152.   
  153.   def update_actor_command_selection
  154.     if Input.trigger?(Input::B)
  155.       Sound.play_cancel
  156.       prior_actor
  157.       @info_viewport2.visible = true
  158.     elsif Input.trigger?(Input::C)
  159.       case @actor_command_window.index
  160.       when 0  # 攻击
  161.         Sound.play_decision
  162.         @active_battler.action.set_attack
  163.         start_target_enemy_selection
  164.       when 1  # 技能
  165.         Sound.play_decision
  166.         start_skill_selection
  167.       when 2  # 防御
  168.         Sound.play_decision
  169.         @active_battler.action.set_guard
  170.         next_actor
  171.       when 3  # 物品
  172.         Sound.play_decision
  173.         start_item_selection
  174.       end
  175.       @info_viewport2.visible = false
  176.     end
  177.   end
  178. end
复制代码
脚本写法粗鲁请勿见怪……



这个灵感是来自6R的游戏,因为大多都是用默认的战斗状态……囧

也顺便送给新人参考


让我们一起讨论下还有怎样的排列法吧!




PS:如果觉得好的话,请给我经验啊

点评

今后还会有更多版本!请多多支持!  发表于 2010-10-18 11:20

评分

参与人数 2星屑 +760 收起 理由
MSQ + 60 好像比我的好~~(众人:明显不是一个档次的.
九夜神尊 + 700 继续努力

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
2
发表于 2010-10-18 07:47:13 | 只看该作者
四个人快挤死了!

评分

参与人数 1星屑 +6 收起 理由
Rion幻音 + 6 感谢指出

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
3
 楼主| 发表于 2010-10-18 09:42:01 | 只看该作者
所以才要想出新的排法
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-9-23
帖子
51
4
发表于 2010-10-18 09:43:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
5
 楼主| 发表于 2010-10-18 11:33:20 | 只看该作者
本帖最后由 Rion幻音 于 2010-10-27 14:42 编辑

最新效果

说明

白色:角色名称
青色:体力数值与体力槽
蓝色:精力数值与精力槽
黄色:角色脸图
粉色:状态(像走马灯的功效)
紫色:怒气槽(极限时会更换颜色)
灰色:行动槽(不必我讲了吧 ~)

注:上图为640*480版本

话不多说
范例 Rion 战斗视窗.rar (288.4 KB, 下载次数: 690)

点评

话说 战斗头像那区有种未来感啊~~ 应该比较适合机战类或科幻题材  发表于 2010-10-27 15:45
应该你是只用在战斗中 我之前找的是STRRGSS2 ARCHIVES的矢印脚本 菜单选择时 若是两层菜单 进第二层时 前一层的矢印会超快速闪动  发表于 2010-10-27 15:43
超棒,完全满意。  发表于 2010-10-26 12:21
矢印脚本在下没见到BUG呢?  发表于 2010-10-26 02:34
太强悍了 横版真的能做的东西比较多啊 话说你用那个矢印脚本 我记得那不是在选择时会有点小bug吗?(原打算要用 後来问题解不了就放弃改另个了)  发表于 2010-10-26 01:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小莹爱水区

梦石
0
星屑
60
在线时间
163 小时
注册时间
2010-9-18
帖子
1085
6
发表于 2010-10-18 12:12:52 | 只看该作者
四个人的血条成为了一条线.,..不知道有没有方法改进

点评

重定义draw_actor_hp和draw_actor_mp即可 不然就是用别的方式表现hp和mp条 例如kgc的泛用gauge脚本  发表于 2010-10-18 12:20
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
636
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

7
发表于 2010-10-18 12:40:45 | 只看该作者
嗯……要是能自动居中就好了(比方说一个、两个或三个人的时候)并且希望每个人都新开一个窗口……幻音你可一定要实现我的愿望啊~~~~拜托了~~表示愿意给3个VIP

点评

自动居中这能做到,新开窗口可有点难度了,请给出多少战斗人数,荧幕大小,所需高度之类的……  发表于 2010-10-18 14:04
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
518 小时
注册时间
2010-6-16
帖子
1073
8
 楼主| 发表于 2010-10-18 13:22:29 | 只看该作者
本帖最后由 Rion幻音 于 2010-10-18 13:42 编辑

看见酬劳表示……


!!!拼了!!! (燃烧起来了啊!!!)


用图案行吗?
像这样



注:本人脚本属于初学,失败的话抱歉啦~

点评

回迷路:VX的横版战斗不是只能弄Q版小图的,只要修改一些,它还能弄出动画战斗,大图横板等等……美工量的确会晕倒(=o=TTT)  发表于 2010-10-26 16:02
可惜目前VX的横版似乎只有Q版小图的 能有XP那种大图横版就好了~ 不过那美工量大概会晕倒  发表于 2010-10-19 16:36
嗯,麻烦幻音了~  发表于 2010-10-19 13:15
迷路大大你吐槽了==|||  发表于 2010-10-18 20:29
回迷路:这是我游戏战斗画面的截图(暂时的),游戏里当然会用到KGC组织们的大脚本(汗) 回冰舞:会改进的,满意吗?  发表于 2010-10-18 20:24
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小莹爱水区

梦石
0
星屑
60
在线时间
163 小时
注册时间
2010-9-18
帖子
1085
9
发表于 2010-10-18 17:11:31 | 只看该作者
哇,这次就比上次好多了呀...看来加分是动力~~~
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
636
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

10
发表于 2010-10-19 13:15:48 | 只看该作者
可不是嘛~~

点评

呃,那就算了!5楼那个很好。  发表于 2010-10-26 16:58
真是抱歉,原本以为自动居中已完成,才发现居中的只有脸图,其他不能居中TAT  发表于 2010-10-26 15:55
图片效果已完成……更新在5楼……  发表于 2010-10-26 00:06
这样啊……那请问幻音大能不能做出图片角色信息框呢?谢谢啊~  发表于 2010-10-20 17:03
实在很抱歉,本人脚本未精,只能帮你做到自动居中~ 不知阁下还要脚本吗?  发表于 2010-10-20 16:06
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-21 20:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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