Project1

标题: 【VX】 关于战斗视窗的脚本 [打印本页]

作者: kapoleo    时间: 2011-12-11 20:42
标题: 【VX】 关于战斗视窗的脚本
本帖最后由 仲秋启明 于 2011-12-14 15:30 编辑

早前在66下了一个把vx的解像度变为640*480脚本
之后的所有视窗都要全部调校
我不懂脚本....但一​​些简单的例如skill、item、equip的视窗按说明便能慢慢调回适应640*480
不过战斗视窗方面我就完全一头无绪了
不知是我找不到还是脚本本身没有表明
我不知哪个视窗配哪段脚本
改来改去都一塌糊涂
不是重叠了就是无法与外框对齐
不是隔开老远的便是悬空了
请问我该在哪里找到有关战斗视窗脚本的说明呢?
(即是"作战/撤退"、"hp/sp"、"攻击/技能/物品"那些战窗)
谢谢

作者: 喵娘    时间: 2011-12-11 20:52
本帖最后由 喵娘 于 2011-12-11 21:11 编辑

Scene_Battle 15行:
  1.     @message_window = Window_BattleMessage.new
复制代码
这是第一个窗口。着手修改:
  1. #==============================================================================
  2. # ■ Window_BattleMessage
  3. #------------------------------------------------------------------------------
  4. #  在战斗画面显示信息的窗口。除了一般信息功能之外,还增加战斗进行描述功能。
  5. #==============================================================================

  6. class Window_BattleMessage < Window_Message
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super
复制代码
可以看到这里super没有带参数,是直接根据父类来的,所以退回去找父类 Window_Message
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================

  6. class Window_Message < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 常量
  9.   #--------------------------------------------------------------------------
  10.   MAX_LINE = 4                            # 最大行数
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化对像
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.     super(0, 288, 544, 128)
复制代码
这里就是要修改的位置了(如果你希望战斗和其他分开的话也可以直接把上面的super改成super(x, y, 宽, 高)的形式。
(四个参数未特殊声明都是这种形式,以下不再赘述。)


Scene_Battle 119-134行:
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成资讯显示端口
  3.   #--------------------------------------------------------------------------
  4.   def create_info_viewport
  5.     @info_viewport = Viewport.new(0, 288, 544, 128)
  6.     @info_viewport.z = 100
  7.     @status_window = Window_BattleStatus.new
  8.     @party_command_window = Window_PartyCommand.new
  9.     @actor_command_window = Window_ActorCommand.new
  10.     @status_window.viewport = @info_viewport
  11.     @party_command_window.viewport = @info_viewport
  12.     @actor_command_window.viewport = @info_viewport
  13.     @status_window.x = 128
  14.     @actor_command_window.x = 544
  15.     @info_viewport.visible = false
  16.   end
复制代码
首先将5行viewport的大小改掉,下面13、14行两个x坐标改掉,然后进入三个Window的修改:
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #  显示战斗画面同伴状态的窗口。
  5. #==============================================================================

  6. class Window_BattleStatus < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 416, 128)
复制代码
直接改Super
  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(128, [s1, s2], 1, 4)
复制代码
  1. #==============================================================================
  2. # ■ Window_ActorCommand
  3. #------------------------------------------------------------------------------
  4. #  选择角色命令(如「攻击」或「技能」)的窗口。
  5. #==============================================================================

  6. class Window_ActorCommand < Window_Command
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(128, [], 1, 4)
复制代码
后两个脚本只改super的第一个参数,后边不要动(具体这些参数是干什么的到Window_Command一看便知)


Scene_Battle 328-329行:
  1.     @target_enemy_window = Window_TargetEnemy.new
  2.     @target_enemy_window.y = @info_viewport.rect.y
复制代码
第2行的viewport前面改过了所以无视,转到Window_TargetEnemy:
  1. #==============================================================================
  2. # ■ Window_TargetEnemy
  3. #------------------------------------------------------------------------------
  4. #  在战斗画面,选择要攻击的敌人的窗口。
  5. #==============================================================================

  6. class Window_TargetEnemy < Window_Command
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     commands = []
  12.     @enemies = []
  13.     for enemy in $game_troop.members
  14.       next unless enemy.exist?
  15.       commands.push(enemy.name)
  16.       @enemies.push(enemy)
  17.     end
  18.     super(416, commands, 2, 4)
复制代码
同样是改super第一项


Scene_Battle 405-406行:
  1.     @help_window = Window_Help.new
  2.     @skill_window = Window_Skill.new(0, 56, 544, 232, @active_battler)
复制代码
先把第二行前四个参数改掉,然后转到Window_Help:
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #==============================================================================

  6. class Window_Help < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 544, WLH + 32)
复制代码
改第三项544(WLH是一个常量,表示字号,帮主窗口的高度是通过字号+窗口边框32像素自动计算的,这里不用改)


Scene_Battle 466-467行:
  1.     @help_window = Window_Help.new
  2.     @item_window = Window_Item.new(0, 56, 544, 232)
复制代码
Window_Help刚改过了,略过。直接改第二行的四个参数。

〖完〗
作者: kapoleo    时间: 2011-12-11 23:09
啊.....可以额外问一下吗?
Window_BattleStatus 的:

  def draw_item(index)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    actor = $game_party.members[index]
    draw_actor_name(actor, 4, rect.y)
    draw_actor_state(actor, 116, rect.y, 48)
    draw_actor_hp(actor, 174, rect.y, 120)
    draw_actor_mp(actor, 310, rect.y, 70)

这里需要调一下吗?
谢谢~~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1