| [RMXP]Défiler ou non le panorama | |
|
Auteur | Message |
---|
Cantarelle Ancien staffeux
Messages postés : 353 Date d'inscription : 26/10/2012 Jauge LPC :
| Sujet: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 12:25 | |
| Bonjour ou bonsoir. AVANT TOUTE CHOSE : CE SCRIPT N'EST QUE POUR RMXP. CE N'EST PAS LA PEINE DE ME DEMANDER POUR VX OU ACE, JE NE LE FERAI PAS!Lors de la conception d'une map, j'ai remarqué que le panorama n'arrêtait pas de suivre le héros, peu importait la taille de celui-ci. Pire, même si le panorama était à la même taille que la map, celui-ci suivait quand même le héros! Perso, j'ai résolu le problème. Alors, ça vous dit d'avoir le défilement ou non du panorama ? Surtout que ce script n'a aucune interférence avec les scripts que vous pourrez créer (à moins si vous codez comme des pieds) ou même ceux de base. Pour ça, changez dans Spriteset_map ces lignes : - Code:
-
@panorama.ox = $game_map.display_x / 8 @panorama.oy = $game_map.display_y / 8
Avec celles-ci : - Code:
-
if @panorama_name =~ /_d$/ @panorama.ox = $game_map.display_x / 8 @panorama.oy = $game_map.display_y / 8 else @panorama.ox = $game_map.display_x / 4 @panorama.oy = $game_map.display_y / 4 end
Comment s'utilise ce script ? Ce script s'active selon le nom de votre panorama. Si le nom de celui-ci se termine par _d, celui-ci sera défilant. Sinon, il ne suivra pas le héros. Par exemple, admettons qu'il y a deux panoramas. Un se nomme crepuscule L'autre se nomme crepuscule_d Le deuxième défilera mais pas le premier. |
|
| |
Invité Invité
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 12:36 | |
| - Citation :
- (à moins si vous codez comme des pieds)
Tu serais surprise ^^' Un script bien pratique mais je trouve ça un peu dommage que tu ne prennes pas l'habitude de monkeypatcher les classes/modules que tu modifies, c'est un peu mieux pour la maintenance et la suppression de script ? (Après je suis d'accord sur la non raisonnabilité du monkeypatching mais bon...) |
|
| |
Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 12:39 | |
| Ça faisait longtemps que je cherchai quelque chose du genre, merci. Some points added. |
|
| |
Cantarelle Ancien staffeux
Messages postés : 353 Date d'inscription : 26/10/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 18:12 | |
| Grim : habituellement, je surcharge les classes. Mais cette fois, c'était complètement inutile, car tu as tout de même la même base dans les deux cas. Je n'ai fais que mettre une condition La surcharge des classes est pratique lorsque tu ajoutes des méthodes, pas quand tu fais une petite modification comme là. |
|
| |
Invité Invité
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 20:00 | |
| Mais dans le cas où le maker veut enlever ton script? |
|
| |
Cantarelle Ancien staffeux
Messages postés : 353 Date d'inscription : 26/10/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 20:33 | |
| Pas besoin, il n'a qu'à mettre _d à la fin de son panorama pour avoir l'ancien panorama défilant. |
|
| |
Invité Invité
| Sujet: Re: [RMXP]Défiler ou non le panorama Sam 3 Nov 2012 - 22:13 | |
| |
|
| |
Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Mer 7 Nov 2012 - 12:26 | |
| Tu peux le faire sur VX ? :troll:
Bref petit code astucieux ^^ Merci. |
|
| |
Cantarelle Ancien staffeux
Messages postés : 353 Date d'inscription : 26/10/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 13:28 | |
| - Citation :
- Tu peux le faire sur VX ?
Inutile, il existe déjà. A moins que je confonde avec celui de Ace, mais non, je n'ai pas que ça à faire (et aussi parce que j'ai pas envie de télécharger VX (j'ai déjà le ace)). |
|
| |
Elekami Fondateur
Messages postés : 19071 Date d'inscription : 19/07/2008 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 13:34 | |
| Non mais en fait c'était juste du troll en référence à ta phrase de mise en garde, il utilise XP lui de toute façon. xD |
|
| |
Invité Invité
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 15:34 | |
| C'est nul de tester une expression régulière toutes les frames. |
|
| |
Invité Invité
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 16:00 | |
| Ce ne serait pas mieux de stocker le cas ou le panorama défile dans un attribut ? Et simplement tester l'attribut? Par soucis de performance... comme à priori, le style de défilement du panorama ne varie pas (parce que défini dans le nom du fichier) donc il suffirait de le modifier dans le setup de la carte ? |
|
| |
tonyryu Paysan (niveau 4)
Messages postés : 39 Date d'inscription : 14/09/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 16:49 | |
| Outre le fait de l'expression régulière à chaque frame sur le nom du panorama, si l'on veut utiliser le même panorama avec défilement sur une autre map, il faut 2 fichiers du même panorama avec 2 noms différents. Il serait bon d'optimiser tout ça, zou torché en 10 min : suffit d'ajouter \P[xxx] dans le nom de la map, xxx correspond au ratio de défilement, si 0, n'est pas pris en compte, exemple pour avoir la même fonctionnalité que précédent : \P[4] - Code:
-
class Game_Map attr_reader :panorama_move alias panorama_initialize initialize def initialize panorama_initialize @panorama_move = 8 end alias panorama_setup setup def setup(map_id) panorama_setup(map_id) @panorama_move = 8 map_info = load_data("Data/MapInfos.rxdata") map_name = map_info[map_id].name
map_name.gsub!(/\\P\[(.*)\]/) { @panorama_move = $1.to_i if $1 != 0}
end end
class Spriteset_Map #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # If panorama is different from current one if @panorama_name != $game_map.panorama_name or @panorama_hue != $game_map.panorama_hue @panorama_name = $game_map.panorama_name @panorama_hue = $game_map.panorama_hue if @panorama.bitmap != nil @panorama.bitmap.dispose @panorama.bitmap = nil end if @panorama_name != "" @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue) end Graphics.frame_reset end # If fog is different than current fog if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue @fog_name = $game_map.fog_name @fog_hue = $game_map.fog_hue if @fog.bitmap != nil @fog.bitmap.dispose @fog.bitmap = nil end if @fog_name != "" @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue) end Graphics.frame_reset end # Update tilemap @tilemap.ox = $game_map.display_x / 4 @tilemap.oy = $game_map.display_y / 4 @tilemap.update # Update panorama plane update_panorama # Update fog plane @fog.zoom_x = $game_map.fog_zoom / 100.0 @fog.zoom_y = $game_map.fog_zoom / 100.0 @fog.opacity = $game_map.fog_opacity @fog.blend_type = $game_map.fog_blend_type @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy @fog.tone = $game_map.fog_tone # Update character sprites for sprite in @character_sprites sprite.update end # Update weather graphic @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.ox = $game_map.display_x / 4 @weather.oy = $game_map.display_y / 4 @weather.update # Update picture sprites for sprite in @picture_sprites sprite.update end # Update timer sprite @timer_sprite.update # Set screen color tone and shake position @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake # Set screen flash color @viewport3.color = $game_screen.flash_color # Update viewports @viewport1.update @viewport3.update end def update_panorama @panorama.ox = $game_map.display_x / $game_map.panorama_move @panorama.oy = $game_map.display_y / $game_map.panorama_move end end
Avantages : - Installation : Copié/collé dans un nouveau script au dessus de main - Désinstallation : suppression du script - Paramétrable - Aucun renommage ou duplication de fichier à faire |
|
| |
Leicsirg Ninja (niveau 1)
Messages postés : 156 Date d'inscription : 10/06/2012 Jauge LPC :
| Sujet: Re: [RMXP]Défiler ou non le panorama Jeu 8 Nov 2012 - 17:15 | |
| ça marche, mais mon problème étant de faire bouger le pano j'ai essayer de faire un truc, et ça a marché donc si vous voulez faire bouger le pano, il vous suffira de remplacer: - Code:
-
if @panorama_name =~ /_d$/ @panorama.ox = $game_map.display_x / 8 @panorama.oy = $game_map.display_y / 8 else @panorama.ox = $game_map.display_x / 4 @panorama.oy = $game_map.display_y / 4 end par ça - Code:
-
if @panorama_name =~ /_d$/ @panorama.ox = @panorama.ox + 1 @panorama.oy = @panorama.oy + 1 else @panorama.ox = $game_map.display_x / 4 @panorama.oy = $game_map.display_y / 4 end bon c'est simple mais ça peut aider et rendre le script plus utile ^^ |
|
| |
Contenu sponsorisé
| Sujet: Re: [RMXP]Défiler ou non le panorama | |
| |
|
| |
|