LODM (L'Oasis des Makers)
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

LODM (L'Oasis des Makers)

Forum d'étude sur le Making RMXP
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

 

 Naviguer en bateau sur une Map Monde sans changer de Map

Aller en bas 
AuteurMessage
Saga_fire

Saga_fire


Nombre de messages : 12
Age : 36
Projet Principal : Secret
Aide Recherchée pour : Characters/Battlers nouveaux
Date d'inscription : 19/05/2007

Naviguer en bateau sur une Map Monde sans changer de Map Empty
MessageSujet: Naviguer en bateau sur une Map Monde sans changer de Map   Naviguer en bateau sur une Map Monde sans changer de Map Icon_minitimeMar 29 Mai - 7:42

Salut
Voici un script où l'on a pas besoin (ou presque pas) de se prendre la tête pour entrer dans un bateau sur votre Map Monde (ou ailleur remarquez). Le script est à placer au dessus de main en le nommant comme vous voulez. J'ai mis les instructions pour s'en servir et un petit tutorial dans les commentaires en haut et j'aimerais bien que si vous passez sur cet page, que vous me fassiez une critique sur le l'explicité du tutorial. Voilà et merci.
Code:

#==============================================================================
# ** Bateau
# Auteur : Saga_fire l'idée de cypherzero.
=begin
Utilisation :
Avant toute chose, allez dans base de donnée, gestion des chipset et mettez à votre
chipset corresmondant à celui de votre map votre titleset (ou autotitle) d'eau peu profonde
a passable (c'est à dire qu'il doit y avoir un rond) et au terrain 7 et celle d'eau profonde
à passable aussi et au terrain 6. Il y a un titleset (ou autotitle) de transition (il faut que
ce soit de la terre) à mettre à passable, au terrain 1, à placer entre l'eau de terrain 7 et le
la terre de terrain 0, 2, 3, 4 ou 5 pour que le bateau ne puisse par aller sur la terre. N'allez
pas trop loin avec ce tiltleset (ou autotitle) de transition car son utilité est de laisser
les évennements se déplacer. En effet, si un évennement est sur ce titleset (ou autotitle)
de transition, celui-ci bougera sur lui-même sans se déplacer.

Pour monter dans un bateau, faites un évennement appelez le script bateau par la
commande $game_temp.isinboat = 1 ou $game_temp.isinboat = 2 selon vos besoins
et transformer votre héros en bateau (évidement, il faut avoir le character de bateau)
tout en le téléportant sur l'eau. Pour descendre du bateau, faites le processus inverse
avec $game_temp.isinboat = 0.

Pour ceux qui ne saurait pas du tout comment s'en servir, je donne un petit tutorial de ce
que vous pouvez faire (ce n'est pas la seul solution).
1) Creez un évennement sur l'eau (à coté d'un titleset de transition) en le nommant "bateau"
    qui s'activera par un interrupteur que vous nommerez "bateau" (cet interrupteur servira à
    déclancher le moment où vous aurez besoin du bateau donc il n'est pas obligatoire
    pour CET évennement) avec pour apparence le character d'un bateau.
2) L'évennement que vous allez créer servira à embarquer sur le bateau au moment où vous
    en aurez besoin dans l'avanture et de débarquer sur le même lieu d'embarquement.
    Creez un autre évennement sur terrre (sur un titleset de transition) près du bateau que
    vous apellerez  "1er embarquement". Cet évennement sera sans apparance.
    Maintenant, dans cet évennement,
    1 mettez une première condition 'si interrupteur "bateau" activé'
    2 mettez dans cette condition une seconde condition
        'si script "$game_temp.isinboat == 0' et à l'intérieur,
    3 faites 'Déplacer/Modifier un évennement...' et modifiez au héros son opacité à 0,
        son apparance en bateau et de nouveau son opacité à 255.
    4 En dessous, faites encore 'Déplacer/Modifier un évennement...' et modifiez l'opacité
        de l'évennement bateau à 0.
    5 Ensuite,  téléportez l'équipe sans fondu et dans la direction du bateau sur
        l'évennement "bateau".
    6 Ensuite, appelez le script '$game_temp.isinboat = 1'.
    7 En dessous, faites 'Modifier position d'un évennement...' et echanger la position de cet
        évennement avec l'évennement "bateau".
    8 Enfin activé l'interrupteur local A et au dessous normalement c'est deux fins de condition.
    Maintenant faites 'copier page' et 'coller page', rajoutez comme condition de
    l'évennement 'l'interrupteur local A est activé' et vous allez modifier seulement ce que
    je vais vous indiquer (référez vous aux sous étapes numérotés ci-dessus).
    1 Rien a modifier
    2 Au lieu de 0 mettez 1.
    Là, rajoutez 'Modifier position d'un évennement...' modifiez la position de l'évennement
    "bateau" sur la position spécifique de cet évennement.
    3 L'apparance à modifier est celle du héros.
    4 L'oppacité est à mettre à 255.
    5 La téléportation se fait sur cet évennement
    6 Au lieu de 1 mettez 0.
    7 Rien à modifier.
    8 Au lieu d'ètre activé, il est désactivé.
C'est ici que le plus gros est fait. Testez et si ça ne marche ne continuez pas et regardez
ce qui ne vas pas avant de faire la suite.
3) L'évennement que vous allez créer sert à choisir un lieu de débarquement et de pouvoir
    réembarquer sur ce même lieu.
    Maintenant, créez un nouvel évennement sur l'eau (à coté d'un titleset de transition) avec
    pour nom celui que vous voulez, copiez la 1ère condition de la page 2 de l'évennement
    "1er embarquement" et collez la sur cette page (n'oubliez pas de change à la fin de la
    condition 'Interrupteur local A désactivé' par  'Interrupteur local A activé'), faites une
    nouvelle page qui s'activera par l'interrupteur local A et copiez la 1ère condition de la
    page 1 de l'évennment  "1er embarquement" et collez la sur cette page (encore une fois,
    n'oubliez pas de changer à la fin de la condition 'Interrupteur local A activé' par
    'Interrupteur local A désactivé').
    Il ne vous reste plus qu'à modifier les lieux de téléportation selon vos besoins et la position
    de l'évennement "bateau" sur la page 1 de cet évennement qui doit ètre sur le même lieu
    où l'équipe est téléporté.
    Cet évennement sera comme tous les autres que vous créererez à la différence que les
    lieux de téléportations ne serons pas les mêmes donc à chaque fois que vous aurez
    d'un lieu de débarquement, copiez cet évennement et collez à l'endroit désiré sur l'eau
    en changeant les lieux de téléportation.
Encore une petite chose, le bateau que nous venons de créer ne va que sur les eaux peu
profonde.
Si par la suite vous voulez un bateau qui va sur tous les types d'eau, voici ce que je vous
conseil de faire. Désactivez l'interrupteur "bateau" et recomencez l'étape "1)" avec un
nouveau nom d'évennement, un interrupteur "bateau2" et un nouveau character de bateau
et dans les étapes "2) et "3)", copiez la 1ère condition de chaque page et collez la au
dessous des deux fins de condition en changeant juste l'interrupteur "bateau" par "bateau2",
l'apparance de l'ancien bateau par le nouveau et à chaque fois que vous verrez une ligne
avec '$game_temp.isinboat == 1', '$game_temp.isinboat = 1' et le nom de l'évennement
"bateau" modifiez les respectivement par '$game_temp.isinboat == 2',
'$game_temp.isinboat = 2' et le nom de votre nouvel évennement de l'étape "1)".
Sinon si vous voulez dès le départ un bateau qui va partout, remplacez toutes les lignes avec
'$game_temp.isinboat == 1' et '$game_temp.isinboat = 1' respectivement par
'$game_temp.isinboat == 2' et '$game_temp.isinboat = 2'.
=end
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :isinboat
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias bateaux_initialize initialize
  def initialize
    bateaux_initialize
    @isinboat = 0
  end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles the map. It includes scrolling and passable determining
#  functions. Refer to "$game_map" for the instance of this class.
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Determine if Passable
  #    x          : x-coordinate
  #    y          : y-coordinate
  #    d          : direction (0,2,4,6,8,10)
  #                  *  0,10 = determine if all directions are impassable
  #    self_event : Self (If event is determined passable)
  #--------------------------------------------------------------------------
  def passable?(x, y, d, self_event = nil)
    # If coordinates given are outside of the map
    unless valid?(x, y)
      # impassable
      return false
    end
    # Change direction (0,2,4,6,8,10) to obstacle bit (0,1,2,4,8,0)
    bit = (1 << (d / 2 - 1)) & 0x0f
    # Loop in all events
    for event in events.values
      # If tiles other than self are consistent with coordinates
      if event.tile_id >= 0 and event != self_event and
        event.x == x and event.y == y and not event.through
        # If obstacle bit is set
        if @passages[event.tile_id] & bit != 0
          # impassable
          return false
        # If obstacle bit is set in all directions
        elsif @passages[event.tile_id] & 0x0f == 0x0f
          # impassable
          return false
        # If priorities other than that are 0
        elsif @priorities[event.tile_id] == 0
          # passable
          return true
        end
      end
    end
    # Loop searches in order from top of layer
    for i in [2, 1, 0]
      # Get tile ID
      tile_id = data[x, y, i]
      # Tile ID acquistion failure
      if tile_id == nil
        # impassable
        return false
      # Si le joueur n'est pas dans la bateau et que le terrain est égale à 7
      elsif ($game_temp.isinboat == 0) and (@terrain_tags[tile_id] == 7)
        return false
      # Si le joueur est dans la bateau de niveau 1 et que le terrain est égale à 1 ou 6
      elsif ($game_temp.isinboat == 1) and
        ((@terrain_tags[tile_id] == 1) or (@terrain_tags[tile_id] == 6))
        return false
      # Si le joueur est dans la bateau de niveau 2 et que le terrain est égale à 1
      elsif ($game_temp.isinboat == 2) and (@terrain_tags[tile_id] == 1)
        return false
      # If obstacle bit is set
      elsif @passages[tile_id] & bit != 0
        # impassable
        return false
      # If obstacle bit is set in all directions
      elsif @passages[tile_id] & 0x0f == 0x0f
        # impassable
        return false
      # If priorities other than that are 0
      elsif @priorities[tile_id] == 0
        # passable
        return true
      end
    end
    # passable
    return true
  end
end

Revenir en haut Aller en bas
 
Naviguer en bateau sur une Map Monde sans changer de Map
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Le monde d'Ergia en Screens
» Le monde d'Ergia en Musique
» Le Monde d'Ergia en Screens [commentaire]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LODM (L'Oasis des Makers) :: Groupe pour Scripts :: Scripts Divers-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser