Luck > Administrateur
Nombre de messages : 507 Age : 31 Localisation : 35 Avez vous RPGMXP ? : Oui Quels sont vos projets ? : Nightmares of Apocalypsia - Mario Kart XP Date d'inscription : 17/11/2006
Fiche Créateur Points de Créativité: (50/50) Commentaires:
| Sujet: Bandes noires Mar 10 Juil - 3:55 | |
| Et voilà un petit script pour afficher des bandes noires. L'auteur est Selwyn.
Voici un petit screen : - Code:
-
#============================================================================== # ¡ö WScreen #------------------------------------------------------------------------------ # ¡¡By Selwyn, Widescreen effect script # released the 1st of February # # This script allows to give some cutscenes a 'widescreen' effect. # # The script is off by default (when you first start the game). # # By default, when the widescreen mode is turned on, it hides one tile at the # top of the screen and one tile a the bottom. # # By default, the transition_speed is 3, you can change this value just a # few lines below # # To turn the script on, put 'WScreen.turn_on' in a call script command of # an event. Turn it off with 'WScreen.turn_off' # # To change the number tiles hidden in widescreen, use the following function # in a call script command of an event : # 'WScreen.size = NUMBER' # #==============================================================================
module WScreen #-------------------------------------------------------------------------- # ¡ñ define instance variables #-------------------------------------------------------------------------- @state = false @tile_size = 1 @transition_speed = 3 #-------------------------------------------------------------------------- # ¡ñ WScreen.on? # checks if the widescreen mode is on. #-------------------------------------------------------------------------- def self.on? return @state end #-------------------------------------------------------------------------- # ¡ñ WScreen.off? # checks if the widescreen mode is off. #-------------------------------------------------------------------------- def self.off? return !@state end #-------------------------------------------------------------------------- # ¡ñ WScreen.turn_on # turns the widescreen mode on. #-------------------------------------------------------------------------- def self.turn_on @state = true $game_player.center($game_player.x, $game_player.y) end #-------------------------------------------------------------------------- # ¡ñ WScreen.turn_off # turns the widescreen mode off. #-------------------------------------------------------------------------- def self.turn_off @state = false $game_player.center($game_player.x, $game_player.y) end #-------------------------------------------------------------------------- # ¡ñ WScreen.size # returns the number of hidden tiles when the widescreen mode is on. #-------------------------------------------------------------------------- def self.size return on? ? @tile_size : 0 end #-------------------------------------------------------------------------- # ¡ñ WScreen.size = INTEGER # set the number of tiles to hide when the widescreen mode is on. #-------------------------------------------------------------------------- def self.size=(value) @tile_size = [value % 9, 1].min $game_player.center($game_player.x, $game_player.y) end #-------------------------------------------------------------------------- # ¡ñ WScreen.speed # returns the transition speed between the off and on modes. #-------------------------------------------------------------------------- def self.speed return @transition_speed end end
#============================================================================== # ¡ö Game_Map #------------------------------------------------------------------------------ # ¡¡ #==============================================================================
class Game_Map #-------------------------------------------------------------------------- # ¡ñ scroll_down #-------------------------------------------------------------------------- def scroll_down(distance) ntiles = 15 - WScreen.size * 2 @display_y = [@display_y + distance, (self.height - ntiles) * 128].min end end
#============================================================================== # ¡ö Game_Player #------------------------------------------------------------------------------ # ¡¡ #==============================================================================
class Game_Player < Game_Character #-------------------------------------------------------------------------- # ¡ñ center_y #-------------------------------------------------------------------------- def center_y n = 240 - WScreen.size * 32 return (n - 16) * 4 end #-------------------------------------------------------------------------- # ¡ñ center #-------------------------------------------------------------------------- def center(x, y) max_x = ($game_map.width - 20) * 128 ntiles = 15 - WScreen.size * 2 max_y = ($game_map.height - ntiles) * 128 $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max $game_map.display_y = [0, [y * 128 - center_y, max_y].min].max end #-------------------------------------------------------------------------- # ¡ñ update #-------------------------------------------------------------------------- def update last_moving = moving? unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing case Input.dir4 when 2 move_down when 4 move_left when 6 move_right when 8 move_up end end last_real_x = @real_x last_real_y = @real_y super if @real_y > last_real_y and @real_y - $game_map.display_y > center_y $game_map.scroll_down(@real_y - last_real_y) end if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X $game_map.scroll_left(last_real_x - @real_x) end if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X $game_map.scroll_right(@real_x - last_real_x) end if @real_y < last_real_y and @real_y - $game_map.display_y < center_y $game_map.scroll_up(last_real_y - @real_y) end unless moving? if last_moving result = check_event_trigger_here([1,2]) if result == false unless $DEBUG and Input.press?(Input::CTRL) if @encounter_count > 0 @encounter_count -= 1 end end end end if Input.trigger?(Input::C) check_event_trigger_here([0]) check_event_trigger_there([0,1,2]) end end end end
#============================================================================== # ¡ö Spriteset_Map #------------------------------------------------------------------------------ # ¡¡ #==============================================================================
class Spriteset_Map alias init_widescreen initialize alias update_widescreen update #-------------------------------------------------------------------------- # ¡ñ update #-------------------------------------------------------------------------- def initialize init_widescreen if @viewport1.rect.height > 480 - (WScreen.size * 64) @viewport1.rect.height = @viewport2.rect.height = @viewport3.rect.height = 480 - (WScreen.size * 64) oy = (480 - @viewport1.rect.height) / 2 @viewport1.rect.y = @viewport2.rect.y = @viewport3.rect.y = oy end end #-------------------------------------------------------------------------- # ¡ñ update #-------------------------------------------------------------------------- def update sy = 480 - (WScreen.size * 64) h = @viewport1.rect.height if h != sy n = [((sy - h) / WScreen.speed).abs, 1].max @viewport1.rect.height += h > sy ? - n : n @viewport2.rect.height += h > sy ? - n : n @viewport3.rect.height += h > sy ? - n : n oy = (480 - @viewport1.rect.height) / 2 @viewport1.rect.y = @viewport2.rect.y = @viewport3.rect.y = oy end update_widescreen end end | |
|
Koss > Administrateur
Nombre de messages : 404 Age : 31 Quels sont vos projets ? : Glandage total... Date d'inscription : 18/04/2007
Fiche Créateur Points de Créativité: (0/50) Commentaires:
| Sujet: Re: Bandes noires Mar 10 Juil - 4:08 | |
| Pratique pour les cinématiques^^ | |
|
kamiho > Barbouilleur
Nombre de messages : 26 Age : 31 Date d'inscription : 24/05/2007
| Sujet: Re: Bandes noires Mar 17 Juil - 6:06 | |
| euh... plutôt que de surcharger le jeu de script faire une image de deux bande noir puis afficher l'afficher l'image ne serait pas plus simples | |
|
Koss > Administrateur
Nombre de messages : 404 Age : 31 Quels sont vos projets ? : Glandage total... Date d'inscription : 18/04/2007
Fiche Créateur Points de Créativité: (0/50) Commentaires:
| Sujet: Re: Bandes noires Lun 23 Juil - 3:02 | |
| Perso je pense que c'est moins chiant en script, en effet pas besoin de faire ton image et de surcharger d'events( en effet si tu fais une cinématique ce sera déjà surchargé d'events, alors un script est assez pratique) Par contre, y-a-til une fonction "appeler script"? Parce que je pense que là les bandes noires restent non? | |
|
Night > Artiste confirmé
Nombre de messages : 125 Age : 29 Localisation : =) Avez vous RPGMXP ? : =) Quels sont vos projets ? : =) Date d'inscription : 25/06/2007
Fiche Créateur Points de Créativité: (0/50) Commentaires:
| Sujet: Re: Bandes noires Sam 28 Juil - 9:42 | |
| Justement, tu PEUX faire ça en event et c'est plutot plus pratique, inutile de surcharger le jeu en scripts. Tout l'inverse quoi Le surchargement d'event est pour moi meilleurs que le surchargement de script, car sinon tu t'y perd ... Enfin bon, c'est votre choix ... Et puis, il est inutile de faire tout ça en un seul entier script. | |
|