Partagez
Aller en bas
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

[résolu] script popup bulle de gain d'exp aprés une quête

le Ven 24 Juin 2011 - 19:11
bonjour

est-ce que quelqu'un pourrait me créer un script simple d'utilisation si possible qui afficherais dans un popup le gain d'exp lorsque l'on rend une quête
il faudrais quel ne soit pas trop grosse et qu'elle n'apparaisse que quelque seconde avant de s'effacer rabbit

merci d'avance a celui qui repondra a ma requete :P


Dernière édition par vincent26 le Lun 27 Juin 2011 - 22:38, édité 1 fois
avatar
dricc
Membre

Nombre de messages : 2753
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Ven 24 Juin 2011 - 19:31
Ah , ça , j'ai !!!

En fait , c'est un script de woratana que j'ai modifié .

Dans ton evenement , utilise "appeler script"
puis met :
$scene.expwin(gain en XP, id du perso (0 pour tous), true/false : message gain niveau ,true/false : ajouter l'xp tout de suite , frames avant de s'effacer)

Accessoirement , ce script gére aussi les gains d'objet et d'or .

Attention : j'ai eu des problemes de compatibilité avec d'autres scripts . A tester !

Code:


#===============================================================
# ● [VX] ◦ Get Item Window ◦ □
# * Show window to tell player what item he/she got~
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 19/12/2008
# ◦ Version: 2.0
#--------------------------------------------------------------
# ● How to Use ●
#--------------------------------------------------------------
# Call Script:
#    $scene.new_itemwin(type, item_ID, quantity, *auto_add_item?, *wait_count)
# * type: 0 for Item, 1 for Weapon, 2 for Armor
# * Item_ID: ID of the item you want to show
# * Quantity: Amount of the item the player got
# * Auto_Add_Item (Optional): Do you want the script to add item for you?
# (Or you can just use event command to add item yourself)
# * Wait_Count (Optional): How long (in frame) the item window will stay on screen?
# (Default is 160 frames)
#--------------------------------------------------------------
# ● Examples ●
#--------------------------------------------------------------
#  $scene.new_itemwin(0, 1, 5)
# ^ The window will show that player got 5 Potions.
#  $scene.new_itemwin(0, 1, 5, true)
# ^ The window will show that player got 5 Potions and also add 5 Potions to
# player's inventory immediately.
#  $scene.new_itemwin(0, 1, 5, false, 100)
# ^ The window will show that player got 5 Potions, but will not add 5 the items
# to player's inventory. The window will stay for 100 frames before dissappear.
#--------------------------------------------------------------
# ● Extra! ●
#--------------------------------------------------------------
# You can put an array in item_ID and the item will give out randomly,
# for example,
#  $scene.new_itemwin(0, [1,2,3], 5, true)
# ^ It will randomly give 5 of Potion/Hi Potion/or Full Potion.
#--------------------------------------------------------------
# Dricc extension
#--------------------------------------------------------------
# traduction en français , si y'a qu'un objet , ne pas mettre de ' * 1'
#  Ajout d'un gain d'or :
#  $scene.goldwin(<gain>, <true/false : ajouter l'or tout de suite> , <frames avant de s'effacer>)
#  $scene.goldwin(100,false,100)
#        => vous met un message "vous avez gagné 100 or" mais vous devez mettre l'or dans l'event
#              puis attend 100 frames avant de s'effacer
#  Ajout d'un gain d'exp :
#  $scene.expwin(<gain>, <id du perso (0 pour tous)>, <true/false : message gain niveau> ,<true/false : ajouter l'xp tout de suite> , <frames avant de s'effacer>)
#  $scene.expwin(100,0,false,100)
#        => vous met un message "vous avez gagné 100 exp" mais vous devez mettre l'exp dans l'event
#              puis attend 100 frames avant de s'effacer
# A noter que le message de gain de niveau ne s'affichera pas si l'xp n'est pas ajouté tout de suite
#===============================================================

