Partagez
Aller en bas
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 16:49
J'ai bien envie d'utiliser le Overlay script de Himura (trouvable ici => http://www.mediafire.com/?2dlor88mfdzbnbw) qui simplifie pas mal le travail en parallaxe. Le soucis, c'est que le GTBS (en attendant que le TBS de Blockade soit avancé) ignore allègrement le parallaxe.

Quelqu'un a une idée ? :/
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:17
Euh , quand tu dis parallaxe , tu veux parler de panorama , non ?
La notion de paralaxe n'existe pas dans rpgmaker .
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:20
J'ai tenté de bidouiller un truc mais comme c'est du bidouillage, ça fait soucis !

Voici le script de l'Overlay pour plus de commodité :
Spoiler:
Code:

#==============================================================================
#              U L T I M A T E    O V E R L A Y    M A P P I N G
#                          Script By: Hanzo Kimura
#                            Date Created: 08/11/10
#==============================================================================
module HK_UOM
 
#=================================== SET UP ===================================#
# SCREEN SETUP
  Width  = 544          # The Size of Resolution (Screen's Width)  544/640
  Height  = 416          # The Size of Resolution (Screen's Height) 416/480
# SWITCHES
  LightSwitch = 1        #Switch to Activate Light Overlays
  ShadowSwitch = 2        #Switch to Activate Shadow Overlays
  ParSwitch = 1          #Switch to Activate Parallax Overlays
  GroundSwitch = 1        #Switch to Activate Ground Overlays
# FILENAMES
  LightMap = "Light"      #The name of the file for Light Overlays
  ShadowMap = "Shadow"    #The name of the file for Shadow Overlays
  ParMap = "Par"          #The name of the file for Parallax Overlays
  GroundMap = "Ground"    #The name of the file for Ground Overlays

#================================ END OF SET UP ===============================#
end


# OVERLAY SCRIPT STARTS HERE #
module Cache
  def self.overlay(filename)
    load_bitmap("Overlays/", filename)
  end
end
class Spriteset_Map
  include HK_UOM
  alias hk_uom_initialize initialize
  def initialize
    @GroundON = FileTest.exist?("Overlays/" + "ground" + $game_map.map_id.to_s + ".png")
    hk_uom_initialize
    update
  end
  alias hk_uom_create_parallax create_parallax
  def create_parallax
    if @GroundON
      @ground = Sprite.new(@viewport1)
      @ground.z = 1
      @ground.bitmap = Cache.overlay("ground" + $game_map.map_id.to_s)
    end
    hk_uom_create_parallax
  end
  alias hk_uom_dispose_parallax dispose_parallax
  def dispose_parallax
    if @ground != nil
    @ground.dispose
  end
    hk_uom_dispose_parallax
 end
  alias hk_uom_update_parallax update_parallax
  def update_parallax
    if @ground != nil
        @ground.visible = $game_switches[GroundSwitch]
    end
    if @ground != nil
        @ground.tone = $game_map.screen.tone
        @viewport1.ox = $game_map.screen.shake  #update shake screen
        @viewport1.color = $game_map.screen.flash_color #update flash screen
        if @ground.ox != -$game_map.display_x / 256 or @ground.oy != -$game_map.display_y / 256 or @ground.ox == 0 or @ground.oy == 0
          @ground.ox = $game_map.display_x / 8
          @ground.oy = $game_map.display_y / 8
        end
      end
    hk_uom_update_parallax
    end
  end
 
#==============================================================================
# Scene Map
#==============================================================================
class Scene_Map < Scene_Base
  alias hk_uom_start start
  def start
    hk_uom_start
    $OverlayMap = Overlay_Map.new
  end
  def terminate
    super
    if $scene.is_a?(Scene_Battle)
      @spriteset.dispose_characters
    end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    $OverlayMap.dispose
    if $scene.is_a?(Scene_Battle)
      perform_battle_transition
    end
  end
  def update
    super
    $game_map.interpreter.update
    $game_map.update
    $game_player.update
    $game_system.update
    @spriteset.update
    @message_window.update
    $OverlayMap.update
    unless $game_message.visible
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
    @spriteset.dispose
    $game_player.perform_transfer
    $game_map.autoplay
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new
    $OverlayMap.dispose
    $OverlayMap = Overlay_Map.new
    fadein(30) if fade
    Input.update
  end
end
#==============================================================================
# Overlay
#==============================================================================
class Overlay_Map
include HK_UOM
  def initialize
    check_file
    display_overlay
  end
  def check_file
    @LightON = FileTest.exist?("Overlays/" + LightMap + $game_map.map_id.to_s + ".jpg")
    @ShadowON = FileTest.exist?("Overlays/" + ShadowMap + $game_map.map_id.to_s + ".jpg")
    @ParON = FileTest.exist?("Overlays/" + ParMap + $game_map.map_id.to_s + ".png")
    @GroundON = FileTest.exist?("Overlays/" + GroundMap + $game_map.map_id.to_s + ".png")
  end
 
  # Displaying Overlays SET UP #
  def display_overlay
    if @LightON
      @light_viewport = Viewport.new(0, 0, Width, Height)
      @light_viewport.z = 10
      @light = Sprite.new(@light_viewport)
      @light.bitmap = Cache.overlay(LightMap + $game_map.map_id.to_s)
      @light.z = 10
      @light.opacity = 115
      @light.blend_type = 1
      @light.visible = $game_switches[LightSwitch]
    end
    if @ShadowON
      @shadow_viewport = Viewport.new(0, 0, Width, Height)
      @shadow_viewport.z = 9
      @shadow = Sprite.new(@shadow_viewport)
      @shadow.bitmap = Cache.overlay(ShadowMap + $game_map.map_id.to_s)
      @shadow.z = 9
      @shadow.opacity = 85
      @shadow.blend_type = 2
      @shadow.visible = $game_switches[ShadowSwitch]
      end
    if @ParON
      @par_viewport = Viewport.new(0, 0, Width, Height)
      @par_viewport.z = 8
      @par = Sprite.new(@par_viewport)
      @par.z = 8
      @par.bitmap = Cache.overlay(ParMap + $game_map.map_id.to_s)
      @par.tone = $game_map.screen.tone
      @par.opacity = 255
      @par.blend_type = 0
      @par.visible = $game_switches[ParSwitch]
    end
    update
  end
 
  # Update Overlays SET UP #
  def update
      if @light != nil
        @light.visible = $game_switches[LightSwitch]
      end
      if @shadow != nil
        @shadow.visible = $game_switches[ShadowSwitch]
      end
      if @par != nil
        @par.visible = $game_switches[ParSwitch]
      end
      if @light != nil
        @light.tone = $game_map.screen.tone #update screentone
        @light_viewport.ox = $game_map.screen.shake #update shake screen
        @light_viewport.color = $game_map.screen.flash_color #update flash screen
        if @light.x != $game_map.display_x / 256 or @light.y != $game_map.display_y / 256 or @light.x == 0 or @light.y == 0
          @light.ox = $game_map.display_x / 8
          @light.oy = $game_map.display_y / 8
        end #./
      end #./
      if @shadow != nil
        @shadow.tone = $game_map.screen.tone #update screentone
        @shadow_viewport.ox = $game_map.screen.shake #update shake screen
        @shadow_viewport.color = $game_map.screen.flash_color #update flash screen
        if @shadow.x != $game_map.display_x / 256 or @shadow.y != $game_map.display_y / 256 or @shadow.x == 0 or @shadow.y == 0
          @shadow.ox = $game_map.display_x / 8
          @shadow.oy = $game_map.display_y / 8
        end #./
      end #./
      if @par != nil
        @par.tone = $game_map.screen.tone #update screentone
        @par_viewport.ox = $game_map.screen.shake  #update shake screen
        @par_viewport.color = $game_map.screen.flash_color #update flash screen
        if @par.ox != $game_map.display_x / 256 or @par.oy != $game_map.display_y / 256 or @par.ox == 0 or @par.oy == 0
          @par.ox = $game_map.display_x / 8
          @par.oy = $game_map.display_y / 8
        end #./
      end #./
  end #def end
  def dispose
      if @light != nil
        @light_viewport.dispose
        @light.dispose
      end
      if @shadow != nil
        @shadow_viewport.dispose
        @shadow.dispose
      end
      if @par != nil
        @par_viewport.dispose
        @par.dispose
      end
  end
end

Mon bidouillage consistait à copier ce qu'il y a dans Scene_map et à le coller dans un "class Scene_Battle_TBS" que je placerais en nouveau script. Ca semblait fonctionner, quand le combat commençait avec le GTBS, tout était en place, mais dès que le personnage était placé POUM ! Erreur :

NoMethodError occured.
super : no superclass method "update"



[Edit] Dricc, je veux dire heuuu mapper avec un fond en image et une image pour le dessus.. mmh heu comme fait Celianna ici => https://www.youtube.com/watch?v=dar-lhINt18
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:26
J'ai trouvé ... oui , c'est une façon de faire totalement en dehors des clous . Pas surprenant que le GTBS soit incompatible .

Ton idée est bonne mais il faut aussi reporter aussi de spriteset_map à Spriteset_Battle_GTBS .
J'ai rendu un script de brouillard compatible avec le GTBS comme ça assez facilement .
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:33
Il me fait quand même la même erreur. Je suis pas fort du tout en script et en décryptage d'erreurs donc. Il me semble qu'il trouve pas ce à quoi fait appel "super" c'est ça ? Mais je sais pas comment faire.
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:40
Curieux , tu as la ligne en question ?

"super" , c'est une histoire d'héritage de classe .

Par exemple scene_map est déclaré comme ça:
class Scene_Map < Scene_Base

un peu plus bas , je vois :
def update
super

et le "super" veux dire : applique la methode du meme nom ("update", quoi) dans la classe parente (donc Scene_Base)

EDIT : oh , attends , j'ai trouvé je crois .

le scene_map du GTBS est comme ça :
class Scene_Map
alias gtbs_call_battle call_battle
def call_battle
if !GTBS::VX
$game_system.bgm_memorize
$game_system.bgs_memorize
end
gtbs_call_battle
if $game_system.tbs_enabled
$scene = Scene_Battle_TBS.new
end
end
end

il manque le "< Scene_Base" à la déclaration de la classe
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:49
J'avais oublié de le lier via < Sprite_Base. De ce côté, il ne m'embête plus. Par coooontre...

(Pour que ça soit clair, voici le script que j'ai ajouté en bidouillant, il se trouve en dessous de l"Overlay et du GTBS = >
Spoiler:
Code:
class Scene_Battle_TBS < Scene_Base
    alias hk_uom_start start
  def start
    hk_uom_start
    $OverlayMap = Overlay_Map.new
  end
  def terminate
  super
    if $scene.is_a?(Scene_Battle)
      @spriteset.dispose_characters
    end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    $OverlayMap.dispose
    if $scene.is_a?(Scene_Battle)
      perform_battle_transition
    end
  end
  def update
    super
    $game_map.interpreter.update
    $game_map.update
    $game_player.update
    $game_system.update
    @spriteset.update
    @message_window.update
    $OverlayMap.update
    unless $game_message.visible
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
    @spriteset.dispose
    $game_player.perform_transfer
    $game_map.autoplay
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new
    $OverlayMap.dispose
    $OverlayMap = Overlay_Map.new
    fadein(30) if fade
    Input.update
  end
end

class Spriteset_Battle_GTBS
    include HK_UOM
  alias hk_uom_initialize initialize
  def initialize
    @GroundON = FileTest.exist?("Overlays/" + "ground" + $game_map.map_id.to_s + ".png")
    hk_uom_initialize
    update
  end
  alias hk_uom_create_parallax create_parallax
  def create_parallax
    if @GroundON
      @ground = Sprite.new(@viewport1)
      @ground.z = 1
      @ground.bitmap = Cache.overlay("ground" + $game_map.map_id.to_s)
    end
    hk_uom_create_parallax
  end
  alias hk_uom_dispose_parallax dispose_parallax
  def dispose_parallax
    if @ground != nil
    @ground.dispose
  end
    hk_uom_dispose_parallax
 end
  alias hk_uom_update_parallax update_parallax
  def update_parallax
    if @ground != nil
        @ground.visible = $game_switches[GroundSwitch]
    end
    if @ground != nil
        @ground.tone = $game_map.screen.tone
        @viewport1.ox = $game_map.screen.shake  #update shake screen
        @viewport1.color = $game_map.screen.flash_color #update flash screen
        if @ground.ox != -$game_map.display_x / 256 or @ground.oy != -$game_map.display_y / 256 or @ground.ox == 0 or @ground.oy == 0
          @ground.ox = $game_map.display_x / 8
          @ground.oy = $game_map.display_y / 8
        end
      end
    hk_uom_update_parallax
    end
  end

Maintenant il me dit :

undefined method 'update" for nil:NiCclass

Il pointe la ligne de mon bidouillage, dans la classe Scene_Battle_TBS :

def update
super
$game_map.interpreter.update
$game_map.update
$game_player.update
$game_system.update
@spriteset.update
@message_window.update
$OverlayMap.update
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 17:58
Ah , je vois .

modifie ça :

def start
hk_uom_start
$OverlayMap = Overlay_Map.new
end

comme ça :

def start
hk_uom_start
$game_map.refresh
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
$OverlayMap = Overlay_Map.new
end
(c'est repris depuis le Scene_Map standard , je suis pas sur pour le @message_window)
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Re: Compatibilité GTBS et Parallax ?

le Jeu 17 Nov 2011 - 18:28
Ca ne marche pas non plus :/

J'ai uploadé le projet pour que tu puisses voir, pas évident à expliquer pour un néophyte.

J'ai utilisé comme base le projet communautaire car tu avais déjà séparé chaque partie ou presque du GTBS.

http://www.mediafire.com/?545uymj4ofjs4pb

Le script bidouillé est le tout dernier.
avatar
dricc
Membre

Nombre de messages : 2756
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: Compatibilité GTBS et Parallax ?

le Ven 18 Nov 2011 - 10:47
Je regarde ...

Pas si terrible que ça en passant le script d'overlay : il supporte pas bien les personnages de 2 cases de hauteur , tu as remarqué ? le visage de ralph passe derriere les troncs d'arbre .
avatar
Yasan
Membre

Nombre de messages : 149
Age : 33
Distinction : aucune
Date d'inscription : 18/01/2011

Re: Compatibilité GTBS et Parallax ?

le Ven 18 Nov 2011 - 10:54
C'est parce que j'ai importé la map et le script directement et qu'à mon avis les configurations de passage ne sont pas transférées. J'ai déjà fait du mapping de ce type et ça marche bien, il faut bien paramétrer la chose.

En tout cas, sur la démo avec la même map de l'auteur, il n'y a pas ce soucis il me semble bien ! Very Happy
avatar
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 26
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' Smile]
Date d'inscription : 13/05/2009

Re: Compatibilité GTBS et Parallax ?

le Dim 15 Juil 2012 - 20:18
Inactif, donc locké et déplacé.

Pour une réouverture, envoyer un message dans la boîte aux lettres.
Contenu sponsorisé

Re: Compatibilité GTBS et Parallax ?

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum