- TiroflanMembre
- Nombre de messages : 14
Age : 34
Distinction : aucune
Date d'inscription : 03/01/2012
Battlebacks modifiables selon la zone.
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 :
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 :
- 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
#----------------------------------------#
- GummyStaffeux retraité
- Nombre de messages : 2666
Age : 33
Localisation : Belgique
Distinction : Modérateur imprévisible
Papy Lolo' [Nabots Nimousse]
Date d'inscription : 27/01/2008
Re: Battlebacks modifiables selon la zone.
Mar 14 Aoû 2012 - 12:19
Intéressant! Merci du partage.
+ 5pts de participation.
+ 5pts de participation.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum