AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

Partagez
 

 Problème de passabilité [Résolu]

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Hamburger
Voyageur Lv.10
Voyageur Lv.10
Hamburger


Masculin Age : 27
Inscrit le : 01/08/2011
Messages : 446

Problème de passabilité [Résolu] Empty
MessageSujet: Problème de passabilité [Résolu]   Problème de passabilité [Résolu] Icon_minitimeDim 19 Fév 2012 - 16:31

Bonjour à tous !
J'utilise un script qui fait office de multitiles.
J'utilise donc également un script pour modifier la passabilité de mes tiles.
Le problème est que je ne sais absolument pas comment m'en servir.

Code:
lass Game_Map
  attr_accessor :tab_passage # Ecriture des nouvelles données
  attr_reader :map # Lecture des données de la map
  alias hk_initialize initialize
  def initialize
    hk_initialize
    @tab_passage = {} # création du hash
  end
  # redefinition de la methode qui controle la passabilité
  def passable?(x, y, flag = 0x01)
    for event in events_xy(x, y)            # events with matching coordinates
      next if event.tile_id == 0            # graphics are not tiled
      next if event.priority_type > 0      # not [Below characters]
      next if event.through                # pass-through state
      pass = @passages[event.tile_id]      # get passable attribute
      next if pass & 0x10 == 0x10          # *: Does not affect passage
      return true if pass & flag == 0x00    # o: Passable
      return false if pass & flag == flag  # x: Impassable
    end
    for i in [2, 1, 0]                      # in order from on top of layer
      tile_id = @map.data[x, y, i]          # get tile ID
      return false if tile_id == nil        # failed to get tile: Impassable
      pass = @passages[tile_id]            # get passable attribute
###################################
      if @tab_passage.key?(tile_id) # Si quelque chose à été defini
        return @tab_passage[tile_id] # retourne la valeur defini
      end
###################################
      next if pass & 0x10 == 0x10          # *: Does not affect passage
      return true if pass & flag == 0x00    # o: Passable
      return false if pass & flag == flag  # x: Impassable
    end
    return false                            # Impassable
  end
end
###################################
class Game_Player < Game_Character
  attr_accessor :passage_pont
  alias hk_init initialize
  def initialize
    hk_init
    @passage_pont = false
  end
  def screen_z
    return 250 if @passage_pont
    super
  end
end
###################################
class Game_Interpreter
  def change_passage(fichier, x, y, valeur)
    case fichier
    when "A1"
      min = 2048 + (((y * 8) + x) * 48)
    when "A2"
      min = 2816 + (((y * 8) + x) * 48)
    when "A3"
      min = 4352 + (((y * 8) + x) * 48)
    when "A4"
      min = 5888 + (((y * 8) + x) * 48)
    when "A5"
      min = 1536 + ((y * 8) + x)
    when "B"
      min = 0 + ((y * 8) + x)
    when "C"
      min = 256 + ((y * 8) + x)
    when "D"
      min = 512 + ((y * 8) + x)
    when "E"
      min = 768 + ((y * 8) + x)
    end
    for tile_id in min..(min + 47)
      $game_map.tab_passage[tile_id] = valeur
    end
  end
  def efface_passage
    $game_map.tab_passage.clear
  end
  def passage_pont(var)
    $game_player.passage_pont = var
  end
  def player_in_range?(x_min, y_min, x_max, y_max)
    if $game_player.x.between?(x_min, x_max) and $game_player.y.between?(y_min, y_max)
      return true
    end
    return false
  end
end

Une petite expliquation sur son utilisation serait franchement la bienvenue.


Dernière édition par Hamburger le Mer 22 Fév 2012 - 22:23, édité 1 fois
Revenir en haut Aller en bas
Hamburger
Voyageur Lv.10
Voyageur Lv.10
Hamburger


Masculin Age : 27
Inscrit le : 01/08/2011
Messages : 446

Problème de passabilité [Résolu] Empty
MessageSujet: Re: Problème de passabilité [Résolu]   Problème de passabilité [Résolu] Icon_minitimeMer 22 Fév 2012 - 21:38

Up !
Revenir en haut Aller en bas
vincentmhd
Maire Lv.9
Maire Lv.9
vincentmhd


Masculin Age : 37
Inscrit le : 04/02/2009
Messages : 326

Problème de passabilité [Résolu] Empty
MessageSujet: Re: Problème de passabilité [Résolu]   Problème de passabilité [Résolu] Icon_minitimeMer 22 Fév 2012 - 22:10

Code:
def change_passage(fichier, x, y, valeur)
    case fichier
    when "A1"
      min = 2048 + (((y * 8) + x) * 48)
    when "A2"
      min = 2816 + (((y * 8) + x) * 48)
    when "A3"
      min = 4352 + (((y * 8) + x) * 48)
    when "A4"
      min = 5888 + (((y * 8) + x) * 48)
    when "A5"
      min = 1536 + ((y * 8) + x)
    when "B"
      min = 0 + ((y * 8) + x)
    when "C"
      min = 256 + ((y * 8) + x)
    when "D"
      min = 512 + ((y * 8) + x)
    when "E"
      min = 768 + ((y * 8) + x)
    end


C'est la fonction à appeler pour modifier la passabilité, exemple:
Code:

 change_passage("B", 0, 0, true)
rend la première case du tileset B passable.
Pour compter les coordonnées des tiles, c'est comme pour l'iconSet.
(Par contre, je ne sais plus s'il faut compter dans l'éditeur ou sur l'image. je pencherai plus pour dans l'éditeur.)

true pour que se soit passable, false pour le contraire.
c'est le script de ASHKA si je ne me trompe pas


Revenir en haut Aller en bas
Hamburger
Voyageur Lv.10
Voyageur Lv.10
Hamburger


Masculin Age : 27
Inscrit le : 01/08/2011
Messages : 446

Problème de passabilité [Résolu] Empty
MessageSujet: Re: Problème de passabilité [Résolu]   Problème de passabilité [Résolu] Icon_minitimeMer 22 Fév 2012 - 22:23

Merci beaucoup. C'est un petit peu plus clair à présent.
Revenir en haut Aller en bas
Contenu sponsorisé




Problème de passabilité [Résolu] Empty
MessageSujet: Re: Problème de passabilité [Résolu]   Problème de passabilité [Résolu] Icon_minitime

Revenir en haut Aller en bas
 

Problème de passabilité [Résolu]

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [Résolu] problème de passabilité
» Problème de passabilité !
» Problème massif de passabilité...
» Passabilité O_o ? [Résolu] :)
» [Résolu] T_T Passabilité O_o ?²

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Problèmes et Solutions :: Résolu-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit