Illusionniste Lv.12
Age : 34 Inscrit le : 14/02/2010 Messages : 796
| Sujet: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 20:59 | |
| 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 #----------------------------------------#
Dernière édition par Tiroflan le Mer 4 Jan 2012 - 22:05, édité 1 fois |
|
Invité
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 21:05 | |
| Un bon script qui peut être très utile ! +3 points de participation ! Merci du partage ! |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 21:41 | |
| Dommage que le code ne soit que trop peu mis en forme et commenté. |
|
Illusionniste Lv.12
Age : 34 Inscrit le : 14/02/2010 Messages : 796
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 21:52 | |
| Ah, t'as raison, je vais changer tout ça. Pour une fois, le code m'a pas posé de problème et je l'ai fait en une fois, du coup j'ai pas eu du tout besoin de commenter. |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 22:00 | |
| Ben en fait c'est surtout dans la mise en forme et la précision de ce que t'as fait qu'il y a un probleme. |
|
Illusionniste Lv.12
Age : 34 Inscrit le : 14/02/2010 Messages : 796
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 22:08 | |
| Heu, c'est à dire ? Y'a juste deux pauvres méthodes, j'ai un peu du mal à voir comment tu mets ça en forme. Si j'ai fait des codes qui pourraient être réduits, ce qui est tout à fait possible, dis le moi, j'apprendrai certainement un truc. |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Mer 4 Jan 2012 - 22:52 | |
| En gros faire comme dans le scripts de base avec le entête et surtout le smethodes que t'as aliasées et pourquoi. |
|
Age : 33 Inscrit le : 02/02/2010 Messages : 4692
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Jeu 5 Jan 2012 - 1:08 | |
| Très utile en tout cas. Enfin, pas au gameplay mais à l'esthétique globale des projets, à la logique de battlebacks, toussa. Merci Tiro'! |
|
Habitant Lv.6
Age : 34 Inscrit le : 02/10/2008 Messages : 102
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. Jeu 5 Jan 2012 - 16:14 | |
| Très utile pour un CBS Sideview, d'ailleurs, j'attends un CBS de ce type avec impatience (mais un bien^^ ) ! |
|
| Sujet: Re: [VXace] Battlebacks modifiables selon la zone. | |
| |
|