class Window_GetItem < Window_Base
 
  def initialize(type, items, quantity, auto_add = false, wait_count = nil)
    super(0,0, 200, WLH + 32)
    self.z = 199
    # Default Wait Count
    wait_count = 160 if wait_count.nil?
    @wait_count = wait_count
    # if random item
    case type
    when 0; dbase = $data_items
    when 1; dbase = $data_weapons
    when 2; dbase = $data_armors
    end
    if items.is_a?(Array)
      items = items[rand(items.size)]
    end
    items = dbase[items]
    # THAI
    # memname = $game_party.members.size == 1 ? $game_party.members[0].name : 'คุณ'
    # text = memname + ' ได้รับ ' + items.name + ' x ' + quantity.to_s
   
    # FRENCH
    if quantity.to_s == 1 then
    text =  ' Vous obtenez : ' + items.name
    else
    text = ' Vous obtenez : ' + items.name + ' x ' + quantity.to_s
    end
 
    # Auto Add Item
    $game_party.gain_item(items, quantity) if auto_add
#print auto_add
    # Calculate Size
    w_w = self.contents.text_size(text).width + 32 + 24 + 8
    w_w = Graphics.width if w_w > Graphics.width
    self.width = w_w
    create_contents
    self.x = (Graphics.width - self.width) / 2
    self.y = (Graphics.height - self.height) / 2
    # Draw Item Data
    draw_icon(items.icon_index, 0, 0)
    self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text)
    @opac_per_sec = (255 / @wait_count) if @wait_count != 0
  end
 
  def update
    if @wait_count > 0
      @wait_count -= 1
      self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
    else
      dispose
    end
  end
 
end
# end classwindow_getitem

class GetItem_Controller
  attr_accessor :data
 
  def initialize
    @data = []
  end

  def update
    @data.each {|d| d.update if !d.nil? and !d.disposed?}
  end
 
  def terminate
    @data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
  end
 
  def create(*args)
    @data.each_index do |i|
      if !@data[i].nil?
        @data[i].dispose if !@data[i].disposed?
        @data[i] = nil
      end
    end
    @data.push (Window_GetItem.new(*args))
  end
end

# ajout dricc : fenetre de gain d'or
class Window_Getgold < Window_Base
 
  def initialize(quantity, auto_add = false, wait_count = nil)
    super(0,0, 200, WLH + 32)
    self.z = 199
    # Default Wait Count
    wait_count = 160 if wait_count.nil?
    @wait_count = wait_count

    # THAI
    # memname = $game_party.members.size == 1 ? $game_party.members[0].name : 'คุณ'
    # text = memname + ' ได้รับ ' + items.name + ' x ' + quantity.to_s
   
    # Tout depend de la monnaie que vous avez choisi ....
    # ici , vous pouvez regler le pluriel
    if quantity.to_s == 1 then
    text = ' Vous obtenez : ' + quantity.to_s + ' ' + Vocab.send ('gold')
    else
    text = ' Vous obtenez : ' + quantity.to_s + ' ' + Vocab.send ('gold')
    end
    # PEUX ETRE MODIFIE
    gold_icon_index1 = 205 # icone pour gain de 1 or (une piece d'or dans l'iconset standard)
    gold_icon_index  = 147 # icone pour gain > 1 or (une bourse d'or dans l'iconset standard)
   
    # Auto Add Item
    $game_party.gain_gold(quantity) if auto_add
    # Calculate Size
    w_w = self.contents.text_size(text).width + 32 + 24 + 8
    w_w = Graphics.width if w_w > Graphics.width
    self.width = w_w
    create_contents
    self.x = (Graphics.width - self.width) / 2
    self.y = (Graphics.height - self.height) / 2
    # Draw Item Data
    if quantity.to_s == 1 then
      draw_icon(gold_icon_index1, 0, 0)
    else
      draw_icon(gold_icon_index, 0, 0)
    end
    self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text)
    @opac_per_sec = (255 / @wait_count) if @wait_count != 0
  end
 
  def update
    if @wait_count > 0
      @wait_count -= 1
      self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
    else
      dispose
    end
  end
 
end
# end classwindow_getitem

class Getgold_Controller
  attr_accessor :data
 
  def initialize
    @data = []
  end

  def update
    @data.each {|d| d.update if !d.nil? and !d.disposed?}
  end
 
  def terminate
    @data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
  end
 
  def create(*args)
    @data.each_index do |i|
      if !@data[i].nil?
        @data[i].dispose if !@data[i].disposed?
        @data[i] = nil
      end
    end
    @data.push (Window_Getgold.new(*args))
  end
end
# fin dricc add gold

# ajout dricc : fenetre de gain d'xp
class Window_Getexp < Window_Base
 
  def initialize(quantity, actor_id , lvlup_mess = true, auto_add = true, wait_count = nil)
    super(0,0, 200, WLH + 32)
    self.z = 199
    # Default Wait Count
    wait_count = 160 if wait_count.nil?
    @wait_count = wait_count

    # Tout depend de la monnaie que vous avez choisi ....
    # ici , vous pouvez relger le pluriel
    if actor_id == 0 then
    text1 = ' L\'equipe obtient ' + quantity.to_s + '  Exp'
    else
    text1 = $game_actor[actor_id].name + '  obtient  '  + quantity.to_s  + '  Exp'
    end
    # PEUX ETRE MODIFIE
    xp_icon_index = 135 # icone pour gain d'xp
    lv_icon_index  = 27 # icone pour gain d'xp avec level up
    nb_level_up = 0
   
    # Auto Add Item
    text2 = ''
    text3 = ''
    text4 = ''
    if auto_add then
      if actor_id ==0 then
        for actor in $game_party.members
          old_level = actor.level
          actor.change_exp(actor.exp + quantity, false)
         
          if old_level != actor.level then
            nb_level_up +=1
            if nb_level_up <=2 then
              text2 = text2 + actor.name + ' Niveau ' + actor.level.to_s + ' '
            else
              if nb_level_up <=4 then
                text3 = text3 + actor.name + ' Niveau  ' + actor.level.to_s + ' '
              else
                    text4 = text4 + actor.name + ' Niveau ' + actor.level.to_s + ' '
                end
            end
          end
          end
        else
          actor = $game_party.members[actor_id]
        actor.change_exp(actor.exp + quantity, false)
      end
    end
    # Calculate Size
    w_w = self.contents.text_size(text1).width + 32 + 24 + 8
    if self.contents.text_size(text2).width > w_w - 32 - 24- 8 then
      w_w = self.contents.text_size(text2).width + 32 + 24 + 8
    end
    if self.contents.text_size(text3).width > w_w - 32 - 24- 8 then
      w_w = self.contents.text_size(text3).width + 32 + 24 + 8
    end
    if self.contents.text_size(text4).width > w_w - 32 - 24- 8 then
      w_w = self.contents.text_size(text4).width + 32 + 24 + 8
    end
    w_w = Graphics.width if w_w > Graphics.width
    self.width = w_w
    self.height = self.height + 24 if text2 != nil
    self.height = self.height + 24 if text3 != nil
    self.height = self.height + 24 if text4 != nil
    create_contents
    self.x = (Graphics.width - self.width) / 2
    self.y = (Graphics.height - self.height) / 2
    # Draw Item Data
    if nb_level_up > 0 then
      draw_icon(lv_icon_index, 0, 0)
    else
      draw_icon(xp_icon_index, 0, 0)
    end
    self.contents.draw_text(24 + 8, 0, self.contents.width, WLH, text1)
    if text2 != nil then
      self.contents.draw_text(24 + 8, 24, self.contents.width, WLH, text2)
    end
    if text3 != nil then
      self.contents.draw_text(24 + 8, 48, self.contents.width, WLH, text3)
    end
    if text4 != nil then
      self.contents.draw_text(24 + 8, 72, self.contents.width, WLH, text4)
    end
    @opac_per_sec = (255 / @wait_count) if @wait_count != 0
  end
 
  def update
    if @wait_count > 0
      @wait_count -= 1
      self.opacity -= @opac_per_sec if !@opac_per_sec.nil?
    else
      dispose
    end
  end
 
end
# end classwindow_getitem

class Getexp_Controller
  attr_accessor :data
 
  def initialize
    @data = []
  end

  def update
    @data.each {|d| d.update if !d.nil? and !d.disposed?}
  end
 
  def terminate
    @data.each {|d| d.dispose if (!d.nil? and !d.disposed?) }
  end
 
  def create(*args)
    @data.each_index do |i|
      if !@data[i].nil?
        @data[i].dispose if !@data[i].disposed?
        @data[i] = nil
      end
    end
    @data.push (Window_Getexp.new(*args))
  end
end
# fin dricc add exp


class Scene_Map < Scene_Base
  alias wora_scemap_str_getitemwin start
  alias wora_scemap_upd_getitemwin update
  alias wora_scemap_ter_getitemwin terminate
 
  def start
    wora_scemap_str_getitemwin
    @getitem_control = GetItem_Controller.new
    @getgold_control = Getgold_Controller.new
    @getexp_control = Getexp_Controller.new
  end
 
  def update
    wora_scemap_upd_getitemwin
    @getitem_control.update
    @getgold_control.update
    @getexp_control.update
  end
 
  def terminate
    @getitem_control.terminate
    @getgold_control.terminate
    @getexp_control.terminate
    wora_scemap_ter_getitemwin
  end
 
  # Create Get Item Window
  def new_itemwin(*args)
    @getitem_control.create(*args)
  end
  # Create Get gold Window
  def goldwin(*args)
    @getgold_control.create(*args)
  end
  # Create Get exp Window
  def expwin(*args)
    @getexp_control.create(*args)
  end
end
#=begin
#add for GTBS
class Scene_Battle_TBS
  alias wora_scemap_str_getitemwin1 start
  alias wora_scemap_upd_getitemwin1 update
  alias wora_scemap_ter_getitemwin1 terminate
 
  def start
    @getitem_control = GetItem_Controller.new
    @getgold_control = Getgold_Controller.new
    @getexp_control = Getexp_Controller.new
    wora_scemap_str_getitemwin1
  end
 
  def update
    @getitem_control.update
    @getgold_control.update
    @getexp_control.update
    wora_scemap_upd_getitemwin1
  end
 
  def terminate
    @getitem_control.terminate
    @getgold_control.terminate
    @getexp_control.terminate
    wora_scemap_ter_getitemwin1
  end
 
  # Create Get Item Window
  def new_itemwin(*args)
    @getitem_control.create(*args)
  end
  # Create Get gold Window
  def goldwin(*args)
    @getgold_control.create(*args)
  end
  # Create Get exp Window
  def expwin(*args)
    @getexp_control.create(*args)
  end
end
#=end
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Sam 25 Juin 2011 - 14:15
merci beaucoup je test tout de suite :P


edit:
j'ai une erreur ligne 392



que je sois avec mes autre script ou avec aucun
avatar
dricc
Membre

Nombre de messages : 2753
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Sam 25 Juin 2011 - 23:19
ah , pardon , faut enlever la partie rajoutée pour le GTBS .

repére les lignes :
#=begin
#=end
Et enleve les # pour mettre en commentaire
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Dim 26 Juin 2011 - 12:37
nickel ça marche mais par contre ou est-ce que je peux changer les image dans le script parce que j'ai pas le planche iconset de base
avatar
dricc
Membre

Nombre de messages : 2753
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Lun 27 Juin 2011 - 16:02
Oui , bien sur .

cherche :
# PEUX ETRE MODIFIE
xp_icon_index = 135 # icone pour gain d'xp
lv_icon_index = 27 # icone pour gain d'xp avec level up

et remplace les numéros par les bons indexes .
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Re: [résolu] script popup bulle de gain d'exp aprés une quête

le Lun 27 Juin 2011 - 22:38
ok merci beaucoup t'es trop cool
Contenu sponsorisé

Re: [résolu] script popup bulle de gain d'exp aprés une quête

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum