| [XP] Objet et event commun[RESOLU] | |
|
|
Auteur | Message |
---|
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 5:37 | |
| Bonsoir
En fait j'aimerais savoir si il y a un moyen quelconque pour faire en sorte que que j'utilise un objet qui appel un event commun et que dans cet event je fais apparaître un message, et ben que cette fenêtre apparaissent dans le menu et non un retour à la map puis le message.
Ou à défaut de faire apparaître une image dans le menu aussi xD
Voila voila
cordialement |
|
| |
Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 9:17 | |
| Les event commun ne marche pas dans le menu. |
|
| |
Stolas Chevalier Dragon (niveau 1)
Messages postés : 728 Date d'inscription : 02/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 10:13 | |
| Sauf si le menu est fait en event nan ? x) |
|
| |
lidenvice Ancien staffeux
Messages postés : 1955 Date d'inscription : 18/10/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 10:19 | |
| Quand on utilise un objet qui fait appel à un evenement commun, le menu se ferme et l'evenement commun se met en marche, donc tout dépend de ce que tu souhaites faire en fait. Si le but est que quand tu utilises un objet, il y ai un message: Bidule a utilisé l'objet machin sans que le menu se ferme et cela depuis le menu carte, en effet en event c'est pas possible à ma connaissance sans une seule ligne de script.
Après, c'est possible si on passe le côté contrainte: Si ca te gène pas que le menu se ferme à l'utilisation d'un objet depuis le menu carte(perso j'aime bien), tu peux utiliser la technique oui. Après depuis menu carte, le souci c'est qu'on a pas de moyen event pur pour détecter qui donne quoi à qui.
Depuis menu combat c'est possible mais avec un système de condition plutôt contraignant quand même.
Ca explique entres autres pourquoi il est souvent préférable d'avoir soit un script adapté, soit de faire son propre système event, permettant ainsi d’élargir les possibilités d'origine. Ou, evidement, faire avec les possibilités proposées qui sont quand même honorables. |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 11:55 | |
| Dans l'état actuel de rmxp, on ne peut pas voir apparaître le message hors des maps. Je viens juste de coder un truc pour des messages un peu partout mais ce n'est pas encore testé et ça demanderait de refaire la moitié des scripts... De plus, ça demanderait de lancer le message à partir d'un script, donc c'est vraiment lourd à gérer (pas d'events dans les menus)...
Il vaut mieux que tu tentes un menu par événement ou que tu trouves un autre moyen d'arriver à ton objectif.
|
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 21:10 | |
| En fait ce que je cherche à faire c'est par exemple quand je clique sur un objet clé une image ou un texte apparaît avec une petite description, comme une lettre par exemple avec le contenue de la lettre. |
|
| |
Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 22:25 | |
| Oui on a compris et on te dis que c'pas possible en event. |
|
| |
Invité Invité
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 23:14 | |
| Ce ne serait pas possible en créant un simulacre de Message différent ? |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 23:22 | |
| Tu dois utiliser un script, c'est le seul moyen. Je peux te le faire si tu veux. Tu utilises le menu d'objets de base ? |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 28 Mar 2012 - 23:42 | |
| j'utilise celui qui classe les objets ci-dessous - Code:
-
#============================================================================== # Objets trié par onglets #---------------------------------- # Script de Sunabozu # Ce script permet de trier les objets par onglet. # Merci de ne pas distribuer ce script sans ma permission. # Si vous avez un probleme, contactez moi sur RPG Creative. #------------------------------------------------------------------------------ # ● Mode d'emploi : # ● 1) Pour créer un onglet il faudra créer un nouvel élément dans la base de donnée # contenant le symbole $ et portant le nom de l'onglet # Exemple : Créer l'élément "$Objet" ou encore "$Trésor" # ● 2) Ensuite tout les objets, armes ou armures devant s'afficher dans cet # onglet devra avoir l'élément crée de coché # ● 3) Seul les objets consommables seront affichés en combat # ● 4) Si aucun élément n'est coché l'objet sera affiché en combat uniquement #======================================================================== # class Window_Command_Item # affiche les onglets #======================================================================== class Window_Command_Item < Window_Selectable #---------------------------------------------------------------------------------------------------------------- def initialize super(0, 64, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize # initialisation des tableaux @commands = [] # nom des onglets @commands_id = [] # id de l'attribut for i in 0...$data_system.elements.size # clonage d'une case du tableau contenant les éléments tableau_element = $data_system.elements[i].clone # si le mot contient la lettre $ if tableau_element.include?("$") # on remplace $ par rien (on supprime) tableau_element["$"] = "" # ajout de l'element sans le $ au tableau @commands[i] = tableau_element # ajout de l'id de l'element dans le tableau @commands_id[i] = i end end # compactage des tableaux (supression espace vide) @commands.compact! @commands_id.compact! @item_max = @commands.size @column_max = @commands.size refresh self.index = 0 end #---------------------------------------------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max draw_item(i) end end #---------------------------------------------------------------------------------------------------------------- def draw_item(index) x = 4 + index * ((640)/@item_max) w = self.width / @column_max - 32 self.contents.draw_text(x, 0, w-4, 32, @commands[index]) end #---------------------------------------------------------------------------------------------------------------- def commands return @commands end #---------------------------------------------------------------------------------------------------------------- def commands_id return @commands_id end end
#======================================================================== # class Window_Item # affiche les objets #======================================================================== class Window_Item < Window_Selectable #---------------------------------------------------------------------------------------------------------------- def initialize(id=0) super(0, 128, 640, 352) @column_max = 2 self.index = 0 # If in battle, move window to center of screen # and make it semi-transparent if $game_temp.in_battle self.y = 64 self.height = 256 self.back_opacity = 160 end refresh(id) end #---------------------------------------------------------------------------------------------------------------- def refresh(id=0) #----------------------------------------------------------- if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if ($game_party.item_number(i) > 0 and $data_items[i].element_set.include?(id)) or ($game_party.item_number(i) > 0 and $game_temp.in_battle) @data.push($data_items[i]) end end unless $game_temp.in_battle for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and $data_weapons[i].element_set.include?(id) @data.push($data_weapons[i]) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and $data_armors[i].guard_element_set.include?(id) @data.push($data_armors[i]) end end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end
end # class end
#======================================================================== # class Scene_Item #======================================================================== class Scene_Item #---------------------------------------------------------------------------------------------------------------- def main #----------------------------------------------------------- @help_window = Window_Help.new @command_window = Window_Command_Item.new @item_window = Window_Item.new(@command_window.commands_id[@command_window.index]) @item_window.help_window = @help_window @help_window.set_text("") @target_window = Window_Target.new #----------------------------------------------------------- @command_window.active = true @command_window.visible = true @item_window.active = false @target_window.visible = false @target_window.active = false #----------------------------------------------------------- Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze #----------------------------------------------------------- @help_window.dispose @item_window.dispose @target_window.dispose @command_window.dispose end #---------------------------------------------------------------------------------------------------------------- def update #----------------------------------------------------------- @item_window.update @target_window.update @command_window.update #----------------------------------------------------------- if @item_window.active update_item return end #----------------------------------------------------------- if @target_window.active update_target return end #----------------------------------------------------------- if @command_window.active update_command return end end #---------------------------------------------------------------------------------------------------------------- def update_item #----------------------------------------------------------- @help_window.update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @command_window.visible = true @item_window.active = false @item_window.index = 0 @help_window.set_text("") return end #----------------------------------------------------------- if Input.trigger?(Input::C) @item = @item_window.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) #----------------------------------------------------------- if @item.consumable $game_party.lose_item(@item.id, 1) @item_window.draw_item(@item_window.index) end $scene = Scene_Map.new return end end return end end #---------------------------------------------------------------------------------------------------------------- def update_command if Input.trigger?(Input::LEFT) or Input.trigger?(Input::RIGHT) @item_window.refresh(@command_window.commands_id[@command_window.index]) end #----------------------------------------------------------- if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end #----------------------------------------------------------- if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) @item_window.active = true @command_window.active = false return end end
#---------------------------------------------------------------------------------------------------------------- def update_target # If B button was pressed if Input.trigger?(Input::B) # Play cancel SE $game_system.se_play($data_system.cancel_se) # If unable to use because items ran out unless $game_party.item_can_use?(@item.id) # Remake item window contents @item_window.refresh(@command_window.commands_id[@command_window.index]) end # Erase target window @item_window.active = true @target_window.visible = false @target_window.active = false return end # If C button was pressed if Input.trigger?(Input::C) # If items are used up if $game_party.item_number(@item.id) == 0 # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # If target is all if @target_window.index == -1 # Apply item effects to entire party used = false for i in $game_party.actors used |= i.item_effect(@item) end end # If single target if @target_window.index >= 0 # Apply item use effects to target actor target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end # If an item was used if used # Play item use SE $game_system.se_play(@item.menu_se) # If consumable if @item.consumable # Decrease used items by 1 $game_party.lose_item(@item.id, 1) # Redraw item window item @item_window.draw_item(@item_window.index) end # Remake target window contents @target_window.refresh # If all party members are dead if $game_party.all_dead? # Switch to game over screen $scene = Scene_Gameover.new return end # If common event ID is valid if @item.common_event_id > 0 # Common event call reservation $game_temp.common_event_id = @item.common_event_id # Switch to map screen $scene = Scene_Map.new return end end # If item wasn't used unless used # Play buzzer SE $game_system.se_play($data_system.buzzer_se) end return end end ######### FIN DE CLASSE ######################################## end |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 0:17 | |
| Les objets ne seront pas utilisables du menu (en gros, j'utilise la touche valider) ? |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 3:30 | |
| - Siegfried a écrit:
- Les objets ne seront pas utilisables du menu (en gros, j'utilise la touche valider) ?
Heu c'est à dire ? |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 7:31 | |
| Pour afficher le contenu de la lettre, c'est comme si on utilisait l'objet, c'est la même touche ? Si oui, c'est pour des objets impossibles à utiliser normalement du menu, non ? |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 8:03 | |
| en utilisant la touche action oui, après inutilisable ça dépend.
En gros la lettre de base serait inutilisable (ou plutôt non consommable ?)
Et dans mon projet j'ai un objet qui à l'utilisation(menu uniquement) me donne un nombre de point définit dans une variable.
Et que quand je consomme celui-ci : 1-les points sont donnés normalement 2-un texte ou une image m'indiquent que j'obtient les points(sans revenir sur la map)
Parce que quand on à un grand nombre de cette objet, c'est assez chiant de revenir à chaque fois dans le menu. |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 12:16 | |
| Et voilà. C'était plus subtil que ce que je pensais au départ mais ça marche. Tu configures le message dans la liste, comme indiqué dans le script. Il apparaît si l'objet est utilisé (comme une potion par exemple) ou si tu crées un objet utilisable, sans aucun effet et sans aucune cible (le message apparaît si on appuie sur Valider). Tu ajoutes le script et ça devrait marcher. - Code:
-
#============================================================================== # ■ Item Message #------------------------------------------------------------------------------ # Message lors de l'utilisation d'un objet #------------------------------------------------------------------------------ # Par Siegfried #------------------------------------------------------------------------------ # Le message apparaît si : # -Il existe dans la liste # -Si l'objet est utilisé sur un ou plusieurs membres de l'équipe # -Si l'objet est utilisable dans le menu, mais sans aucune cible prévue #==============================================================================
#============================================================================== # ■ Item_Message_Config #============================================================================== module Item_Message_Config # Descriptions # ID => ["ligne 1", "ligne 2", etc...], LIST = { 1 => ["Rien d'autre qu'une potion."], 31 => [ "Ceci est une carte à jouer utilisée jadis par des collégiens", "incapables de trouver mieux à faire à la récré depuis", "qu'ils ne jouaient plus au loup." ], } end
#============================================================================== # □ Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ○ Lose_item #-------------------------------------------------------------------------- alias item_text_lose_item lose_item def lose_item(item_id, n) if $scene.is_a?(Scene_Item) $scene.show_item_message_window end item_text_lose_item(item_id, n) end end
#============================================================================== # □ Scene_Item #============================================================================== class Scene_Item #-------------------------------------------------------------------------- # ○ Main #-------------------------------------------------------------------------- alias item_message_main main def main @item_message_window = Item_Message_Window.new item_message_main @item_message_window.dispose end #-------------------------------------------------------------------------- # ○ Update #-------------------------------------------------------------------------- alias item_message_update update def update if @item_message_window.visible if Input.trigger?(Input::C) or Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @item_message_window.visible = false return end return end item_message_update end #-------------------------------------------------------------------------- # ○ Update_item #-------------------------------------------------------------------------- alias item_message_update_item update_item def update_item item = @item_window.item if item != nil and $game_party.item_can_use?(item.id) and item.scope == 0 and [0, 2].include?(item.occasion) if Input.trigger?(Input::C) if item.consumable $game_party.lose_item(item.id, 1) @item_window.draw_item(@item_window.index) else show_item_message_window end return end end item_message_update_item end #-------------------------------------------------------------------------- # ● Show_item_message_window #-------------------------------------------------------------------------- def show_item_message_window $game_system.se_play($data_system.decision_se) table = Item_Message_Config::LIST[@item_window.item.id] if table != nil @item_message_window.set_text(table) @item_message_window.x = 320 - @item_message_window.width / 2 @item_message_window.y = 240 - @item_message_window.height / 2 @item_message_window.visible = true end end end
#============================================================================== # ■ Item_Message_Window #============================================================================== class Item_Message_Window < Window_Base #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 580, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize self.z = 1000 self.visible = false @text = [] refresh end #-------------------------------------------------------------------------- # ● Set_text #-------------------------------------------------------------------------- def set_text(table) self.height = 32 * (table.size + 1) self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @text = table refresh end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@text.size w = self.contents.width self.contents.draw_text(0, i * 32, w, 32, @text[i]) end end end
Dernière édition par Siegfried le Jeu 29 Mar 2012 - 13:41, édité 1 fois |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 12:38 | |
| ça marche nikel, je te remercie grandement pour ton aide, c'est rare de nos jour un scripteur qui créer un script de A à Z simplement pour aider xD
Bref merci à toi.
EDIT : je viens juste de remarquer, c'est normal que même si l'objet est regler sur consommable, quand je l'utilise et bien il ne me le consomme pas ? |
|
| |
Invité Invité
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 13:31 | |
| Je t"ajoute 2 points Siegfried, merci pour ton aide. |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Jeu 29 Mar 2012 - 13:45 | |
| Salut, j'ai corrigé le script. C'était un bug de rmxp que je n'avais jamais remarqué, et je pense que c'est surtout parce que je n'avais jamais vraiment utilisé un objet sans événement commun. En gros, si on mettait "Consommable" sans configurer de cible ni d'événement commun, c'est comme si on utilisait l'objet dans le vide. C'est corrigé dans mon précédent message, il faudra que je songe à corriger le script de base de rm un jour... Bonne utilisation. PS : tu peux mettre autant de lignes que tu veux, la fenêtre s'adapte. Il faut juste éviter d'arriver à 50, la fenêtre devient plus haute que l'écran. PPS : tu as de la chance que je vienne juste de recoder mon menu d'objets, j'étais dans le bain depuis deux jours et comme je passais par là... |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Ven 30 Mar 2012 - 1:11 | |
| j'ai remarquer un autre petit soucis.
J'ai créer un objet consommable qui appel un event commun, dans cet event il y a variable 50 =+ 2
J'ai configurer le message dans le script et tout.
Mais quand je vais pour utiliser l'objet celui-ci me ramène sur la map(mais me donne bien les points). |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Ven 30 Mar 2012 - 1:31 | |
| Dans Scene_Item, ou pour toi, dans ton script perso pour le menu d'objets, il y a deux lignes : - Code:
-
$scene = Scene_Map.new Remplace-les par : - Code:
-
#$scene = Scene_Map.new Dorénavant, tu ne reviendras plus sur la map, mais je ne sais pas si l'événement commun se déclenchera. Il faut que tu vérifies ça. |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Ven 30 Mar 2012 - 2:29 | |
| ça ne revient plus sur la map mais comme tu l'a dit l’évent ne se déclenche pas. |
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Ven 30 Mar 2012 - 7:37 | |
| Passe-moi l'id de l'objet qui augmente les points ainsi que l'id de la variable augmentée. Je vais te faire un petit ajout personnalisé, mais si tu as d'autres objets du genre, il faudra toujours coder spécialement pour ça. |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Sam 31 Mar 2012 - 5:26 | |
| Désolé pour le retard.
Donc l'ID des Objets sont :
-24 -25 -26
L'Objet augmente les variables : -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008
L'Objet 24 augment chaque variable de 2 L'Objet 25 augment chaque variable de 5 L'Objet 26 augment chaque variable de 10
Voila
|
|
| |
Siegfried Mage (niveau 2)
Messages postés : 286 Date d'inscription : 31/07/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 4 Avr 2012 - 13:27 | |
| Hop, ajoute ce script et dis-moi si ça marche. - Code:
-
#============================================================================== # □ Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ○ Lose_item #-------------------------------------------------------------------------- alias bonus_points_lose_item lose_item def lose_item(item_id, n) if $scene.is_a?(Scene_Item) case item_id when 24 for i in 2001...2008 $game_variables[i] += 2 end when 25 for i in 2001...2008 $game_variables[i] += 5 end when 26 for i in 2001...2008 $game_variables[i] += 10 end end end bonus_points_lose_item(item_id, n) end end Et au passage, une légère correction sonore pour le script précédent : - Code:
-
#============================================================================== # ■ Item Message #------------------------------------------------------------------------------ # Message lors de l'utilisation d'un objet #------------------------------------------------------------------------------ # Par Siegfried #------------------------------------------------------------------------------ # Le message apparaît si : # -Il existe dans la liste # -Si l'objet est utilisé sur un ou plusieurs membres de l'équipe # -Si l'objet est utilisable dans le menu, mais sans aucune cible prévue #==============================================================================
#============================================================================== # ■ Item_Message_Config #============================================================================== module Item_Message_Config # Descriptions # ID => ["ligne 1", "ligne 2", etc...], LIST = { 1 => ["Rien d'autre qu'une potion."], 31 => [ "Ceci est une carte à jouer utilisée jadis par des collégiens", "incapables de trouver mieux à faire à la récré depuis", "qu'ils ne jouaient plus au loup." ], } end
#============================================================================== # □ Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ○ Lose_item #-------------------------------------------------------------------------- alias item_text_lose_item lose_item def lose_item(item_id, n) if $scene.is_a?(Scene_Item) $scene.show_item_message_window end item_text_lose_item(item_id, n) end end
#============================================================================== # □ Scene_Item #============================================================================== class Scene_Item #-------------------------------------------------------------------------- # ○ Main #-------------------------------------------------------------------------- alias item_message_main main def main @item_message_window = Item_Message_Window.new item_message_main @item_message_window.dispose end #-------------------------------------------------------------------------- # ○ Update #-------------------------------------------------------------------------- alias item_message_update update def update if @item_message_window.visible if Input.trigger?(Input::C) or Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @item_message_window.visible = false return end return end item_message_update end #-------------------------------------------------------------------------- # ○ Update_item #-------------------------------------------------------------------------- alias item_message_update_item update_item def update_item item = @item_window.item if item != nil and $game_party.item_can_use?(item.id) and item.scope == 0 and [0, 2].include?(item.occasion) if Input.trigger?(Input::C) if item.consumable $game_party.lose_item(item.id, 1) @item_window.draw_item(@item_window.index) else show_item_message_window end return end end item_message_update_item end #-------------------------------------------------------------------------- # ● Show_item_message_window #-------------------------------------------------------------------------- def show_item_message_window table = Item_Message_Config::LIST[@item_window.item.id] if table != nil $game_system.se_play($data_system.decision_se) @item_message_window.set_text(table) @item_message_window.x = 320 - @item_message_window.width / 2 @item_message_window.y = 240 - @item_message_window.height / 2 @item_message_window.visible = true end end end
#============================================================================== # ■ Item_Message_Window #============================================================================== class Item_Message_Window < Window_Base #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize super(0, 0, 580, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize self.z = 1000 self.visible = false @text = [] refresh end #-------------------------------------------------------------------------- # ● Set_text #-------------------------------------------------------------------------- def set_text(table) self.height = 32 * (table.size + 1) self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @text = table refresh end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@text.size w = self.contents.width self.contents.draw_text(0, i * 32, w, 32, @text[i]) end end end |
|
| |
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: [XP] Objet et event commun[RESOLU] Mer 4 Avr 2012 - 20:23 | |
| ça marche nikel.
Un grand merci pour ton aide Siegfried.
Cordialement |
|
| |
Contenu sponsorisé
| Sujet: Re: [XP] Objet et event commun[RESOLU] | |
| |
|
| |
|