[VX] Résolution 640x480 pixels.
Auteur Message dYeu retraité prématurément Age : 29Inscrit le : 09/02/2008Messages : 5357 Sujet: [VX] Résolution 640x480 pixels. Jeu 13 Mar 2008 - 20:51 Auteur: Krazplay
Incompatible avec : Temps de jeu et localisation.
Vous devez faire des cartes minimum en 20/15 A placer au dessus de Main mais aussi au dessus des scripts que vous avez rajoutés 1er partie :
Code: #============================================================================== # ** Retour à la résolution 640x480 (pour RPG Maker VX) #------------------------------------------------------------------------------ # Résolution 640x480 (pour RPG Maker VX) par Krazplay # Version 1.0 (23/01/2008) # Dernière version, commentaires : http://rpgmakerxp-factory.net/forum/index.php?topic=12460 #------------------------------------------------------------------------------ # Ce script ne fait pas que changer la résolution, il modifie pas mal de choses # pour que le jeu soit adapté à sa nouvelle résolution. # Sachant que ce script redéfinit pas mal de méthodes, il est vivement conseillé # de le placer au-dessus de vos autres scripts ajoutés (mais en-dessous de ceux # de base, à part Main évidemment) # # Résolution de base : 544x416 (17x13 cases de 32 pixels) # Nouvelle résolution : 640x480 (20x15 cases de 32 pixels) # On gagne donc 96x64 pixels #------------------------------------------------------------------------------ # Toutes les méthodes modifiées : # # □ Game_Map : calc_parallax_x, calc_parallax_y, setup_scroll, # scroll_down, scroll_right # □ Game_Player : center # □ Sprite_Base : start_animation # □ Sprite_Timer : initialize # □ Spriteset_Map : create_viewports # □ Spriteset_Battle : create_viewports, create_enemies, create_battleback, # create_battlefloor # □ Window_Help, Window_SkillStatus, Window_Equip : initialize # □ Window_Status, Window_SaveFile, Window_NumberInput : initialize # □ Window_ShopBuy, Window_ShopStatus : initialize # □ Window_MenuStatus : initialize, refresh, update_cursor # □ Window_Message : initialize, reset_window # □ Scene_Title : create_title_graphic, create_command_window # □ Scene_Menu : start # □ Scene_Item : start, show_target_window, hide_target_window # □ Scene_Skill : start, show_target_window, hide_target_window # □ Scene_Equip : create_item_windows # □ Scene_End : create_command_window # □ Scene_Shop : start # □ Scene_Battle : create_info_viewport, start_skill_selection, # start_item_selection, create_info_viewport, # start_skill_selection, start_item_selection #============================================================================== # Agrandir les images Title.png et BattleFloor.png si elles sont trop petites. AGRANDIR_IMAGES = true Graphics.resize_screen(640, 480) #============================================================================== # ■ Game_Objects #============================================================================== # □ Game_Map # class Game_Map def calc_parallax_x(bitmap) if bitmap == nil return 0 elsif @parallax_loop_x return @parallax_x / 16 elsif loop_horizontal? return 0 else w1 = bitmap.width - 640 w2 = @map.width * 32 - 640 if w1 <= 0 or w2 <= 0 return 0 else return @parallax_x * w1 / w2 / 8 end end end def calc_parallax_y(bitmap) if bitmap == nil return 0 elsif @parallax_loop_y return @parallax_y / 16 elsif loop_vertical? return 0 else h1 = bitmap.height - 480 h2 = @map.height * 32 - 480 if h1 <= 0 or h2 <= 0 return 0 else return @parallax_y * h1 / h2 / 8 end end end def setup_scroll @scroll_direction = 2 @scroll_rest = 0 @scroll_speed = 4 @margin_x = (width - 20) * 256 / 2 # 画面非表示分の横幅 / 2 @margin_y = (height - 15) * 256 / 2 # 画面非表示分の縦幅 / 2 end def scroll_down(distance) if loop_vertical? @display_y += distance @display_y %= @map.height * 256 @parallax_y += distance else last_y = @display_y @display_y = [@display_y + distance, (height - 15) * 256].min @parallax_y += @display_y - last_y end end def scroll_right(distance) if loop_horizontal? @display_x += distance @display_x %= @map.width * 256 @parallax_x += distance else last_x = @display_x @display_x = [@display_x + distance, (width - 20) * 256].min @parallax_x += @display_x - last_x end end end # □ Game_Player # class Game_Player < Game_Character CENTER_X = (640 / 2 - 16) * 8 # 画面中央の X 座標 * 8 CENTER_Y = (480 / 2 - 16) * 8 # 画面中央の Y 座標 * 8 def center(x, y) display_x = x * 256 - CENTER_X # 座標を計算 unless $game_map.loop_horizontal? # 横にループしない? max_x = ($game_map.width - 20) * 256 # 最大値を計算 display_x = [0, [display_x, max_x].min].max # 座標を修正 end display_y = y * 256 - CENTER_Y # 座標を計算 unless $game_map.loop_vertical? # 縦にループしない? max_y = ($game_map.height - 15) * 256 # 最大値を計算 display_y = [0, [display_y, max_y].min].max # 座標を修正 end $game_map.set_display_pos(display_x, display_y) # 表示位置変更 end end #============================================================================== # ■ Sprites #============================================================================== # □ Sprite_Base # class Sprite_Base < Sprite def start_animation(animation, mirror = false) dispose_animation @animation = animation return if @animation == nil @animation_mirror = mirror @animation_duration = @animation.frame_max * 4 + 1 load_animation_bitmap @animation_sprites = [] if @animation.position != 3 or not @@animations.include?(animation) if @use_sprite for i in 0..15 sprite = ::Sprite.new(viewport) sprite.visible = false @animation_sprites.push(sprite) end unless @@animations.include?(animation) @@animations.push(animation) end end end if @animation.position == 3 if viewport == nil @animation_ox = 640 / 2 @animation_oy = 480 / 2 else @animation_ox = viewport.rect.width / 2 @animation_oy = viewport.rect.height / 2 end else @animation_ox = x - ox + width / 2 @animation_oy = y - oy + height / 2 if @animation.position == 0 @animation_oy -= height / 2 elsif @animation.position == 2 @animation_oy += height / 2 end end end end # □ Sprite_Timer # class Sprite_Timer < Sprite def initialize(viewport) super(viewport) self.bitmap = Bitmap.new(88, 48) self.bitmap.font.name = "Arial" self.bitmap.font.size = 32 self.x = 640 - self.bitmap.width self.y = 0 self.z = 200 update end end # □ Spriteset_Map # class Spriteset_Map def create_viewports @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport2.z = 50 @viewport3.z = 100 end end # □ Spriteset_Battle # class Spriteset_Battle def create_viewports @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport2.z = 50 @viewport3.z = 100 end def create_enemies @enemy_sprites = [] for enemy in $game_troop.members.reverse enemy.screen_x += 48 # Recentrage des ennemis @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) end end def create_battleback source = $game_temp.background_bitmap bitmap = Bitmap.new(640+96, 480+64) bitmap.stretch_blt(bitmap.rect, source, source.rect) bitmap.radial_blur(90, 12) @battleback_sprite = Sprite.new(@viewport1) @battleback_sprite.bitmap = bitmap @battleback_sprite.ox = 320+48 @battleback_sprite.oy = 240+32 @battleback_sprite.x = 320 #272 @battleback_sprite.y = 208 #176 @battleback_sprite.wave_amp = 8 @battleback_sprite.wave_length = 240 @battleback_sprite.wave_speed = 120 end def create_battlefloor @battlefloor_sprite = Sprite.new(@viewport1) battle_floor = Cache.system("BattleFloor") if AGRANDIR_IMAGES and battle_floor.width < 640 rect_dest = Rect.new(0, 0, 640, battle_floor.height) new_bitmap = Bitmap.new(640, battle_floor.height) new_bitmap.stretch_blt(rect_dest, battle_floor, battle_floor.rect) @battlefloor_sprite.bitmap = new_bitmap else @battlefloor_sprite.bitmap = battle_floor end @battlefloor_sprite.x = 0 @battlefloor_sprite.y = 192 @battlefloor_sprite.z = 1 @battlefloor_sprite.opacity = 128 end end #============================================================================== # ■ Windows #============================================================================== # □ Window_Help # class Window_Help < Window_Base def initialize super(0, 0, 640, WLH + 32) end end # □ Window_MenuStatus # class Window_MenuStatus < Window_Selectable def initialize(x, y) super(x, y, 480, 480) refresh self.active = false self.index = -1 end def refresh self.contents.clear @item_max = $game_party.members.size for actor in $game_party.members draw_actor_face(actor, 2, actor.index * (96+21) + 2, 92) x = 104 y = actor.index * (96+21) + WLH / 2 draw_actor_name(actor, x, y) draw_actor_class(actor, x + 120, y) draw_actor_level(actor, x, y + WLH * 1) draw_actor_state(actor, x, y + WLH * 2) draw_actor_hp(actor, x + 120, y + WLH * 1, 216) draw_actor_mp(actor, x + 120, y + WLH * 2, 216) end end def update_cursor if @index < 0 # カーソルなし self.cursor_rect.empty elsif @index < @item_max # 通常 self.cursor_rect.set(0, @index * (96+21), contents.width, 96) elsif @index >= 100 # 自分 self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96) else # 全体 self.cursor_rect.set(0, 0, contents.width, @item_max * 96) end end end # □ Window_SkillStatus # class Window_SkillStatus < Window_Base def initialize(x, y, actor) super(x, y, 640, WLH + 32) @actor = actor refresh end end # □ Window_Equip # class Window_Equip < Window_Selectable def initialize(x, y, actor) super(x, y, 336+96, WLH * 5 + 32) @actor = actor refresh self.index = 0 end end # □ Window_Status # class Window_Status < Window_Base def initialize(actor) super(0, 0, 640, 480) @actor = actor refresh end end # □ Window_SaveFile # class Window_SaveFile < Window_Base def initialize(file_index, filename) super(0, 56 + file_index % 4 * (90+21), 640, 90) @file_index = file_index @filename = filename load_gamedata refresh @selected = false end end # □ Window_NumberInput # class Window_NumberInput < Window_Base def initialize super(0, 0, 640, 64) @number = 0 @digits_max = 6 @index = 0 self.opacity = 0 self.active = false self.z += 9999 refresh update_cursor end end # □ Window_ShopBuy # class Window_ShopBuy < Window_Selectable def initialize(x, y) super(x, y, 304+96, 304+64) @shop_goods = $game_temp.shop_goods refresh self.index = 0 end end # □ Window_ShopStatus # class Window_ShopStatus < Window_Base def initialize(x, y) super(x, y, 240, 304+64) @item = nil refresh end end # □ Window_Message # class Window_Message < Window_Selectable def initialize super(0, 352, 640, 128) self.z = 200 self.active = false self.index = -1 self.openness = 0 @opening = false # ウィンドウのオープン中フラグ @closing = false # ウィンドウのクローズ中フラグ @text = nil # 表示すべき残りの文章 @contents_x = 0 # 次の文字を描画する X 座標 @contents_y = 0 # 次の文字を描画する Y 座標 @line_count = 0 # 現在までに描画した行数 @wait_count = 0 # ウェイトカウント @background = 0 # 背景タイプ @position = 2 # 表示位置 @show_fast = false # 早送りフラグ @line_show_fast = false # 行単位早送りフラグ @pause_skip = false # 入力待ち省略フラグ create_gold_window create_number_input_window create_back_sprite end def reset_window @background = $game_message.background @position = $game_message.position if @background == 0 # 通常ウィンドウ self.opacity = 255 else # 背景を暗くする、透明にする self.opacity = 0 end case @position when 0 # 上 self.y = 0 @gold_window.y = 360 when 1 # 中 self.y = 208 @gold_window.y = 0 when 2 # 下 self.y = 352 @gold_window.y = 0 end end end
Dernière édition par fabY le Jeu 13 Mar 2008 - 20:58, édité 1 fois
dYeu retraité prématurément Age : 29Inscrit le : 09/02/2008Messages : 5357 Sujet: Re: [VX] Résolution 640x480 pixels. Jeu 13 Mar 2008 - 20:52 2eme partie, à coller à la suite de la première partie.
Code: #============================================================================== # ■ Scenes #============================================================================== # □ Scene_Title # class Scene_Title def create_title_graphic @sprite = Sprite.new cache_bitmap = Cache.system("Title") if AGRANDIR_IMAGES dest_rect = Rect.new(0, 0, Graphics.width, Graphics.height) bitmap = Bitmap.new(Graphics.width, Graphics.height) bitmap.stretch_blt(dest_rect, cache_bitmap, cache_bitmap.rect) @sprite.bitmap = bitmap else @sprite.bitmap = cache_bitmap end end def create_command_window s1 = Vocab::new_game s2 = Vocab::continue s3 = Vocab::shutdown @command_window = Window_Command.new(172, [s1, s2, s3]) @command_window.x = (640 - @command_window.width) / 2 @command_window.y = 288 if @continue_enabled # コンティニューが有効な場合 @command_window.index = 1 # カーソルを合わせる else # 無効な場合 @command_window.draw_item(1, false) # コマンドを半透明表示にする end @command_window.openness = 0 @command_window.open end end # □ Scene_Menu # class Scene_Menu < Scene_Base def start super create_menu_background create_command_window @gold_window = Window_Gold.new(0, 424) @status_window = Window_MenuStatus.new(160, 0) end end # □ Scene_Item # class Scene_Item < Scene_Base def start super create_menu_background @viewport = Viewport.new(0, 0, 640, 480) @help_window = Window_Help.new @help_window.viewport = @viewport @item_window = Window_Item.new(0, 56, 640, 424) @item_window.viewport = @viewport @item_window.help_window = @help_window @item_window.active = false @target_window = Window_MenuStatus.new(0, 0) hide_target_window end def show_target_window(right) @item_window.active = false width_remain = 640 - @target_window.width @target_window.x = right ? width_remain : 0 @target_window.visible = true @target_window.active = true if right @viewport.rect.set(0, 0, width_remain, 480) @viewport.ox = 0 else @viewport.rect.set(@target_window.width, 0, width_remain, 480) @viewport.ox = @target_window.width end end def hide_target_window @item_window.active = true @target_window.visible = false @target_window.active = false @viewport.rect.set(0, 0, 640, 480) @viewport.ox = 0 end end # □ Scene_Skill # class Scene_Skill < Scene_Base def start super create_menu_background @actor = $game_party.members[@actor_index] @viewport = Viewport.new(0, 0, 640, 480) @help_window = Window_Help.new @help_window.viewport = @viewport @status_window = Window_SkillStatus.new(0, 56, @actor) @status_window.viewport = @viewport @skill_window = Window_Skill.new(0, 112, 640, 368, @actor) @skill_window.viewport = @viewport @skill_window.help_window = @help_window @target_window = Window_MenuStatus.new(0, 0) hide_target_window end def show_target_window(right) @skill_window.active = false width_remain = 640 - @target_window.width @target_window.x = right ? width_remain : 0 @target_window.visible = true @target_window.active = true if right @viewport.rect.set(0, 0, width_remain, 480) @viewport.ox = 0 else @viewport.rect.set(@target_window.width, 0, width_remain, 480) @viewport.ox = @target_window.width end end def hide_target_window @skill_window.active = true @target_window.visible = false @target_window.active = false @viewport.rect.set(0, 0, 640, 480) @viewport.ox = 0 end end # □ Scene_Equip # class Scene_Equip < Scene_Base def create_item_windows @item_windows = [] for i in 0...EQUIP_TYPE_MAX @item_windows[i] = Window_EquipItem.new(0, 208, 640, 272, @actor, i) @item_windows[i].help_window = @help_window @item_windows[i].visible = (@equip_index == i) @item_windows[i].active = false @item_windows[i].index = -1 end end end # □ Scene_End # class Scene_End < Scene_Base def create_command_window s1 = Vocab::to_title s2 = Vocab::shutdown s3 = Vocab::cancel @command_window = Window_Command.new(172, [s1, s2, s3]) @command_window.x = (640 - @command_window.width) / 2 @command_window.y = (480 - @command_window.height) / 2 @command_window.openness = 0 end end # □ Scene_Shop # class Scene_Shop < Scene_Base def start super create_menu_background create_command_window @help_window = Window_Help.new @gold_window = Window_Gold.new(384+96, 56) @dummy_window = Window_Base.new(0, 112, 640, 368) @buy_window = Window_ShopBuy.new(0, 112) @buy_window.active = false @buy_window.visible = false @buy_window.help_window = @help_window @sell_window = Window_ShopSell.new(0, 112, 640, 368) @sell_window.active = false @sell_window.visible = false @sell_window.help_window = @help_window @number_window = Window_ShopNumber.new(0, 112) @number_window.active = false @number_window.visible = false @status_window = Window_ShopStatus.new(400, 112) @status_window.visible = false end end # □ Scene_Battle # class Scene_Battle < Scene_Base def create_info_viewport @info_viewport = Viewport.new(0, 288, 640, 128) @info_viewport.z = 100 @status_window = Window_BattleStatus.new @party_command_window = Window_PartyCommand.new @actor_command_window = Window_ActorCommand.new @status_window.viewport = @info_viewport @party_command_window.viewport = @info_viewport @actor_command_window.viewport = @info_viewport @status_window.x = 128 @actor_command_window.x = 640 @info_viewport.visible = false end def start_skill_selection @help_window = Window_Help.new @skill_window = Window_Skill.new(0, 56, 640, 232, @active_battler) @skill_window.help_window = @help_window @actor_command_window.active = false end def start_item_selection @help_window = Window_Help.new @item_window = Window_Item.new(0, 56, 640, 232) @item_window.help_window = @help_window @actor_command_window.active = false end def create_info_viewport @info_viewport = Viewport.new(0, 288+64, 640, 128) @info_viewport.z = 100 @status_window = Window_BattleStatus.new @party_command_window = Window_PartyCommand.new @actor_command_window = Window_ActorCommand.new @status_window.viewport = @info_viewport @party_command_window.viewport = @info_viewport @actor_command_window.viewport = @info_viewport @status_window.x = 128 @actor_command_window.x = 544 @info_viewport.visible = false end def start_skill_selection @help_window = Window_Help.new @skill_window = Window_Skill.new(0, 56, 640, 296, @active_battler) @skill_window.help_window = @help_window @actor_command_window.active = false end def start_item_selection @help_window = Window_Help.new @item_window = Window_Item.new(0, 56, 640, 296) @item_window.help_window = @help_window @actor_command_window.active = false end end
† Fondateur du forum † Age : 31Inscrit le : 09/02/2008Messages : 1974 Sujet: Re: [VX] Résolution 640x480 pixels. Ven 14 Mar 2008 - 16:18 Merci faby
Noble Lv.8 Age : 80Inscrit le : 24/04/2008Messages : 290 Sujet: Re: [VX] Résolution 640x480 pixels. Ven 25 Avr 2008 - 20:10 Ah c'est cool , mais, dommage que beaucoup de script VX sont imcompatible avec sa... J'ai pris un script de combat , sa bug , en + , j'ai mis que des maps inférieur à 20/15 xD
Mais merci comme même
dYeu retraité prématurément Age : 29Inscrit le : 09/02/2008Messages : 5357 Sujet: Re: [VX] Résolution 640x480 pixels. Ven 25 Avr 2008 - 21:03 Oui, le script "sert" plus à rien maintenant puisque Raito a ajuster le seul script qui avait besoin de celui-là pour fonctionner...
Donc, franchement c'est très facultatif
Invité Sujet: Re: [VX] Résolution 640x480 pixels. Sam 26 Avr 2008 - 7:09 Bah... moi j'utilise ce script juste pour avoir un écran plus grand
Et au pire, il y a certains script qui ne fonctionnent pas très bien avec, là suffit "juste" de le bidouiller un peu pour qu'il soit compatible :p
Mais quand même, je trouve ça assez moche de la part d'Enterbrain de nous réduire la résolution juste parce que les persos sont plus petits (enfin, je crois que c'est ça
)...
Sujet: Re: [VX] Résolution 640x480 pixels.
[VX] Résolution 640x480 pixels.
Sujets similaires
Permission de ce forum: Vous ne pouvez pas répondre aux sujets dans ce forum
Mesure d'audience ROI statistique webanalytics par