Partagez
Aller en bas
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu [résolu]Aide scriptage

le 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 :
Spoiler:


est-ce que quelqu'un serait me dire a une valeur donnée de la troisième valeur a quelle tile cela correspond ?
cette valeur change en fonction de l'auto tile

merci d'avance j'espère avoir été assez claire Smile


Dernière édition par vincent26 le Jeu 16 Jan 2014 - 15:15, édité 1 fois
avatar
Berka
Administrateur

Nombre de messages : 1831
Age : 27
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Résolu Re: [résolu]Aide scriptage

le 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
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Aide scriptage

le 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 Smile
avatar
Berka
Administrateur

Nombre de messages : 1831
Age : 27
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Résolu Re: [résolu]Aide scriptage

le 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:
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

avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [résolu]Aide scriptage

le Jeu 16 Jan 2014 - 17:32
Merci c'est exactement ce que je chercher Smile
Contenu sponsorisé

Résolu Re: [résolu]Aide scriptage

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum