Seigneur Lv.18
Age : 29 Avertissements : 3 Inscrit le : 20/12/2008 Messages : 2292
| Sujet: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 16:39 | |
| Bonjour ! Alors, comme écrit dans le titre, je souhaiterais savoir si c'est possible d'ajouter une fonction au script qui permet d'afficher les objets reçus sur la map. Donc : Ajouter une fonction pour l' XP reçuHistoire de respecter un peu les règles, mon projet en cours est : Enfer et Paradis (mais qui ne le savait pas ?)Voici le script en question (de Blockade) : - Spoiler:
- Code:
-
#=============================================================== # ● [VX] Afficher les objets trouvés/reçu sur la map #-------------------------------------------------------------- # ● Par Blockade # ● http://rpg-maker-vx.bbactif.com/forum.htm # ● Crée le 07/06/2009 # ● Version 1.0 # ● Remerciment à Khai ( http://ktbanh.wordpress.com/) #-------------------------------------------------------------- # ● Notes de version : # ~ v 1.0 # - Sortie du script #-------------------------------------------------------------- # ● Fonctionnalités (v 1.0) # - Affiche une fenêtre avec les objets obtenu # - Gestion des gains multiples # - Adaptable en fonction des situations #-------------------------------------------------------------- # ● Installation : # Insérez le script au dessus de main & jetez un coup # d'œil au module de configuration #-------------------------------------------------------------- # ● Utilisation # >> Dans le cas d'un butin simple (1 seul objet) # Dans l'event, selectioner "Appel de script", et mettre : # gain(type,index,num,lieu) # Type = Le type de l'objet (1 : Objets / 2 : Armes / 3 : Armures / 4 : Gils) # Index = L'ID de l'objet obtenu (0 en cas de gils) /!\ Il faut mettre un 0 ou un autre chiffre, en cas de gils, # et ne sourtout pas mettre gain(4,123) ou gain(4,123,1) # les arguments num (et lieu) seraient décalé et le script # ne comprendrais pas. # Num = La quantité d'objets/gils reçus # # /!\ Lieu est facultatif, pour les données affiché par défaut voir le module de configuration # Lieu = Le lieu d'où le script est appelé. Il peut s'agir de différentes situation, si il est appelé d'un # coffre par exemple, le texte d'intitulé changera en "Butin trouvé", si un PNJ les donnes alors il # affichera "Butin reçu". Les textes et son sont changeables dans le module de configuration. # Par défaut on trouve : # - Rien : Texte par défaut # - 1 : Coffre # - 2 : PNJ # - 3 : Autres # /!\ Ce sont les utilisation par défaut, vous pouvez très bien modifier ! Il suffit de modifier # dans le module de configuration les valeurs des textes et sons ! # => Pour ceux qui s'y connaissent un peu en script, il peuvent rajouter des options, cherchez la méthode : # def set_text(lieu) (~ ligne 273) et modifiez le case comme ceci : # case lieu #~ when 0 # Par défaut #~ title = "Butin" #~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_defaut}", Config_Contenu::Volume_defaut, Config_Contenu::Tempo_defaut) if Config_Contenu::Musique_defaut #~ when 1 # Coffre #~ title = Config_Contenu::Text_coffre #~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_coffre}", Config_Contenu::Volume_coffre, Config_Contenu::Tempo_coffre) if Config_Contenu::Musique_coffre #~ when 2 # PNJ #~ title = Config_Contenu::Text_pnj #~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_pnj}", Config_Contenu::Volume_pnj, Config_Contenu::Tempo_pnj) if Config_Contenu::Musique_pnj #~ when 3 # Recu (Autres coffre/PNJ) #~ title = Config_Contenu::Text_autre #~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_autre}",Config_Contenu::Volume_autres, Config_Contenu::Tempo_autres) if Config_Contenu::Musique_coffre #~ when x # title = "Votre texte" # Audio.se_play("Audio/SE/nom_de_votre_se",volume_du_se, tempo_du_se) # end # => Ou x est le nombre pour appeler votre option, et nom_de_votre_se & volume_du_se & tempo_du_se sont explicites # # Exemple : gain(1,5,7,2) va donner l'objet (1) Ether (qui a pour ID 5) en 7 exemplaire avec l'option 1 (Coffre, par défaut) # # >> Dans le cas d'un butin multiples (> 1 seul objet) # Ce sont exactement les même réglages sauf que si vous voulez donner un ether x6 et une massue x1 avec option PNJ # gain([1,2], [5,1] , [6,1] , 2) # type index num lieu # C'est le même fonctionement sauf sous forme de tableau ! # /!\ Attention il ne peut pas avoir plusieurs options de lieu. #===============================================================
#=============================================================== # Début de la configuration module Config_Contenu #------------------------------------------ # >> Configuration des textes #------------------------------------------ Text_gain_gold = "Gils obtenus" # Texte affiché avant la quantité d'argent obtenu Text_quantite = "x" # Texte situé avant la quantité d'objet gagné
#------------------------------------------ # >> Configuration des graphiques #------------------------------------------ Update_spiriteset = true # Continuer à faire bouger les autotitles lors de l'apparition de la fenêtre (L'eau par exemple) Update_event = false # Continuer à exécuter les events
#------------------------------------------ # >> Configuration des icones #------------------------------------------ Icone_argent = 85 # L'ID de l'icône affichée pour l'argent
#------------------------------------------ # >> Configuration du titre affiché #------------------------------------------ # > Par défaut Text_defaut = "Butin" # Texte affiché par défaut lors de l'obtention d'un butin Musique_defaut = true # Jouer le SE ? (par défaut) SE_defaut = "Saint5" # Le SE joué par défaut lors de l'obtention d'un butin Volume_defaut = 100 # Le volume du SE joué par défaut Tempo_defaut = 100 # Le tempo du SE joué par défaut
# > Un coffre (Lieu = 1) Text_coffre = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 1) Musique_coffre = true # Jouer le SE ? (Lieu = 1) SE_coffre = "Chest" # Le SE joué lors de l'obtention d'un butin (Lieu = 1) Volume_coffre= 100 # Le volume du SE joué (Lieu = 1) Tempo_coffre = 100 # Le tempo du SE joué (Lieu = 1)
# > Un PNJ (Lieu = 2) Text_pnj = "Butin reçu" # Texte affiché lors de l'obtention d'un butin (Lieu = 2) Musique_pnj = true # Jouer le SE ? (Lieu = 2) SE_pnj = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 2) Volume_pnj = 100 # Le volume du SE joué (Lieu = 2) Tempo_pnj = 100 # Le tempo du SE joué (Lieu = 2 )
# > Autres (Objet caché...) (Lieu = 3) Text_autre = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 3) Musique_autre = true # Jouer le SE ? (Lieu = 3) SE_autre = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 3) Volume_autre = 100 # Le volume du SE joué (Lieu = 3) Tempo_autre = 100 # Le tempo du SE joué (Lieu = 3)
end # Fin de la configuration #===============================================================
#-------------------------------------------------------------------------- # * Méthode qui appelle la scene # type : 1 : Objets / 2 : Armes / 3 : Armures / 4 : Gils # index : L'ID de l'objet obtenu (0 en cas de gils) # num : Le nombre d'objets/gils obtenus # lieu : texte de description (facultatif) #-------------------------------------------------------------------------- def gain(type,index,num,lieu=0) $scene = Scene_Contenu.new(type,index,num,lieu) end
#============================================================================== # ** Scene_Contenu #------------------------------------------------------------------------------ # La classe qui gère les fenêtres de contenu de coffre #============================================================================== class Scene_Contenu < Scene_Base #-------------------------------------------------------------------------- # * Initialize #-------------------------------------------------------------------------- def initialize(type,index,num,lieu) @type = type ; @index = index @num = num ; @lieu = lieu @spriteset = Spriteset_Map.new @gain_multiples = (@type.is_a?(Array)? true : false) donner_butin afficher_fenetres ajuster_position_fenetres afficher_texte end #-------------------------------------------------------------------------- # * Donne le butin gagné #-------------------------------------------------------------------------- def donner_butin if @gain_multiples for i in 0...@type.size case @type[i] when 1 $game_party.gain_item($data_items[@index[i]], @num[i]) when 2 $game_party.gain_item($data_weapons[@index[i]], @num[i]) when 3 $game_party.gain_item($data_armors[@index[i]], @num[i]) when 4 $game_party.gain_gold(@num[i]) end end else case @type when 1 $game_party.gain_item($data_items[@index], @num) when 2 $game_party.gain_item($data_weapons[@index], @num) when 3 $game_party.gain_item($data_armors[@index], @num) when 4 $game_party.gain_gold(@num) end end end #-------------------------------------------------------------------------- # * Affiche les fenêtres de butin #-------------------------------------------------------------------------- def afficher_fenetres @window_lieu = Window_Lieu.new @window_butin = Window_Butin.new(@type) end #-------------------------------------------------------------------------- # * Centre les fenêtre sur l'écran #-------------------------------------------------------------------------- def ajuster_position_fenetres @window_lieu.x=(544-@window_lieu.width)/2 @window_butin.x = (544-@window_butin.width)/2 if @gain_multiples @window_lieu.y = (416-@window_lieu.height-@window_butin.height)/2 @window_butin.y = @window_lieu.y + @window_butin.height-25*(@type.size-1) else @window_lieu.y=(416-@window_lieu.height-@window_butin.height)/2 @window_butin.y =(416-@window_lieu.height+@window_butin.height)/2 end end
#-------------------------------------------------------------------------- # * Affiche le texte voulu #-------------------------------------------------------------------------- def afficher_texte @window_lieu.set_text(@lieu) if @gain_multiples y = 0 for i in 0...@type.size argent = false case @type[i] when 1 nom = $data_items[@index[i]].name icone = $data_items[@index[i]].icon_index when 2 nom = $data_weapons[@index[i]].name icone = $data_weapons[@index[i]].icon_index when 3 nom = $data_armors[@index[i]].name icone = $data_armors[@index[i]].icon_index when 4 nom = Config_Contenu::Text_gain_gold icone = Config_Contenu::Icone_argent argent = true end @window_butin.set_gain(0,y,nom,icone,@num[i],argent) y += 25 end else argent = false case @type when 1 nom = $data_items[@index].name icone = $data_items[@index].icon_index when 2 nom = $data_weapons[@index].name icone = $data_weapons[@index].icon_index when 3 nom = $data_armors[@index].name icone = $data_armors[@index].icon_index when 4 nom = Config_Contenu::Text_gain_gold icone = Config_Contenu::Icone_argent argent = true end @window_butin.set_gain(0,0,nom,icone,@num,argent) end end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update @spriteset.update if Config_Contenu::Update_spiriteset $game_map.update if Config_Contenu::Update_event $scene = Scene_Map.new if Input.trigger?(Input::B) or Input.trigger?(Input::C) end #-------------------------------------------------------------------------- # * Termine la scene #-------------------------------------------------------------------------- def terminate @spriteset.dispose @window_lieu.dispose @window_butin.dispose end end #============================================================================== # ** Window_Lieu #------------------------------------------------------------------------------ # La fenêtre qui gère le titre général du butin obtenu #============================================================================== class Window_Lieu < Window_Base #-------------------------------------------------------------------------- # * Initialize #-------------------------------------------------------------------------- def initialize super(0,0,250,56) end #-------------------------------------------------------------------------- # * Affiche le texte dans la fenêtre (/!\ Personalisable) #-------------------------------------------------------------------------- def set_text(lieu) case lieu when 0 # Par défaut title = "Butin" Audio.se_play("Audio/SE/#{Config_Contenu::SE_defaut}", Config_Contenu::Volume_defaut, Config_Contenu::Tempo_defaut) if Config_Contenu::Musique_defaut when 1 # Coffre title = Config_Contenu::Text_coffre Audio.se_play("Audio/SE/#{Config_Contenu::SE_coffre}", Config_Contenu::Volume_coffre, Config_Contenu::Tempo_coffre) if Config_Contenu::Musique_coffre when 2 # PNJ title = Config_Contenu::Text_pnj Audio.se_play("Audio/SE/#{Config_Contenu::SE_pnj}", Config_Contenu::Volume_pnj, Config_Contenu::Tempo_pnj) if Config_Contenu::Musique_pnj when 3 # Recu (Autres coffre/PNJ) title = Config_Contenu::Text_autre Audio.se_play("Audio/SE/#{Config_Contenu::SE_autre}",Config_Contenu::Volume_autre, Config_Contenu::Tempo_autre) if Config_Contenu::Musique_coffre end self.contents.draw_text(0,0,contents.width,WLH,title,1) end end
#============================================================================== # ** Window_Butin #------------------------------------------------------------------------------ # La fenêtre qui gère les objets obtenus #============================================================================== class Window_Butin < Window_Base #-------------------------------------------------------------------------- # * Initialize #-------------------------------------------------------------------------- def initialize(type) if type.is_a?(Array) super(0,0,250,56 + 25*(type.size-1)) else super(0,0,250,56) end end #-------------------------------------------------------------------------- # * Affiche les objets/gils gagnés #-------------------------------------------------------------------------- def set_gain(x,y,butin,icone,num,argent) @num = num draw_icon(icone,x,y) self.contents.draw_text(x+25,y,150,WLH,butin) if argent self.contents.draw_text(x,y,contents.width,WLH,@num,2) else self.contents.draw_text(x,y,contents.width,WLH,Config_Contenu::Text_quantite + @num.to_s,2) end end end
Voilà, si c'est possible, merci à tout qui m'aideront ! Zodiak EDIT : Petite modif' > script de Blockade et non de ASHKA ^^
Dernière édition par Zodiak le Mar 13 Avr 2010 - 10:09, édité 1 fois |
|
Citadin Lv.7
Age : 38 Inscrit le : 12/02/2010 Messages : 204
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 17:20 | |
| Tite précision tu le gagne comment ton xp sur la map, dans des coffres ? O.o |
|
Seigneur Lv.18
Age : 29 Avertissements : 3 Inscrit le : 20/12/2008 Messages : 2292
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 17:29 | |
| Non, par des PNJs ^^ Après avoir fait une quête, ou avoir rendu service par exemple. |
|
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 18:16 | |
| Développe un peu ton idée. Tu veux qu'on puisse afficher l'expérience recue dans une fenêtre de ce genre ? Par une quête par exemple ? |
|
Seigneur Lv.18
Age : 29 Avertissements : 3 Inscrit le : 20/12/2008 Messages : 2292
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 19:04 | |
| Oui, c'est ça Alors, je m'explique : ->On termine une quête quelconque -> PNJ : "Ah merci, de t'être donné du mal pour moi !" ->Récompense : +30XPJ'aimerais que ce "30XP" soit inscrit aussi dans une fenêtre dans le même genre que pour les objets, armes, armures et argent. Exemple : Butin 1000G 1 épée 30XP J'espère que c'est plus clair ^^ EDIT : Comme rien ne vaut un screen : |
|
Age : 134 Inscrit le : 14/04/2009 Messages : 1321
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Lun 12 Avr 2010 - 20:19 | |
| Mais... Et si tu affichais seulement une image t'indiquant le Gain, comme tu nous l'as montré? Bon, evidemment, ça peut prendre de la palce à la longue, mais pas tant que ça. Qu'en dis-tu?
Arty' |
|
Seigneur Lv.18
Age : 29 Avertissements : 3 Inscrit le : 20/12/2008 Messages : 2292
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Mar 13 Avr 2010 - 9:16 | |
| Super ^^ Sauf qu'il y a une erreur >.> -Voilà mon appel de script gain(5,0,5)-Le message d'erreur : -Le passage dans le script : - Spoiler:
- Code:
-
#-------------------------------------------------------------------------- # * Donne le butin gagné #-------------------------------------------------------------------------- def donner_butin if @gain_multiples for i in 0...@type.size case @type[i] when 1 $game_party.gain_item($data_items[@index[i]], @num[i]) when 2 $game_party.gain_item($data_weapons[@index[i]], @num[i]) when 3 $game_party.gain_item($data_armors[@index[i]], @num[i]) when 4 $game_party.gain_gold(@num[i]) when 5 if @index[i] == 0 $game_party.members.each{|member| member.change_exp(member.exp + @num[i],Config_Contenu::Afficher_level_up) } else actor = $game_actors[@index[i]] actor.change_exp(actor.exp + @num[i],Config_Contenu::Afficher_level_up) end end end else case @type when 1 $game_party.gain_item($data_items[@index], @num) when 2 $game_party.gain_item($data_weapons[@index], @num) when 3 $game_party.gain_item($data_armors[@index], @num) when 4 $game_party.gain_gold(@num) when 5 if @index[i] == 0 $game_party.members.each{|member| member.change_exp(member.exp + @num,Config_Contenu::Afficher_level_up) } else actor = $game_actors[@index] actor.change_exp(actor.exp + @num,Config_Contenu::Afficher_level_up) end end end end
-Voilà la ligne précise : - Code:
-
if @index[i] == 0 |
|
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Mar 13 Avr 2010 - 10:04 | |
| Ma faute désolée =( Repère ces lignes : - Code:
-
when 4 $game_party.gain_gold(@num) when 5 if @index[i] == 0 Remplace par : - Code:
-
when 4 $game_party.gain_gold(@num) when 5 if @index == 0 |
|
Seigneur Lv.18
Age : 29 Avertissements : 3 Inscrit le : 20/12/2008 Messages : 2292
| Sujet: Re: Ajout d'une fonction pour le script de pop-up pour un gain Mar 13 Avr 2010 - 10:09 | |
| Parfait, ça marche à merveille ! Merci Blockade =) |
|