- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
[résolu]Aide scriptage
Mar 14 Jan 2014 - 21:35
salut
je programme actuellement quelque chose qui nécessite de savoir a partir du script le tile du terrain ce trouvant autour du joueur
j'utilise cette fonction qui me donne un tableau de dimension 3 avec la donné du tile de la couche inférieur a supérieur (description ^^)
dans Game_Map ligne 453
#--------------------------------------------------------------------------
# * Get Array of All Layer Tiles (Top to Bottom) at Specified Coordinates
#--------------------------------------------------------------------------
def layered_tiles(x, y)
[2, 1, 0].collect {|z| tile_id(x, y, z) }
end
ex :
cette valeur change en fonction de l'auto tile
merci d'avance j'espère avoir été assez claire
je programme actuellement quelque chose qui nécessite de savoir a partir du script le tile du terrain ce trouvant autour du joueur
j'utilise cette fonction qui me donne un tableau de dimension 3 avec la donné du tile de la couche inférieur a supérieur (description ^^)
dans Game_Map ligne 453
#--------------------------------------------------------------------------
# * Get Array of All Layer Tiles (Top to Bottom) at Specified Coordinates
#--------------------------------------------------------------------------
def layered_tiles(x, y)
[2, 1, 0].collect {|z| tile_id(x, y, z) }
end
ex :
- Spoiler:
cette valeur change en fonction de l'auto tile
merci d'avance j'espère avoir été assez claire
Re: [résolu]Aide scriptage
Mer 15 Jan 2014 - 12:45
Hello !
De mémoire la méthode tile_id(x, y, z) parcours l'objet Table map_data. C'est donc un tableau 3D qui gère x: les abscisses, y: les ordonnées et z: la couche. Il y en a 3 sous VX donc 0, 1 et 2.
Bonne journée,
Berka
De mémoire la méthode tile_id(x, y, z) parcours l'objet Table map_data. C'est donc un tableau 3D qui gère x: les abscisses, y: les ordonnées et z: la couche. Il y en a 3 sous VX donc 0, 1 et 2.
Bonne journée,
Berka
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [résolu]Aide scriptage
Mer 15 Jan 2014 - 15:00
merci mais cela je l'avait compris ^^ le première valeur et celle de la couche 2 (la plus haute)
la deuxième celle de la couche 1 (même niveaux que le héros) et la troisième la couche 0 (sous le héros)
mais ce que je voudrais c'est pour une valeur donnée d'une des variable savoir a quelle tile cela correspond
la deuxième celle de la couche 1 (même niveaux que le héros) et la troisième la couche 0 (sous le héros)
mais ce que je voudrais c'est pour une valeur donnée d'une des variable savoir a quelle tile cela correspond
Re: [résolu]Aide scriptage
Jeu 16 Jan 2014 - 15:01
Ah, ok !
Tu auras la réponse en explorant la classe Tilemap (codée en C dans RGSS200E.dll).
Il existe des réécritures sur certains forum.
A titre d'exemple, map_data peut renvoyer un id:
Une fois que tu as repéré le tileset, tu fais un modulo de l'id pour découper chaque autotile en fonction de la frame d'animation.
Et tu as des méthodes telles que:
Tu auras la réponse en explorant la classe Tilemap (codée en C dans RGSS200E.dll).
Il existe des réécritures sur certains forum.
A titre d'exemple, map_data peut renvoyer un id:
- Code:
id < 1024 # tilesets B à E
id / 256 = 0 # B
id / 256 = 1 # C
id / 256 = 2 # D
#id / 256 sinon E
id < 1664 # A5
id < 2816 # A1
id < 4352 # A2
id < 5888 # A3
# sinon A4
Une fois que tu as repéré le tileset, tu fais un modulo de l'id pour découper chaque autotile en fonction de la frame d'animation.
Et tu as des méthodes telles que:
- Code:
def is_roof?(data)
return true if data.between?(4352, 4735)
return true if data.between?(5120, 5503)
return true if data.between?(5888, 6271)
return true if data.between?(6656, 7039)
return true if data.between?(7424, 7807)
false
end
def is_soil?(data)
return true if data.between?(2816, 4351) && !is_table?(data)
return true if data > 1663 && !is_stair?(data)
false
end
def is_stair?(data)
return true if data.between?(1541, 1542)
return true if data.between?(1549, 1550)
return true if data.between?(1600, 1615)
false
end
def is_table?(data)
return true if data.between?(3152, 3199)
return true if data.between?(3536, 3583)
return true if data.between?(3920, 3967)
return true if data.between?(4304, 4351)
false
end
def is_wall?(data)
return true if data.between?(2288, 2335)
return true if data.between?(2384, 2431)
return true if data.between?(2480, 2527)
return true if data.between?(2576, 2623)
return true if data.between?(2672, 2719)
return true if data.between?(2768, 2815)
return true if data.between?(4736, 5119)
return true if data.between?(5504, 5887)
return true if data.between?(6272, 6655)
return true if data.between?(7040, 7423)
return true if data > 7807
false
end
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [résolu]Aide scriptage
Jeu 16 Jan 2014 - 17:32
Merci c'est exactement ce que je chercher
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|