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

[Script] System de Zooms Multiples Empty [Script] System de Zooms Multiples

le Mer 19 Mai 2010 - 3:06
Bonjours je poste ici un petit script que j'ai fait pour mon projet il y a un petit moment.

Edit: Arrivée de la version 2.0

Ce script vous permette de définir des map sur lesquelles le hero ou tous les events seront sous l'effet d'un zoom.
Ce zoom étant défini pour en même temps que chaque map. Vous permettant ainsi de faire par exemple une map sur laquelle le hero sera 2 fois plus petit et une autre ou il sera 3 fois plus grand.

Ajouts de la v2:
_Possibilité de configurer le zoom d'un event à l'aide de ses commentaire
_Clarification du script (merki Berka)
_Ajout d'un interrupteur permettant de désactiver le zoom de la map sur les events
_Ajout d'un interrupteur permettant de désactiver le zoom configuré à l'aide de commentaires dans tous les events
_Ajout d'un interrupteur permettant de définir la priorité entre la map et les commentaires.
_Désormais le zoom d'une map peut être définie à l'ai d'une seul valeur ou alors d'un couple de deux valeurs.


Zoom_System à placer au dessus de main:
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
  IDSWITCHES = 1
 
  # ici sera défini l'interrupteur désactivant le zoom sur l'equipe.
  # HEROSWITCHES = id de l'interrupteur
  HEROSWITCHES = 2
 
  # ici sera défini l'interrupteur désactivant le zoom sur les autres events que l'equipe
  # EVENTSWITCHES = id de l'interrupteur
  EVENTSWITCHES = 3
 
  # ici sera défini l'interrupteur désactivant le zoom definie dans les commentaires d'un event
  # EVENTCOMMENTSWITCHES = id de l'interrupteur
  EVENTCOMMENTSWITCHES = 4
 
  # ici sera défini si le zoom affectera les vehicules
  # INCLUDEVEHICULES = true/false
  INCLUDEVEHICULES = false
 
  # 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 = 0.75
 
  # 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 = 0.75
 
  # 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.5, 2]
  }

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

  #--------------------------------------------------------------------------
  # * Update Character Sprite
  #--------------------------------------------------------------------------
  def update_characters
    for sprite in @character_sprites
      sprite.zoom_x = sprite.zoom_y = 1
      sprite.update
      @zoom = false
      if sprite.character.is_a?(Game_Event)
        setup_zoom(sprite, sprite.character)  if !$game_switches[ZOOM::EVENTCOMMENTSWITCHES]
      end
      next if $game_switches[ZOOM::IDSWITCHES] or !ZOOM::ZOOMMAP.keys.include?($game_map.map_id)
      next if ZOOM::COMMENTSPRIORITY and @zoom
      case sprite.character
        when Game_Event
          next if $game_switches[ZOOM::EVENTSWITCHES]
        when Game_Vehicle
          next if !ZOOM::INCLUDEVEHICULES
        when Game_Player
          next if $game_switches[ZOOM::HEROSWITCHES]
      end 
      if ZOOM::ZOOMMAP[$game_map.map_id].is_a?(Array)
        zoom_x = ZOOM::ZOOMMAP[$game_map.map_id][0]
        zoom_y = ZOOM::ZOOMMAP[$game_map.map_id][1]
      else
        zoom_x = zoom_y = ZOOM::ZOOMMAP[$game_map.map_id]
      end     
      sprite.zoom_x = zoom_x
      sprite.zoom_y = zoom_y
      sprite.update
    end
  end
  #--------------------------------------------------------------------------
  # * Setup Zoom
  #--------------------------------------------------------------------------
  def setup_zoom(sprite, event)
    next if event.list == nil
    for i in 0...event.list.size
      if event.list[i].code == 108 and event.list[i].parameters.include?("ZOOM")
        @zoom = true
        if event.list[i+1] != nil and event.list[i+1].code == 108
          sprite.zoom_x = event.list[i+1].parameters[0].to_f
        else
          sprite.zoom_x = ZOOM::ZOOM_DEFAUT_EVENT_X
        end
        if event.list[i+2] != nil and event.list[i+2].code == 108
          sprite.zoom_y = event.list[i+2].parameters[0].to_f
        else
          sprite.zoom_y = ZOOM::ZOOM_DEFAUT_EVENT_Y
        end
        sprite.update
      end
    end
  end
end

Quelques screens:
Spoiler:

[Script] System de Zooms Multiples Capturece
[Script] System de Zooms Multiples Captureydl

