Voyageur Lv.10
Age : 27 Inscrit le : 01/08/2011 Messages : 446
| Sujet: Problème de passabilité [Résolu] Dim 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 |
|
Voyageur Lv.10
Age : 27 Inscrit le : 01/08/2011 Messages : 446
| Sujet: Re: Problème de passabilité [Résolu] Mer 22 Fév 2012 - 21:38 | |
| |
|
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Re: Problème de passabilité [Résolu] Mer 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 |
|
Voyageur Lv.10
Age : 27 Inscrit le : 01/08/2011 Messages : 446
| Sujet: Re: Problème de passabilité [Résolu] Mer 22 Fév 2012 - 22:23 | |
| Merci beaucoup. C'est un petit peu plus clair à présent. |
|
| Sujet: Re: Problème de passabilité [Résolu] | |
| |
|