Roys Guide
Nombre de messages : 111 Age : 52 Projet Principal : Le Crépuscule des Dieux Aide Recherchée pour : des chara aRPG Surnom : Scripteur Monomaniaque Date d'inscription : 24/02/2007
| Sujet: Ajouter des compteurs (munition, temps) Dim 25 Fév - 5:52 | |
| Bonjour Avec ce script vous pourrez facilement gérer: - Un compteur de flèche/bombe vec une icone - Une chronomètre ou décompte - Des compteur d'argent etc etcCe script vous permettra de créer plusieurs compteurs: - à l'emplacement que vous voulez sur l'ecran - avec une icone choisie - avec un texte devant Le compteur est géré par une variable RMXP que VOUS désignez. Elle est mise à jour automatique dès que vous l'avez créée. Vous pouvez l'effacer à tout moment par une commande simple Enfin, la sauvergarde est intégrée. C'est à dire que si vous sauvez votre partie, la jauge prendra la place où vous l'avez laissé lors de la sauvegarde. De même la gestion de l'effacement et de l'affichage se fait automatiquement lorsque vous quittez la map vers un menu, ou lorsque vous revenez sur la map Voici le script appelez le Compteur et mettez le au dessus de main. Des explications sont indiquées en en-tête pour créer votre premièr compteur, lisez les attentivement. bon making - Code:
-
#============================================================================ # SCRIPT COMPTEUR # Stephane Roys, Royer # Fevrier 2007 # Projet: Petite Boite à outils pour aider les event maker
# Ce script permet de gèrer en event l'apparition d'un compteur sours forme d'une icone avec un nombre et un titre
# 1- Créer un compteur en event # Faire inserer script: $compteur = Compteur.new(x,y,var,"icone","texte") # Remplacer $compteur par $le_nom_de_votre_compteur # x et y par les coordonnées ecran ou s'affichent votre compteur # var par le numéro de votre variable qui contrôle la compteur # "icone" par le nom de votre icone que vou savez importé dans le dossier Icons, # texte par un texte entre "guillement" court portant le nom de votre compteur (par ex "Ammo"). # exemple: $ammo=compteur.new(0,0,2,"005-Weapon05","Fleches") # ici on créé un compteur $ammo qui s'affiche en 0,0 (coin haut gauche) # , gèrer par la variable002 avec le texte "Fleches" devant
# 2- Mise à jour de la compteur # La mise à jour est automatique, vous n'avez qu'à changer la valeur de la variable de votre compteur # Ainsi que l'effacement quand vous allez sur votre menu
# 3- Effacer une compteur # Faire simplement $le_nom_de_votre_compteur.off
# Recommandations à lire #------------------------ # 1- Vous pouvez changer la taille de la Police et la couleur de tous les compteurs ici: FONT="Arial" TAILLE=16 COLOR=Color.new(0,0,0,255)
#2- Prenez soin de donner des noms différents à vos compteurs sinon vous risquez d'avoir des conflits
#3- Ne crééez pas une compteur en processus parallèle sinon vous allez créér une nouvelle compteur à chaque frame # jusqu'a ce que RM bug
#4- La sauvergarde est comprise dans le script. Donc apres un load votre compteur sera dans l'etat ou il a été sauvé
#5- Les compteurs s'effacent tous seul quand vous sortez de la map vers un menu, et il se recrée seul quand vous revenez sur la map #============================================================================
#============================================================================ # COMPTEURS # Créé le tableau des compteurs de Jeu #============================================================================ class Game_Party attr_accessor:compteurs alias compteur_game_party_initialize initialize #-------------------------------------------------------------------------- # INITIALIZE #-------------------------------------------------------------------------- def initialize compteur_game_party_initialize # Tableau des compteurs @compteurs=[] end end
#============================================================================ # COMPTEUR #============================================================================ class Compteur attr_accessor:x # Coordonnées d'affichage attr_accessor:y attr_accessor:var # Numéro de la variable RMXP attr_accessor:value # Valeur de la variable RMXP attr_accessor:texte # Texte devant l'icone attr_accessor:icone # nom de l'icone dans le dossier Icons attr_accessor:fin_compteur # Indique la fin du compteur #-------------------------------------------------------------------------- # INITIALIZE #-------------------------------------------------------------------------- def initialize(x,y,var,icone,texte) @x=x;@y=y;@var=var;@icone=icone;@texte=texte @fin_compteur=false $game_party.compteurs.push(self) @visible=true @value=$game_variables[@var] end #-------------------------------------------------------------------------- # UPDATE #-------------------------------------------------------------------------- def update @value=$game_variables[@var] end
#-------------------------------------------------------------------------- # OFF # Termine le compteur #-------------------------------------------------------------------------- def off @fin_compteur=true end end
#============================================================================ # ■ Spriteset Map # Mise à jour de la class Spriteset_Map afin de gérer l'affichage graphique #============================================================================ class Spriteset_Map #-------------------------------------------------------------------------- alias compteur_spriteset_map_initialize initialize alias compteur_spriteset_map_dispose dispose alias compteur_spriteset_map_update update #-------------------------------------------------------------------------- # INITIALIZE #-------------------------------------------------------------------------- def initialize # Créé les compteurs @compteur_sprite=[] for compteur in $game_party.compteurs setup_compteur(compteur) end compteur_spriteset_map_initialize end #-------------------------------------------------------------------------- # SETUP #-------------------------------------------------------------------------- def setup_compteur(compteur) # Créé le sprite en fonction de la taille de la police sprite=Sprite.new sprite.bitmap=Bitmap.new(24+3*TAILLE+compteur.texte.size*TAILLE,[TAILLE,24].max) # Récupère l'icone bitmap=Bitmap.new(24,24) bitmap = RPG::Cache.icon(compteur.icone) # Construit le sprite sprite.bitmap.blt(compteur.texte.size*TAILLE,0,bitmap,Rect.new(0,0,24,24)) sprite.bitmap.font.color= Color.new(0,0,0) sprite.z = 3000 sprite.x = compteur.x sprite.y = compteur.y sprite.bitmap.font.name = FONT sprite.bitmap.font.size = TAILLE sprite.bitmap.font.color= COLOR sprite.bitmap.draw_text(0,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.texte,0) @compteur_sprite.push(sprite) end
#-------------------------------------------------------------------------- # UPDATE #-------------------------------------------------------------------------- def update compteur_spriteset_map_update #----------------------------- # Cherche si une nouvelle compteur a été créée for key in @compteur_sprite.size..$game_party.compteurs.size-1 setup_compteur($game_party.compteurs[key]) end #----------------------------- # Update la compteur delete_sprite=[] delete_compteur=[] for key in 0..$game_party.compteurs.size-1 compteur=$game_party.compteurs[key] sprite=@compteur_sprite[key] # Récupère la valeur du compteur compteur.update # Rafraichit le sprite sprite.bitmap.clear bitmap=Bitmap.new(24,24) bitmap = RPG::Cache.icon(compteur.icone) # Affiche l'icone sprite.bitmap.blt(compteur.texte.size*TAILLE,0,bitmap,Rect.new(0,0,24,24)) # Affiche le titre sprite.bitmap.draw_text(0,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.texte,1) # Affiche le Compteur sprite.bitmap.draw_text(compteur.texte.size*TAILLE+24,0,compteur.texte.size*TAILLE, [TAILLE,24].max,compteur.value.to_s,1) # Observe si la compteur est disposée if compteur.fin_compteur delete_sprite.push(sprite) delete_compteur.push(compteur) end end #----------------------------- # Dispose la compteur for sprite in delete_sprite sprite.dispose @compteur_sprite.delete(sprite) end for compteur in delete_compteur $game_party.compteurs.delete(compteur) end end
#-------------------------------------------------------------------------- # DISPOSE #-------------------------------------------------------------------------- def dispose compteur_spriteset_map_dispose for sprite in @compteur_sprite sprite.dispose end end end Enfin, un screen pour avoir un exemple | |
|