Démo:
http://www.mediafire.com/?mhlxnq5gutt


Voilà laisser vos comms


Dernière édition par Skillo le Jeu 20 Mai 2010 - 1:50, édité 1 fois
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

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mer 19 Mai 2010 - 11:34
Pratique. Mais je trouve que :
Code:
sprite.zoom_x = sprite.zoom_y = 1
sprite.update
se répete un peu trop souvent
Ce que tu peux faire c'est mettre des return à la place de tes conditions. Ca gagnera en rapidité et en clareté.


Code:
def  update_characters
sprite.zoom_x = sprite.zoom_y = 1
sprite.update
return if !ZOOM::ZOOMMAP.keys.include?($game_map.map_id)
case sprite.character
when Game_Player
when Game_Vehicle
return if !ZOOM::INCLUDEVEHICULES
end
sprite.zoom_x = sprite.zoom_y = ZOOM::ZOOMMAP[$game_map.map_id]
sprite.update
end
Je ne sais pas si ca fonctionne mais l'idée est là
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

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mer 19 Mai 2010 - 13:34
Je vais test ça c'est vrai que c'est beaucoup plus light.
Edit: en fait ça marche pas. ça réactualise pas les sprite du coup on vois plus le perso bouger les sprites sont fixes.
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

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mer 19 Mai 2010 - 17:54
Oui, ce que je t'ai donné c'était des bases. Voila un truc plus approfondi, je ne sais pas si ca fonctionne. Pas testé:

Code:
#==============================================================================
# ** Zoom By Map fait par Skillo
#==============================================================================
module ZOOM
 
  # ici sera défini l'interrupteur désactivant le zoom
  # IDSWITCHES = id de l'interrupteur
  IDSWITCHES = 1
 
  # ici sera défini l'interrupteur activant le zoom sur les autres event sque le hero
  # HEROSWITCHES = id de l'interrupteur
  HEROSWITCHES = 2
 
  # ici sera défini si le zoom affectera les vehicules
  # INCLUDEVEHICULES = true/false
  INCLUDEVEHICULES = false
 
  # ici sera défini les maps affectées par le zoom ainsi que le coefficient associé
  # ZOOMMAP =
  # {
  #    id de la map => coeff,
  #    id de la map => coeff
  # }
  # 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.
  ZOOMMAP =
  {
        1 => 0.5,
        2 => 3,
        7 => 96
  }

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

  #--------------------------------------------------------------------------
  # * Update Character Sprite
  #--------------------------------------------------------------------------
  def update_characters
    for sprite in @character_sprites
       sprite.zoom_x = sprite.zoom_y = 1
        sprite.update
       next if $game_switches[ZOOM::IDSWITCHES] or !ZOOM::ZOOMMAP.keys.include?($game_map.map_id)
       zoom = ZOOM::ZOOMMAP[$game_map.map_id]
       case sprite.character
       when Game_Player
          next if $game_switches[ZOOM::HEROSWITCHES]
       when Game_Vehicle
           next if !ZOOM::INCLUDEVEHICULES
       end   
       sprite.zoom_x = sprite.zoom_y = zoom
        sprite.update
    end
  end
end
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

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Jeu 20 Mai 2010 - 1:51
Merci Berka ça m'a été super utile!!


Version 2.0 disponible dans le premier post.
Coco'
Coco'
Staffeux retraité

Nombre de messages : 6577
Age : 26
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance

[Script] System de Zooms Multiples Magikarpe Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux

N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
https://www.rpgmakervx-fr.com

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Sam 22 Mai 2010 - 16:44
Déplacé dans la zone VIP // Divers x)
Ertilo
Ertilo
Membre

Nombre de messages : 28
Distinction : aucune
Date d'inscription : 03/05/2010

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mar 25 Mai 2010 - 8:38
C'est un joli script merci du partage :p

Mais il semblerait que lorsque dans la démo on remet sont personnage à taille normale il ne soit plus possible de parler aux autres PNJ ... es-ce juste la démo ou bien le script ?
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

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mar 25 Mai 2010 - 12:42
C'est dans la demo j'ai fais exprès pour pas avoir à gérer tous les cas de figures mais bien entendu on peut faire tout ce qu'on veut.
Ertilo
Ertilo
Membre

Nombre de messages : 28
Distinction : aucune
Date d'inscription : 03/05/2010

[Script] System de Zooms Multiples Empty Re: [Script] System de Zooms Multiples

le Mar 25 Mai 2010 - 15:40
D'accord autant pour moi alors ^^

(désolé pour le flood x.x')
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum