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

Project1

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

[已经解决] 求一个可以改分辨率的脚本(VX Ace的)

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1429
在线时间
251 小时
注册时间
2019-1-18
帖子
194
1
发表于 2019-4-4 18:47:56 | 显示全部楼层
#--------------------------------------------------------------------------
# ■ WindMesser 解像度640x480対応プロジェクト(VX Ace版) ver1.00
#--------------------------------------------------------------------------
#   作者:尘风
# URL:http://windmesser.tm.land.to/index.html
# MAIL:[email protected]
#------------------------------------------------------------------------------------------------------------------------------------------------
#概要:将RPGツクールVX Ace的分辨率变更为640×480。
#方法:标题、游戏结束、战斗时的背景图像自动放大。
#战斗背景是672 x512,
#除此之外,扩大到640×480。
#另外,战斗时敌人的初始位置会根据解析度进行修正。
#关于窗口表示也加入了若干的布局调整。
#
#使用条件:各素材的推荐图像尺寸如下。
#※必须使用过渡素材。
#
#・标题(Graphics/System/Titles1, Graphics/System/Titles2)
# 640x480
#・游戏结束(Graphics/System/GameOver.png)
# 640x480
#・战斗背景(Graphics/BattleBacks1, Graphics/BattleBacks2)
# 672 x512
#・变速箱(Graphics/System/BattleStart.png)
# 640x480
#
#使用方法:在脚本编辑器的“▼素材”以下插入
#------------------------------------------------------------------------------------------------------------------------------------------------
# ver1.00:窗口显示周围的布局调整
#扩展HP规格和项目名称表示领域,
#尽量不让窗口显得空荡荡的。
# # ver0.91:将战斗背景扩大成大一圈
#为了不扩大,将图像尺寸改为676x512。
# ver0.90:仅放大调整背景图像的简单版本
#--------------------------------------------------------------------------

#==============================================================================
# ▼ 内部仕様の定数
#==============================================================================

# 解像度640x480プロジェクト使用フラグ
# ※他スクリプト素材配布者様向けの判断用フラグ変数です
#   (Graphics.width, Graphics.height で判断する事もできます)
$VXA_640x480 = true

# VX Ace デフォルト解像度
$VXA_O_WIDTH = 544
$VXA_O_HEIGHT = 416

# 解像度を640x480に変更
Graphics.resize_screen(640, 480)

#==============================================================================
# ▼ 追加メソッド
#==============================================================================

class Sprite
  
  #--------------------------------------------------------------------------
  # ● スプライト拡大メソッド
  #    使用素材幅がデフォルト解像度に準拠していれば拡大
  #--------------------------------------------------------------------------
  def vxa_640x480_zoom(add_w = 0, add_h = 0)
   
    self.zoom_x = (Graphics.width + add_w) * 1.0 / width
    self.zoom_y = (Graphics.height + add_h) * 1.0 / height

  end
  
end

#==============================================================================
# ▼ プリセットスクリプト再定義1:画像拡大など
#==============================================================================

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Title < Scene_Base
  
  if !method_defined?(:create_background_vga)
    alias create_background_vga create_background
  end
  
  #--------------------------------------------------------------------------
  # ● 背景の作成
  #--------------------------------------------------------------------------
  def create_background
    create_background_vga
   
    # タイトル画像の拡大
    @sprite1.vxa_640x480_zoom
    @sprite2.vxa_640x480_zoom

  end
  
end

#==============================================================================
# ■ Scene_Gameover
#------------------------------------------------------------------------------
#  ゲームオーバー画面の処理を行うクラスです。
#==============================================================================

class Scene_Gameover < Scene_Base
  
  if !method_defined?(:create_background_vga)
    alias create_background_vga create_background
  end

  #--------------------------------------------------------------------------
  # ● 背景の作成
  #--------------------------------------------------------------------------
  def create_background
    create_background_vga
   
    # ゲームオーバー画像の拡大
    @sprite.vxa_640x480_zoom
   
  end

end

#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
#  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ
# スの内部で使用されます。
#==============================================================================

class Spriteset_Battle
  
  if !method_defined?(:create_battleback1_vga)
    alias create_battleback1_vga create_battleback1
    alias create_battleback2_vga create_battleback2
    alias create_enemies_vga create_enemies
  end

  #--------------------------------------------------------------------------
  # ● 戦闘背景(床)スプライトの作成
  #--------------------------------------------------------------------------
  def create_battleback1
    create_battleback1_vga
   
    # 戦闘背景の拡大
    @back1_sprite.vxa_640x480_zoom(36, 32)
   
  end
  #--------------------------------------------------------------------------
  # ● 戦闘背景(壁)スプライトの作成
  #--------------------------------------------------------------------------
  def create_battleback2
    create_battleback2_vga
   
    # 戦闘背景の拡大
    @back2_sprite.vxa_640x480_zoom(36, 32)
   
  end
  
end

#==============================================================================
# ■ Game_Troop
#------------------------------------------------------------------------------
#  敵グループおよび戦闘に関するデータを扱うクラスです。バトルイベントの処理も
# 行います。このクラスのインスタンスは $game_troop で参照されます。
#==============================================================================

class Game_Troop < Game_Unit
  
  if !method_defined?(:setup_vga)
    alias setup_vga setup
  end
  
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  def setup(troop_id)
    setup_vga(troop_id)
   
    # トループ座標の修正
    @enemies.each do |enemy|
      enemy.screen_x = (enemy.screen_x * (Graphics.width * 1.0 / $VXA_O_WIDTH)).to_i
      enemy.screen_y = (enemy.screen_y * (Graphics.height * 1.0 / $VXA_O_HEIGHT)).to_i
    end
   
  end
  
end

#==============================================================================
# ▼ プリセットスクリプト再定義2:ウィンドウレイアウト調整など
#==============================================================================

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのウィンドウのスーパークラスです。
#==============================================================================

class Window_Base < Window
  if !method_defined?(:draw_actor_name_vga)
    alias draw_actor_name_vga draw_actor_name
    alias draw_actor_class_vga draw_actor_class
    alias draw_actor_hp_vga draw_actor_hp
    alias draw_actor_mp_vga draw_actor_mp
    alias draw_actor_tp_vga draw_actor_tp
    alias draw_item_name_vga draw_item_name
  end
  
  #--------------------------------------------------------------------------
  # ● 名前の描画
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y, width = 144)
    draw_actor_name_vga(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # ● 職業の描画
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y, width = 144)
    draw_actor_class_vga(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # ● HP の描画
  #--------------------------------------------------------------------------
  def draw_actor_hp(actor, x, y, width = 188)
    draw_actor_hp_vga(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # ● MP の描画
  #--------------------------------------------------------------------------
  def draw_actor_mp(actor, x, y, width = 188)
    draw_actor_mp_vga(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # ● TP の描画
  #--------------------------------------------------------------------------
  def draw_actor_tp(actor, x, y, width = 188)
    draw_actor_tp_vga(actor, x, y, width)
  end
  #--------------------------------------------------------------------------
  # ● シンプルなステータスの描画
  #--------------------------------------------------------------------------
  def draw_actor_simple_status(actor, x, y)
    draw_actor_name(actor, x, y)
    draw_actor_level(actor, x, y + line_height * 1)
    draw_actor_icons(actor, x, y + line_height * 2)
    draw_actor_class(actor, x + 152, y)
    draw_actor_hp(actor, x + 152, y + line_height * 1)
    draw_actor_mp(actor, x + 152, y + line_height * 2)
  end
  #--------------------------------------------------------------------------
  # ● 能力値の描画
  #--------------------------------------------------------------------------
  def draw_actor_param(actor, x, y, param_id)
    change_color(system_color)
    draw_text(x, y, 152, line_height, Vocab::param(param_id))
    change_color(normal_color)
    draw_text(x + 152, y, 36, line_height, actor.param(param_id), 2)
  end
  #--------------------------------------------------------------------------
  # ● アイテム名の描画
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y, enabled = true, width = 236)
    draw_item_name_vga(item, x, y, enabled, width)
  end
  
end

#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status < Window_Selectable
  
  #--------------------------------------------------------------------------
  # ● ブロック 1 の描画
  #--------------------------------------------------------------------------
  def draw_block1(y)
    draw_actor_name(@actor, 4, y)
    draw_actor_class(@actor, 128, y)
    draw_actor_nickname(@actor, 336, y)
  end
  #--------------------------------------------------------------------------
  # ● ブロック 2 の描画
  #--------------------------------------------------------------------------
  def draw_block2(y)
    draw_actor_face(@actor, 8, y)
    draw_basic_info(136, y)
    draw_exp_info(336, y)
  end
  #--------------------------------------------------------------------------
  # ● ブロック 3 の描画
  #--------------------------------------------------------------------------
  def draw_block3(y)
    draw_parameters(32, y)
    draw_equipments(336, y)
  end
  #--------------------------------------------------------------------------
  # ● 経験値情報の描画
  #--------------------------------------------------------------------------
  def draw_exp_info(x, y)
    s1 = @actor.max_level? ? "-------" : @actor.exp
    s2 = @actor.max_level? ? "-------" : @actor.next_level_exp - @actor.exp
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    change_color(system_color)
    draw_text(x, y + line_height * 0, 180, line_height, Vocab::ExpTotal)
    draw_text(x, y + line_height * 2, 180, line_height, s_next)
    change_color(normal_color)
    draw_text(x, y + line_height * 1, 180, line_height, s1, 2)
    draw_text(x, y + line_height * 3, 180, line_height, s2, 2)
  end
  
end

#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
#  バトル画面で、パーティメンバーのステータスを表示するウィンドウです。
#==============================================================================

class Window_BattleStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ゲージエリアの幅を取得
  #--------------------------------------------------------------------------
  def gauge_area_width
    return 284
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの描画(TP あり)
  #--------------------------------------------------------------------------
  def draw_gauge_area_with_tp(rect, actor)
    draw_actor_hp(actor, rect.x + 0, rect.y, 136)
    draw_actor_mp(actor, rect.x + 146, rect.y, 64)
    draw_actor_tp(actor, rect.x + 220, rect.y, 64)
  end
  #--------------------------------------------------------------------------
  # ● ゲージエリアの描画(TP なし)
  #--------------------------------------------------------------------------
  def draw_gauge_area_without_tp(rect, actor)
    draw_actor_hp(actor, rect.x + 0, rect.y, 166)
    draw_actor_mp(actor, rect.x + 176,  rect.y, 108)
  end
end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1429
在线时间
251 小时
注册时间
2019-1-18
帖子
194
2
发表于 2023-7-30 19:24:24 | 显示全部楼层
sezhiyang 发表于 2019-4-3 09:49
在676行改分辨率,现在是800.600,兼容性最好

第678行报错了,说是无效的指令“_end_"
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 03:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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