Partagez
Aller en bas
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[RGSS3] Système de zoom des characters Empty [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 2:37
Ce script est une adaptation de celui pour VX. Il permet de faire des zoom sur les events, le joueur et les véhicules ainsi que les followers (la chenille).
Le code à été amélioré et épuré et une nouvelle fonction a été ajouté.
Dorénavant pour actualiser les sprites faites un appel de script via event et rentrez ceci:
Code:
SceneManager.scene.update_spriteset

Les autres détails sont fournis dans les commentaires.

Le script:

Spoiler:

Code:

#==============================================================================
# ** Zoom System fait par Skillo
#==============================================================================

# Pour  definir un ZOOM sur un events il suffit de mettre ZOOM dans un commentaire
# ensuite vous pouvez definir le zoom appliqué sur x en mettant la valeur dans un
# commentaire en juste en dessous de celui du ZOOM. Si aucun zoom sur x n'est défini sa valeur
# sera celle definie ci-dessous.
# Pour définir le zoom appliqué sur y en mettre la valeur dans un
# commentaire juste en dessous de celui du zoom sur x. Si aucun zoom sur y n'est défini sa valeur
# sera celle definie ci-dessous.

module ZOOM
  # Si il y a ici des interrupteur qui ne vous interressent pas mettez les à 0
 
  # ici sera défini l'interrupteur désactivant le zoom
  # IDSWITCHES = id de l'interrupteur
  IDSWITCH = 1
 
  # ici sera défini l'interrupteur désactivant le zoom sur l'equipe.
  # HEROSWITCHES = id de l'interrupteur
  HEROSSWITCH = 2
 
  # ici sera défini l'interrupteur désactivant le zoom sur les autres events que l'equipe
  # EVENTSWITCHES = id de l'interrupteur
  EVENTSWITCH = 3
 
  # ici sera défini l'interrupteur désactivant le zoom definie dans les commentaires d'un event
  # EVENTCOMMENTSWITCHES = id de l'interrupteur
  EVENTCOMMENTSWITCH = 4
 
  # ci sera défini l'interrupteur désactivant le zoom sur les vehicules
  # INCLUDEVEHICULES = id de l'interrupteur
  VEHICULESWITCH = 5
 
  # ici sera defini si les paremètres de zoom dans les commentaires des events sont prioritaires par rapport
  # à ceux de la map
  # COMMENTSPRIORITY = true/false
  COMMENTSPRIORITY = true
 
  # ici sera défini si le zoom sur x par default si ZOOM est definie dans les commentaires d'un event
  # ZOOM_DEFAUT_EVENT_X = coeff (1 par default)
  ZOOM_DEFAUT_EVENT_X = 1
 
  # ici sera défini si le zoom sur y par default si ZOOM est definie dans les commentaires d'un event
  # ZOOM_DEFAUT_EVENT_Y = coeff (1 par default)
  ZOOM_DEFAUT_EVENT_Y = 1
 
  # ici sera défini les maps affectées par le zoom ainsi que le coefficient associé ou le couple [coeff x, coeff y]
  # ZOOMMAP =
  # {
  #    id de la map => coeff,
  #    id de la map => [coeff x, coeff y]
  # }
  # Avec 1 le coefficient de zoom par defaut.
  # Par exemple:
  # si on a  6 => 0.5 :
  # sur la map 6 le/les hero/events seront deux fois plus petit.
  # si on a  7 => [0.5, 2] :
  # sur la map 7 le/les hero/events seront deux fois moins gros mais deux fois plus grands.
  ZOOMMAP =
  {
        1 => 0.75,
        2 => 0.90
  }

end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This sprite is used to display characters. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Spriteset_Map
  
  include ZOOM

  #--------------------------------------------------------------------------
  # * Update Character Sprite
  #--------------------------------------------------------------------------
  def update_characters
    for sprite in @character_sprites
      sprite.zoom_x = sprite.zoom_y = 1
      @zoom_x=@zoom_y=1
      if $game_switches[IDSWITCH]
        sprite.update
        next
      end
      case sprite.character
      when Game_Vehicle
        if $game_switches[VEHICULESWITCH]
          sprite.update
          next
        end
        zoom_map
      when Game_Event
        if $game_switches[EVENTSWITCH]
          sprite.update
          next
        end
        if COMMENTSPRIORITY and !$game_switches[EVENTCOMMENTSWITCH]
          zoom_map
          zoom_event(sprite.character)
        elsif !COMMENTSPRIORITY and !ZOOMMAP.keys.include?($game_map.map_id) and !$game_switches[EVENTCOMMENTSWITCH]
          zoom_event(sprite.character)
        else
          zoom_map
        end
      when Game_Player, Game_Follower
        if $game_switches[HEROSSWITCH]
          sprite.update
          next
        end
        zoom_map
      end
      sprite.zoom_x = @zoom_x
      sprite.zoom_y = @zoom_y
      sprite.update
    end
  end
  #--------------------------------------------------------------------------
  # * Zoom_Map
  #--------------------------------------------------------------------------
  def zoom_map
    if !ZOOMMAP.keys.include?($game_map.map_id)
      @zoom_x = @zoom_y = 1
    elsif ZOOMMAP[$game_map.map_id].is_a?(Array)
      @zoom_x = ZOOMMAP[$game_map.map_id][0]
      @zoom_y = ZOOMMAP[$game_map.map_id][1]
    else
      @zoom_x = @zoom_y = ZOOMMAP[$game_map.map_id]
    end  
  end
  #--------------------------------------------------------------------------
  # * Zoom_Event
  #--------------------------------------------------------------------------
  def zoom_event(event)
    for i in 0...event.list.size
      if event.list[i].code == 108 and event.list[i].parameters.include?("ZOOM")
        if event.list[i+1] != nil and event.list[i+1].code == 108
          @zoom_x = event.list[i+1].parameters[0].to_f
        else
          @zoom_x = ZOOM_DEFAUT_EVENT_X
        end
        if event.list[i+2] != nil and event.list[i+2].code == 108
          @zoom_y = event.list[i+2].parameters[0].to_f
        else
          @zoom_y = ZOOM_DEFAUT_EVENT_Y
        end
      end
    end
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  マップ画面の処理を行うクラスです。
#==============================================================================

class Scene_Map < Scene_Base
  
  #--------------------------------------------------------------------------
  # * Update_Spriteset
  #--------------------------------------------------------------------------
  def update_spriteset
    @spriteset.update
  end
end

Et quelques screen pour vous donnez une idée du rendu (il est meilleur ig):

[RGSS3] Système de zoom des characters Capture-3042c91
[RGSS3] Système de zoom des characters Capture2-3042c94
[RGSS3] Système de zoom des characters Capture3-3042c9a
[RGSS3] Système de zoom des characters Capture4-3042c9e

Voilà laissez vos coms, vos remarques et vos idées.

+5 pts de participation


UltimaSasuke
UltimaSasuke
Membre

Nombre de messages : 88
Age : 24
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 13:46
Très bon script, il est possible d'ajouter un Add-on au script pour rajouter comme sort (FF oblige) un sort comme mini, qui permet si utiliser sur la MapMonde (exemple) de rendre nos personnages mini et d'activer un interrupteur quand le sort est lancé, quand il est désactivé l'interrupteur est sur off et le personnage et chenille revienne normal ( je sais que tu a dû y penser).

En tout cas tu fait dde très bon scripts continue =D
Ezekiel Koening
Ezekiel Koening
Membre

Nombre de messages : 413
Age : 21
Localisation : Nantes
Distinction : aucune
Date d'inscription : 17/12/2011

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 15:00
Sympas même si je vois pas tellement l'utilitée à vrai dire :/ !
dricc
dricc
Membre

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

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 15:20
Comme ultimasauke l'a dit , ça peux etre utilisé à des fins scénaristiques . surtout pour la reduction de taille d'ailleurs . ça pixelise trop en augmentation de taille et on sait tous les problemes que posent les persos de plus d'une case de largeur .
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 18:37
c'est surtout pour rajouter des effets genre comme la première image qui est une map monde ça donne un plus. ou si jamais vous voulez par exemple comme dans minish cap que votre héros devienne tout petit, maintenant vous pouvez, et même pour varier les corpulences par exemple le zoom à 0.90, 0.95, 1.10 change très peu mais ça donne un petit effet.

Et ultimate c'est simple il suffit que ton sort active l'interrupteur HEROSSWITCH défini dans le Module ZOOM du script. Il est entièrement personnalisable, on peut désactiver et réactiver tous les zooms.
UltimaSasuke
UltimaSasuke
Membre

Nombre de messages : 88
Age : 24
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 19:16
Justement je crois que l'on ne peut pas activer un interrupteur en lançant une attaque sur le menu... =(
Yoshi-Dragon
Yoshi-Dragon
Membre

Nombre de messages : 752
Age : 23
Localisation : J'ai peur.
Distinction : aucune
Date d'inscription : 19/06/2009
http://smashbrosbrawl.e-monsite.com

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Mer 4 Jan 2012 - 19:54
Peut on faire des condition avec ?
Ex, si Hero = Zoom 0.1 alors il peut passez dans la porte ?
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 0:02
Nop yoshi mais c pas bête je vais réfléchir à une manière de faire ça, sinon il faudrait que j'inverse les interrupteur pour l'instant c'est si l'interrupteur est sur off ça fait le zoom sur on ça le désactive en faisant l'inverse ça oblige à l'activer au début mais du coup tu pourra faire des test sur les inteerupteur pour savoir si t'as le zoom ou pas.

Et Ulti t'as les event communts ^^, dans ace ils ont bougé ils sont dans la dernière page des effets mais tu peux passer par un event commun pour activer l'interrupteur et du coup passer par un autre pour le désactiver.
UltimaSasuke
UltimaSasuke
Membre

Nombre de messages : 88
Age : 24
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 6:45
J'vais voir ça merci, pas pensais sur le coup pour les év' commun.
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 25
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [RGSS3] Système de zoom des characters 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 19:09
Bah, si au lieu d'un chiffre on met une variable, ça fonctionne très bien aussi (enfin, i suppose), il suffit juste de mettre la condition sur la variable qui gère le zoom et pi bwala Smile
J'avoue que perso', je vois ça bien plus dans un jeu en "3D" (d'ailleurs maintenant que j'y pense, ça peut-être cool de faire un jeu en "3D" Smile ) que dans une cinématique ^^
dricc
dricc
Membre

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

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 19:15
Mais ouiii , Xakux , ça devrait marcher .

skillo nous a mis un tableau :
ZOOMMAP =
{
1 => 0.75,
2 => 0.90
}
du coup ça , ça devrait marcher :
ZOOMMAP =
{
1 => $game_variables[1]
}
A tester ...
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 19:43
pas besoin de test c'est sur ça marche le seul hic c'est le rafraichissement ^^ faut pas oublier de faire SceneManager.scene.update_spriteset après avoir changer la variable c'est tout.
XakuX
XakuX
Membre

Nombre de messages : 1263
Age : 25
Localisation : là où tu n'auras jamais l'idée de chercher !
Distinction : * Bougre d'âne


Le bizu' à son Coco' [RGSS3] Système de zoom des characters 344805
[Coco' Smile]

Membre aux désirs inassouvis de domination mondiale. [Maître du destin]
Date d'inscription : 13/12/2008

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 21:50
Je savais qu'il y aurait une histoire d'update là-dedans x)
Juste question pour savoir (je sais pas si ça me serait vraiment utile) mais on pourrait updater à chaque frame (dans un évent en processus parallèle), sans avoir de bug graphique, ni trop de ralentissement ? :/
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 29
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

[RGSS3] Système de zoom des characters Empty Re: [RGSS3] Système de zoom des characters

le Jeu 5 Jan 2012 - 23:25
Dricc: ta solution peut ne pas fonctionner. L'objet $game_variables que tu invoque dans ton hash n'est pas initialisé, car il se trouve dans un module. Celui-ci est chargé au lancement de ruby, donc avant le chargement des données de jeu ($game_*).
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum