Partagez
Aller en bas
Tiroflan
Tiroflan
Membre

Nombre de messages : 14
Age : 28
Distinction : aucune
Date d'inscription : 03/01/2012

Battlebacks modifiables selon la zone. Empty Battlebacks modifiables selon la zone.

le Mar 14 Aoû 2012 - 10:23
Longtemps que je suis pas passé ici ! J'ai fait quelques petites choses depuis.

Tout est dans le titre ;p C'est très étonnant que le rgss3 nous donne accès à de meilleures zones et à des battlebacks élaborés sans faire le lien, donc ce code est là pour ça. A priori, son utilité principale serait pour la worldmap seulement, mais ça pourrait aussi servir pour un système de carte de type pokemon aussi.

Utilisation : dans l'onglet de la map, il faut taper la ligne suivante : ZONE ZONE_ID FOND SOL

Avec ZONE juste pour vérification, ZONE_ID comme le numéro de la zone ciblée, FOND le nom de l'image du battleback d'arrière plan, et SOL le nom de l'image du battleback représentant le sol. Si la taille des noms occasionne un retour à la ligne (ce sera fréquent), pas de souci, tant qu'on ne passe pas à la ligne volontairement (ne pas appuyer sur entrée !)
En dehors des zones (et dans les zones pour lesquelles on n'entre rien), le battleback utilisé sera bien sur celui mis par défaut dans l'onglet map.

Exemple :

Battlebacks modifiables selon la zone. Sans_t15


Code:
#----------------------------------------#
      ####BACKGROUNDS PAR ZONE####
      ##Le 04/01/12 par Tiroflan##
##Remerciements à DeeDee13010 pour l'idée##
#----------------------------------------#

# Effet : En plus du battlebacks de base qu'il y a dans la map,
# vous pouvez en affecter des nouveaux selon la zone où le combat commence.

#----------------------------------------#
 
# Utilisation : Dans la note de l'onglet de la map, entrez la ligne :

#      ZONE ZONE_ID FOND SOL

# Avec ZONE qui sert juste à la vérification par le script,
# ZONE_ID qui est le numéro de la zone ciblée,
# SOL le nom du battleback sur lequel les combattants marchent, tel
#  qu'il est écrit dans les onglets graphiques, et idem pour FOND qui sera
# l'image d'arrière plan.

# EXEMPLE : ZONE 3 Forest1 GrassMaze

# Dans la plupart des cas, il y aura un retour à la ligne
# causé par la longueur des noms des battlebacks,
# mais tant que ce retour est automatique (n'appuyez pas sur entrée !),
# il n'y aura pas de problèmes
#----------------------------------------#

# 3 méthodes ont été aliasées :
#  setup dans Game_Map
#  create_battleback1 et create_battleback2 dans Spriteset_Battle

#----------------------------------------#


#----------------------------------------#
# Au chargement de la map, on récupère les zones concernées et leurs battlebacks respectifs.
#----------------------------------------#
class Game_Map
 
  attr_reader :background_data # Contient les zones/battlebacks
 
 
  alias backg_setup setup
  def setup(map_id)
    backg_setup(map_id)
    setup_backgrounds
  end
 
  def setup_backgrounds
    @background_data = {"area" => [] , "floor" => [] , "wall" => []}
    note = @map.note
    note.split(/[\r\n]+/).each { |line| #On lit la note ligne par ligne.
    str = line.split #Puis 'mot' par 'mot'.
    case str[0]
      when "ZONE"
        @background_data["area"].push(str[1].to_i)
        @background_data["floor"].push(str[2].to_s)
        @background_data["wall"].push(str[3].to_s)
      end}
    end
     
  end
#----------------------------------------#

#----------------------------------------#
# Ici, on modifie juste les fonctions qui récupèrent les battlebacks
# pour les afficher au début du combat, et on remplace
# quand c'est nécessaire par les battlebacks contenus dans $game_map.background_data.
#----------------------------------------#
class Spriteset_Battle
 
  alias old_create_battleback1 create_battleback1
  def create_battleback1
    zone = $game_map.region_id($game_player.x, $game_player.y) #zone au moment du combat
    if $game_map.background_data["area"].include?(zone) #La zone fait elle partie de celles qui ont des battlebacks particuliers ?
      index = $game_map.background_data["area"].index(zone) #On récupère l'indice de la zone dans l'array des zones
      @back1_sprite = Sprite.new(@viewport1)
      @back1_sprite.bitmap = Cache.battleback1($game_map.background_data["wall"][index]) #On applique l'indice pour retrouver le bon battleback.
      @back1_sprite.z = 0
      center_sprite(@back1_sprite)
    else
      old_create_battleback1
    end
  end

  alias old_create_battleback2 create_battleback2 #Même chose pour la deuxième image.
  def create_battleback2
    zone = $game_map.region_id($game_player.x, $game_player.y)
    if $game_map.background_data["area"].include?(zone)
      index = $game_map.background_data["area"].index(zone)
      @back2_sprite = Sprite.new(@viewport1)
      @back2_sprite.bitmap = Cache.battleback2($game_map.background_data["floor"][index])
      @back2_sprite.z = 1
      center_sprite(@back2_sprite)
    else
      old_create_battleback2
    end
  end

end
#----------------------------------------#

Gummy
Gummy
Staffeux retraité

Nombre de messages : 2666
Age : 28
Localisation : Belgique
Distinction : Modérateur imprévisible

Papy Lolo' [Nabots Nimousse]


Date d'inscription : 27/01/2008

Battlebacks modifiables selon la zone. Empty Re: Battlebacks modifiables selon la zone.

le Mar 14 Aoû 2012 - 12:19
Intéressant! Merci du partage.

+ 5pts de participation.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum