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][RGSS3]Se téléporter à l'interrieur d'un vaisseau Empty [Script][RGSS3]Se téléporter à l'interrieur d'un vaisseau

le Sam 5 Jan 2013 - 2:36
Bonjour,
Voici un script que j'avais fait sur VX et que je porte surAce vous permettant de rentrer à l'intérieur du vaisseau (le véhicule volant) lors de l'appuie de Echap. Et cela à l'aide d'un event commun de 3 ligne avec declenchement donc sans processus parallele et donc sans lag.

Script Teleport_In_Airship, toutes les explications se trouvent dans le script.
Spoiler:

Code:

#==============================================================================
# **Teleport_In_Airship fait par Skillo
#------------------------------------------------------------------------------
#  Ce script vous permet de vous téléporter dans une map définie, aux coordonné définies lorsque
#  vous appuyez sur B (Echap par default) .
#==============================================================================
module AirShipTeleport
 
  # Pour fonctionner ce script nécessite un evenement commun à declenchement  automatique via
  # un interrupteur défini plus bas et contenant les commandes suivantes:
  #  |> Attendre : 1 Frames
  #  |> Afficher l'écran en fondu
  #  |> Opération : Interrupteur [ id de l'interrupteur défini plus pas] Désactivé
 
  # Deplus pour sortir du vaisseau, il faut faire un event  avec un appel de script contenant:
  # $game_map.exit_airship
  # et le joueur sera automatiquement téléporté à la map d'origine.
 
  # Ici sera définie l'id de la map faisant réference au vaisseau, les coordonnées d'arrivé
  # et la direction du héros
  # Map_airship = [id de la map, x, y, direction]
  # direction => 2:bas, 4:gauche, 6:droite, 8:haut
  Map_airship = [2, 8, 8, 8]
 
  # Ici sera définie l'id de l'interrupteur appelant l'evenement commun nécessaire au fonctionnement de ce script
  # Switch = id de l'interrupteur
  Switch = 1
 
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and
# menus. Instances of this class are referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :backup_map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias airshipteleport_initialize initialize
  def initialize
    airshipteleport_initialize
    @backup_map = [0, 0, 0, 0]
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================

class Scene_Map
 
  #--------------------------------------------------------------------------
  # * Determine if Menu is Called due to Cancel Button
  #--------------------------------------------------------------------------
  def update_call_menu
    if $game_system.menu_disabled || $game_map.interpreter.running?
      @menu_calling = false
    else
      @menu_calling ||= Input.trigger?(:B)
      calling = @menu_calling && !$game_player.moving?
      if calling && $game_player.in_airship?
        call_airship
      elsif calling
        call_menu
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Call Menu Screen
  #--------------------------------------------------------------------------
  def call_airship
    Sound.play_ok
    $game_map.go_in_airship
  end
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================

class Game_Map
 
  #--------------------------------------------------------------------------
  # * Go in Airship
  #--------------------------------------------------------------------------
  def go_in_airship
      screen.start_fadeout(1)
      screen.update
      backup_map = [@map_id,$game_player.x,$game_player.y,$game_player.direction]
      $game_system.backup_map = backup_map
      airship_teleport = AirShipTeleport::Map_airship
      map_id = airship_teleport[0]
      x = airship_teleport[1]
      y = airship_teleport[2]
      direction = airship_teleport[3]
      $game_player.get_off_airship 
      $game_player.reserve_transfer(map_id, x, y, direction)   
      $game_switches[1] = true
  end
 
  #--------------------------------------------------------------------------
  # * Exit Airship
  #--------------------------------------------------------------------------
  def  exit_airship
    screen.start_fadeout(1)
    $game_player.get_on_airship
    backup_map = $game_system.backup_map
    map_id = backup_map[0]
    x =  backup_map[1]
    y =  backup_map[2]
    direction = backup_map[3]
    $game_player.reserve_transfer(map_id, x, y, direction)   
    $game_switches[1] = true
  end
end

#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles the player. It includes event starting determinants and
# map scrolling functions. The instance of this class is referenced by
# $game_player.
#==============================================================================

class Game_Player < Game_Character
 
  #--------------------------------------------------------------------------
  # * Get Off airship
  #--------------------------------------------------------------------------
  def get_off_airship
    @followers.synchronize(@x, @y, @direction)
    vehicle.get_off
    @vehicle_getting_off = true
    @move_speed = 4
    @through = false
    make_encounter_count
    @followers.gather
    @vehicle_getting_off
  end
 
  #--------------------------------------------------------------------------
  # * Board airship
  #--------------------------------------------------------------------------
  def get_on_airship
    @vehicle_type = :airship
    @move_speed = vehicle.speed
    @vehicle_getting_on = false
    @transparent = true
    @through = true
    vehicle.get_on
    @followers.gather   
  end
end

Une petite démo pour ceux qui n'aurai pas compris le principe.http://www.mediafire.com/?gcl6xtnggr4gx1y

Voilà laissez vos coms.

+5 pts de participation

IceCoffee
IceCoffee
Membre

Nombre de messages : 49
Age : 20
Localisation : Bordeaux
Distinction : aucune
Date d'inscription : 03/08/2011

[Script][RGSS3]Se téléporter à l'interrieur d'un vaisseau Empty Re: [Script][RGSS3]Se téléporter à l'interrieur d'un vaisseau

le Sam 5 Jan 2013 - 16:17
Ouaw. Vraiment super comme principe je vais tester tout de suite !
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum