Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

Partagez
 

 [XP] Shop Stock

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Mat
Paysan (niveau 2)
Paysan (niveau 2)
Mat

Messages postés : 17
Date d'inscription : 05/09/2013
Jauge LPC :
[XP] Shop Stock 891527140040 / 10040 / 100[XP] Shop Stock 8915271400


[XP] Shop Stock Empty
MessageSujet: [XP] Shop Stock   [XP] Shop Stock EmptyVen 6 Sep 2013 - 23:22

Shop Stock

Auteur : Mat

Description :

Dépendance : Database Management v1

Script :
Code:
#===============================================================================
# ■ Shop Stock
#-------------------------------------------------------------------------------
# Auteur  : Mat
# Version : 2.0
# Date    : 22/06/2008
#-------------------------------------------------------------------------------
# Ce systême permet de créer des magasins réalistes avec une caisse et un stock.
# Un magasin ne peut donc pas acheter des objets au héros si il ne dispose pas
# d'assez d'argent dans sa caisse ; les objets vendus à un magasin y sont
# conservés et les objets à acheter sont en quantité limitée.
#
# Peut-être dans une future version :
# - Certains objets en quantité infini.
# - Réapprovisionnement régulier des magasins.
#
# Dépendance :
# - Database Management
#-------------------------------------------------------------------------------
# Utilisation :
#
#   1) Installation :
#       Copier le Database Management dans un script au dessus de Main.
#       Copier ce script dans un nouveau script entre Database Management
#       et Main.
#
#   2) Utilisation :
#       Lancer une première fois votre jeu. Le jeu créera ainsi un dossier
#       nommer "Shops Data" dans le dossier de votre jeu, contenant un fichier
#       "template.dbsl". Il suffit de copier le template et de remplir les
#       différents champs et ceci autant de fois qu'il faut de magasin.
#
#       ATTENTION : le champs name doit être unique pour chaque magasin.
#
#   3) Appel de magasin :
#
#       Il suffit de créer un evènement avec le nom d'un magasin,
#       et d'appeler dans ses commandes un magasin en lui passant
#       des objets à vendre qui ne seront pas pris en compte.
#===============================================================================

Database.create_table("Shops") { |t|
  t.column :name, :string
  t.column :gold, :integer, 0
  t.column :items, :hash
  t.column :weapons, :hash
  t.column :armors, :hash
}

#===============================================================================
# ▼ Game_Shop
#-------------------------------------------------------------------------------
# Cette classe modélise des magasins avec une caisse et un stock d'objets.
#===============================================================================
class Game_Shop
  
  attr_reader   :gold    # montant de la caisse
  attr_reader   :items   # stock d'objets
  attr_reader   :weapons # stock d'armes
  attr_reader   :armors  # stock d'armures
  
  #=============================================================================
  # ● initialize
  #     gold    : Montant initial de la caisse
  #     items   : Stock initial d'objets
  #     weapons : Stock initial d'armes
  #     armors  : Stock initial d'armures
  #-----------------------------------------------------------------------------
  # Méthode de création du magasin.
  #=============================================================================
  def initialize(gold, items, weapons, armors)
    @gold = gold
    @items = items
    @weapons = weapons
    @armors = armors
  end

  #=============================================================================
  # ● gain_gold
  #     n : L'argent à ajouter
  #-----------------------------------------------------------------------------
  # Méthode d'ajout d'argent au magasin
  #=============================================================================
  def gain_gold(n)
    @gold = [[@gold + n, 0].max, 9999999].min
  end
  
  #=============================================================================
  # ● lose_gold
  #     n : L'argent à retirer
  #-----------------------------------------------------------------------------
  # Méthode pour retirer de l'argent au magasin
  #=============================================================================
  def lose_gold(n)
    gain_gold(-n)
  end

  #=============================================================================
  # ● item_number
  #     item_id : L'id dans la base de données de l'item à chercher
  #-----------------------------------------------------------------------------
  # Méthode qui retourne la quantité d'un item possédé par le magasin
  #=============================================================================
  def item_number(item_id)
    return @items.include?(item_id) ? @items[item_id] : 0
  end

  #=============================================================================
  # ● weapon_number
  #     weapon_id : L'id dans la base de données de l'arme à chercher
  #-----------------------------------------------------------------------------
  # Méthode qui retourne la quantité d'une arme possédée par le magasin
  #=============================================================================
  def weapon_number(weapon_id)
    return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  end

  #=============================================================================
  # ● armor_number
  #     armor_id  : L'id dans la base de données de l'armure à chercher
  #-----------------------------------------------------------------------------
  # Méthode qui retourne la quantite d'une armure possédée par le magasin
  #=============================================================================
  def armor_number(armor_id)
    return @armors.include?(armor_id) ? @armors[armor_id] : 0
  end

  #=============================================================================
  # ● gain_item
  #     item_id : L'id dans la base de données de l'item à ajouter
  #     n       : La quantite de l'item à ajouter
  #-----------------------------------------------------------------------------
  # Méthode qui permet d'ajouter des items au magasin
  #=============================================================================
  def gain_item(item_id, n)
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
    end
  end
  
  #=============================================================================
  # ● gain_weapon
  #     weapon_id : L'id dans la base de données de l'arme à ajouter
  #     n         : La quantite de l'arme à ajouter
  #-----------------------------------------------------------------------------
  # Méthode qui permet d'ajouter des armes au magasin
  #=============================================================================
  def gain_weapon(weapon_id, n)
    if weapon_id > 0
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
    end
  end

  #=============================================================================
  # ● gain_armor
  #     item_id : L'id dans la base de données de l'armrue à ajouter
  #     n       : La quantite de l'armure à ajouter
  #-----------------------------------------------------------------------------
  # Méthode qui permet d'ajouter des armures au magasin
  #=============================================================================
  def gain_armor(armor_id, n)
    if armor_id > 0
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
    end
  end

  #=============================================================================
  # ● lose_item
  #     item_id : L'id dans la base de données de l'item à retirer
  #     n       : La quantite de l'item à retirer
  #-----------------------------------------------------------------------------
  # Méthode qui permet de retirer des items au magasin
  #=============================================================================
  def lose_item(item_id, n)
    gain_item(item_id, -n)
  end

  #=============================================================================
  # ● lose_weapon
  #     weapon_id : L'id dans la base de données de l'arme à retirer
  #     n         : La quantite de l'arme à retirer
  #-----------------------------------------------------------------------------
  # Méthode qui permet de retirer des armes au magasin
  #=============================================================================
  def lose_weapon(weapon_id, n)
    gain_weapon(weapon_id, -n)
  end

  #=============================================================================
  # ● lose_armor
  #     armor_id : L'id dans la base de données de l'armrue à retirer
  #     n       : La quantite de l'armure à retirer
  #-----------------------------------------------------------------------------
  # Méthode qui permet de retirer des armures au magasin
  #=============================================================================
  def lose_armor(armor_id, n)
    gain_armor(armor_id, -n)
  end
  
end

#===============================================================================
# ▼ Game_Temp
#-------------------------------------------------------------------------------
# On ajoute à la classe Game_Temp un nouvel attribut @game_shop
# correspondant au magasin appelé, ce qui remplace l'attribut @shop_goods
#===============================================================================
class Game_Temp
  
  attr_accessor :game_shop
  
  alias shop_initialize initialize
  def initialize
    shop_initialize
    @game_shop = nil
  end
  
end

#===============================================================================
# ▼ Interpreter & Game_Event
#-------------------------------------------------------------------------------
# On modifie dans la classe Interpreter la commande d'appel d'un magasin, pour
# qu'il utilise $game_temp.game_shop et non $game_temp.shop_goods.
# Pour celà, on a besoin d'ajouter à la classe Game_Event un accès à son event.
#===============================================================================

class Interpreter
  
  #=============================================================================
  # ● command_302
  #-----------------------------------------------------------------------------
  # Commande d'appel d'un magasin.
  #=============================================================================
  def command_302
    $game_temp.battle_abort = true
    $game_temp.shop_calling = true
    $game_temp.game_shop = $game_shops[$game_map.events[@event_id].event.name]
  end
  
end

class Game_Event
  
  attr_reader :event # accès à l'évènement
  
end

#===============================================================================
# ▼ Scene_Title
#-------------------------------------------------------------------------------
# On génère dans Scene_Title la base de données des magasins.
#===============================================================================
class Scene_Title
  
  alias shop_command_new_game command_new_game
  def command_new_game
    $game_shops         = { }
    for shop in Database::Shops
      dummy = Game_Shop.new(shop.gold, shop.items, shop.weapons, shop.armors)
      $game_shops[shop.name] = dummy
    end
    
    shop_command_new_game
  end
end

#===============================================================================
# ▼ Scene_Save
#-------------------------------------------------------------------------------
# Il faut sauvegarder l'état actuel des caisses et stocks des magasins.
#===============================================================================
class Scene_Save
  
  #=============================================================================
  # ● write_save_data
  #     file : nom du fichier de sauvegarde
  #-----------------------------------------------------------------------------
  # On sauvegarde l'état des caisses et stocks des magasins.
  #=============================================================================
  alias shop_write_save_data write_save_data
  def write_save_data(file)
    shop_write_save_data(file)
    Marshal.dump($game_shops, file)
  end
  
end

#===============================================================================
# ▼ Scene_Load
#-------------------------------------------------------------------------------
# Il faut charger l'état actuel des caisses et stocks des magasins.
#===============================================================================
class Scene_Load
  
  #=============================================================================
  # ● read_data
  #     file : nom du fichier où se trouvent les données à charger
  #-----------------------------------------------------------------------------
  # On charge l'état dans lequel se trouvaient
  # les magasins au moment de la sauvegarde.
  #=============================================================================
  
  alias shop_read_save_data read_save_data
  def read_save_data(file)
    shop_read_save_data(file)
    $game_shops = Marshal.load(file)
  end
end

#===============================================================================
# ▼ Window_ShopBuy
#-------------------------------------------------------------------------------
# On redéfinit des méthodes de cette classe pour afficher
# non plus $game_temp.shop_goods mais les obejts de $game_temp.game_shop.
#===============================================================================
class Window_ShopBuy < Window_Selectable

  #=============================================================================
  # ● initialize
  #     bidon : un attribut qui n'est plus utilisé
  #-----------------------------------------------------------------------------
  # Méthode d'initialisation de la fenêtre.
  #=============================================================================
  def initialize(bidon)
    super(0, 128, 368, 352)
    refresh
    self.index = 0
  end

  #=============================================================================
  # ● refresh
  #-----------------------------------------------------------------------------
  # Méthode qui permet d'afficher les objets de $game_temp.game_shop
  #=============================================================================
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for key in $game_temp.game_shop.items.keys
      item = $data_items[key]
      if item != nil && $game_temp.game_shop.items[key] > 0
        @data.push(item)
      end
    end
    for key in $game_temp.game_shop.weapons.keys
      item = $data_weapons[key]
      if item != nil && $game_temp.game_shop.weapons[key] > 0
        @data.push(item)
      end
    end
    for key in $game_temp.game_shop.armors.keys
      item = $data_armors[key]
      if item != nil && $game_temp.game_shop.armors[key] > 0
        @data.push(item)
      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

#===============================================================================
# ▼ Scene_Shop
#-------------------------------------------------------------------------------
# On redéfinit des méthodes de cette classe pour pouvoir
# gérer la caisse et le stock de $game_temp.game_shop.
#===============================================================================
class Scene_Shop
  
  #=============================================================================
  # ● update_buy
  #-----------------------------------------------------------------------------
  # Gestion de l'achat d'objets.
  #=============================================================================
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @item
      when RPG::Item
        party_number = $game_party.item_number(@item.id)
      when RPG::Weapon
        party_number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        party_number = $game_party.armor_number(@item.id)
      end
      if party_number == 99
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      case @item
      when RPG::Item
        shop_number = $game_temp.game_shop.item_number(@item.id)
      when RPG::Weapon
        shop_number = $game_temp.game_shop.weapon_number(@item.id)
      when RPG::Armor
        shop_number = $game_temp.game_shop.armor_number(@item.id)
      end
      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
      max = [max, 99 - party_number, shop_number].min
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
  
  #=============================================================================
  # ● update_sell
  #-----------------------------------------------------------------------------
  # Gestion de la vente d'objets.
  #=============================================================================
  def update_sell
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0 or (@item.price/2) > $game_temp.game_shop.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      max = number
      @sell_window.active = false
      @sell_window.visible = false
      @number_window.set(@item, max, @item.price / 2)
      @number_window.active = true
      @number_window.visible = true
      @status_window.visible = true
    end
  end
  
  #=============================================================================
  # ● update_number
  #-----------------------------------------------------------------------------
  # Gestion du nombre d'objets à acheter ou vendre.
  #=============================================================================
  def update_number
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @number_window.active = false
      @number_window.visible = false
      case @command_window.index
      when 0
        @buy_window.active = true
        @buy_window.visible = true
      when 1
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.shop_se)
      @number_window.active = false
      @number_window.visible = false
      case @command_window.index
      when 0
        $game_party.lose_gold(@number_window.number * @item.price)
        $game_temp.game_shop.gain_gold(@number_window.number * @item.price)
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, @number_window.number)
          $game_temp.game_shop.lose_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, @number_window.number)
          $game_temp.game_shop.lose_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, @number_window.number)
          $game_temp.game_shop.lose_armor(@item.id, @number_window.number)
        end
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        @buy_window.active = true
        @buy_window.visible = true
      when 1
        $game_party.gain_gold(@number_window.number * (@item.price / 2))
        $game_temp.game_shop.lose_gold(@number_window.number * (@item.price / 2))
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, @number_window.number)
          $game_temp.game_shop.gain_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, @number_window.number)
          $game_temp.game_shop.gain_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.lose_armor(@item.id, @number_window.number)
          $game_temp.game_shop.gain_armor(@item.id, @number_window.number)
        end
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
  
end

Utilisation :
Copier le Database Management dans un script au dessus de Main.
Copier ce script dans un nouveau script entre Database Management et Main.

Lancer une première fois votre jeu. Le jeu créera ainsi un dossier nommer "Shops Data" dans le dossier de votre jeu, contenant un fichier "template.dbsl". Il suffit de copier le template et de remplir les différents champs et ceci autant de fois qu'il faut de magasin.

Appel de magasin :
Il suffit de créer un événement avec le nom d'un magasin, et d'appeler dans ses commandes un magasin en lui passant des objets à vendre qui ne seront pas pris en compte.

Exemple :
Créer un fichier "ChezDeDe.dbsl" dans le dossier "Shops Data". Remplisser le avec le contenu :
Code:

Database::Shops
name: "Chez Dede"
gold: 2000
items: {1 => 2}
weapons: {1 => 1}
armors: {1 => 3}
Créer une événement et nommer le "Chez Dede", comme le champ "name" du fichier :
[XP] Shop Stock Sans_t10

Celui-ci vendra : 2 potions (items: {1 => 2}), 1 épée de bronze (weapons: {1 => 1}) et 3 bouclier de bronze (armors: {1 => 3})
Revenir en haut Aller en bas
Mat
Paysan (niveau 2)
Paysan (niveau 2)
Mat

Messages postés : 17
Date d'inscription : 05/09/2013
Jauge LPC :
[XP] Shop Stock 891527140040 / 10040 / 100[XP] Shop Stock 8915271400


[XP] Shop Stock Empty
MessageSujet: Re: [XP] Shop Stock   [XP] Shop Stock EmptyVen 6 Sep 2013 - 23:24

Adapteur pour Advanced Items :

Ce script n'est à utiliser que lors de l'utilisation du script Advanced Items.

Code:
#===============================================================================
# ▼ Game_Shop
#===============================================================================
class Game_Shop
  
  #=============================================================================
  # ● initialize
  #=============================================================================  
  def initialize(gold, items, weapons, armors)
    @gold = gold

    @items = []
    @weapons = []
    @armors = []

    for tab_item in items
      for i in 1..tab_item[1]
        @items.push(Game_Item.new(tab_item[0]))
      end
    end
    
    for tab_weapon in weapons
      for i in 1..tab_weapon[1]
        @weapons.push(Game_Weapon.new(tab_weapon[0]))
      end
    end
    
    for tab_armor in armors
      for i in 1..tab_armor[1]
        @armors.push(Game_Armor.new(tab_armor[0]))
      end
    end
    
  end
  
    #=============================================================================
  # ● gain_item
  #       item : item ajouté
  #=============================================================================
  def gain_item(item)
    @items.push(item)
  end
 
  #=============================================================================
  # ● lose_item
  #       item : item retiré
  #=============================================================================
  def lose_item(item)
    @items.delete(item)
  end
  
  #=============================================================================
  # ● gain_weapon
  #       weapon : weapon ajouté
  #=============================================================================
  def gain_weapon(weapon)
    @weapons.push(weapon)
  end
 
  #=============================================================================
  # ● lose_weapon
  #       weapon : weapon retiré
  #=============================================================================
  def lose_weapon(weapon)
    @weapons.delete(weapon)
  end
  
  #=============================================================================
  # ● lose_armor
  #       armor : armor ajouté
  #=============================================================================
  def gain_armor(armor)
    @armors.push(armor)
  end
 
  #=============================================================================
  # ● lose_armor
  #       armor : armor retiré
  #=============================================================================
  def lose_armor(armor)
    @armors.delete(armor)
  end  
  
end

#===============================================================================
# ▼ Window_ShopBuy
#===============================================================================
class Window_ShopBuy < Window_Selectable

  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = $game_temp.game_shop.items +
            $game_temp.game_shop.weapons +
            $game_temp.game_shop.armors
    @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
  
  def draw_item(index)
    item = @data[index]
  
    if item.price <= $game_party.gold
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  end
  
end

#===============================================================================
# ▼ Window_ShopStatus
#===============================================================================
class Window_ShopStatus < Window_Base
 
  #=============================================================================
  # ● refresh
  #=============================================================================
  def refresh
    self.contents.clear
    if @sprite1 != nil
      @sprite1.dispose
      @sprite1 = nil
    end
    if @sprite2 != nil
      @sprite2.dispose
      @sprite2 = nil
    end
    if @sprite3 != nil
      @sprite3.dispose
      @sprite3 = nil
    end
    if @sprite4 != nil
      @sprite4.dispose
      @sprite4 = nil
    end
    self.contents.font.name = "Arial"
    self.contents.font.size = 24
    if @item == nil
      return
    end
    
    if @item.is_a?(Game_Item)
      number = $game_party.item_number(@item.id)
    end
    if @item.is_a?(Game_Weapon)
      number = $game_party.weapon_number(@item.id)
    end
    if @item.is_a?(Game_Armor)
      number = $game_party.armor_number(@item.id)
    end

    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 200, 32, "Possédés :")
    self.contents.font.color = normal_color
    self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
    if @item.is_a?(Game_Item)
      @walk = [false, false, false, false]
      return
    end
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if @item.is_a?(Game_Weapon)
        item1 = actor.weapon
      elsif @item.kind == 0
        item1 = actor.armor1
      elsif @item.kind == 1
        item1 = actor.armor2
      elsif @item.kind == 2
        item1 = actor.armor3
      else
        item1 = actor.armor4
      end
      if not actor.equippable?(@item)
        @walk[i] = false
        draw_actor_graphic(actor, 380, 194 + 64 * i, i, 0)
        self.contents.font.name = "Arial"
        self.contents.font.size = 24
        self.contents.font.color = normal_color
        self.contents.draw_text(32, 54 + 64 * i, 180, 32, "Ne peut pas être équipé")
      end
      if actor.equippable?(@item)
        @walk[i] = true
        draw_actor_graphic(actor, 380, 194 + 64 * i, i, 1)
          atk1 = 0
          atk2 = 0
          eva1 = 0
          eva2 = 0
          str1 = 0
          str2 = 0
          dex1 = 0
          dex2 = 0
          agi1 = 0
          agi2 = 0
          int1 = 0
          int2 = 0
          pdf1 = 0
          pdf2 = 0
          mdf1 = 0
          mdf2 = 0
          eva1 = 0
          eva2 = 0
          str1 = item1 != nil ? item1.str_plus : 0
          str2 = @item != nil ? @item.str_plus : 0
          dex1 = item1 != nil ? item1.dex_plus : 0
          dex2 = @item != nil ? @item.dex_plus : 0
          agi1 = item1 != nil ? item1.agi_plus : 0
          agi2 = @item != nil ? @item.agi_plus : 0
          int1 = item1 != nil ? item1.int_plus : 0
          int2 = @item != nil ? @item.int_plus : 0
          pdf1 = item1 != nil ? item1.pdef : 0
          pdf2 = @item != nil ? @item.pdef : 0
          mdf1 = item1 != nil ? item1.mdef : 0
          mdf2 = @item != nil ? @item.mdef : 0
        if @item.is_a?(Game_Weapon)
          atk1 = item1 != nil ? item1.atk : 0
          atk2 = @item != nil ? @item.atk : 0
        end
        if @item.is_a?(Game_Armor)
          eva1 = item1 != nil ? item1.eva : 0
          eva2 = @item != nil ? @item.eva : 0
        end
        str_change = str2 - str1
        dex_change = dex2 - dex1
        agi_change = agi2 - agi1
        int_change = int2 - int1
        pdf_change = pdf2 - pdf1
        mdf_change = mdf2 - mdf1
        atk_change = atk2 - atk1
        eva_change = eva2 - eva1
        if item1 == nil
          name1 = ""
        else
          name1 = item1.name
        end
        if @item == nil
          name2 = ""
        else
          name2 = @item.name
        end
        if str_change == 0 && dex_change == 0 && agi_change == 0 &&
        pdf_change == 0 && mdf_change == 0 && atk_change == 0 &&
        eva_change == 0 && name1 != name2
          self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Pas de changements")
        end
        if name1 == name2
          self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Déjà équipé")
        end
        self.contents.font.name = "Arial"
        self.contents.font.size = 16
        self.contents.font.color = normal_color
        if @item.is_a?(Game_Weapon) && atk_change != 0
          self.contents.draw_text(32, 42 + 64 * i, 32, 32, "PAt")
        end
        if @item.is_a?(Game_Armor) && eva_change != 0
          self.contents.draw_text(32, 42 + 64 * i, 32, 32, "Esq")
        end
        if pdf_change != 0
          self.contents.draw_text(32, 58 + 64 * i, 32, 32, "DfP")
        end
        if mdf_change != 0
          self.contents.draw_text(32, 74 + 64 * i, 32, 32, "DfM")
        end
        if str_change != 0
          self.contents.draw_text(112, 42 + 64 * i, 32, 32, "Att")
        end
        if dex_change != 0
          self.contents.draw_text(112, 58 + 64 * i, 32, 32, "Def")
        end
        if agi_change != 0
          self.contents.draw_text(112, 74 + 64 * i, 32, 32, "Agi")
        end
        if str_change != 0
          self.contents.draw_text(192, 42 + 64 * i, 32, 32, "Int")
        end
        if @item.is_a?(Game_Weapon) && atk_change > 0
          self.contents.font.color = up_color
          s = atk_change.abs.to_s
          self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+")
          self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2)
        end
        if @item.is_a?(Game_Weapon) && atk_change < 0
          self.contents.font.color = down_color
          s = atk_change.abs.to_s
          self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-")
          self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2)
        end
        if @item.is_a?(Game_Armor) && eva_change > 0
          self.contents.font.color = up_color
          s = eva_change.abs.to_s
          self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+")
          self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2)
        end
        if @item.is_a?(Game_Armor) && eva_change < 0
          self.contents.font.color = down_color
          s = eva_change.abs.to_s
          self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-")
          self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2)
        end
        if pdf_change > 0
          self.contents.font.color = up_color
          s = pdf_change.abs.to_s
          self.contents.draw_text(60, 58 + 64 * i, 4, 32, "+")
          self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2)
        end
        if pdf_change < 0
          self.contents.font.color = down_color
          s = pdf_change.abs.to_s
          self.contents.draw_text(60, 58 + 64 * i, 4, 32, "-")
          self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2)
        end
        if mdf_change > 0
          self.contents.font.color = up_color
          s = mdf_change.abs.to_s
          self.contents.draw_text(60, 74 + 64 * i, 4, 32, "+")
          self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2)
        end
        if mdf_change < 0
          self.contents.font.color = down_color
          s = mdf_change.abs.to_s
          self.contents.draw_text(60, 74 + 64 * i, 4, 32, "-")
          self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2)
        end
        if str_change > 0
          self.contents.font.color = up_color
          s = str_change.abs.to_s
          self.contents.draw_text(140, 42 + 64 * i, 4, 32, "+")
          self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2)
        end
        if str_change < 0
          self.contents.font.color = down_color
          s = str_change.abs.to_s
          self.contents.draw_text(140, 42 + 64 * i, 4, 32, "-")
          self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2)
        end
        if dex_change > 0
          self.contents.font.color = up_color
          s = dex_change.abs.to_s
          self.contents.draw_text(140, 58 + 64 * i, 4, 32, "+")
          self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2)
        end
        if dex_change < 0
          self.contents.font.color = down_color
          s = dex_change.abs.to_s
          self.contents.draw_text(140, 58 + 64 * i, 4, 32, "-")
          self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2)
        end
        if agi_change > 0
          self.contents.font.color = up_color
          s = agi_change.abs.to_s
          self.contents.draw_text(140, 74 + 64 * i, 4, 32, "+")
          self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2)
        end
        if agi_change < 0
          self.contents.font.color = down_color
          s = agi_change.abs.to_s
          self.contents.draw_text(140, 74 + 64 * i, 4, 32, "-")
          self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2)
        end
        if int_change > 0
          self.contents.font.color = up_color
          s = int_change.abs.to_s
          self.contents.draw_text(214, 42 + 64 * i, 4, 32, "+")
          self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2)
        end
        if int_change < 0
          self.contents.font.color = down_color
          s = int_change.abs.to_s
          self.contents.draw_text(214, 42 + 64 * i, 4, 32, "-")
          self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2)
        end
      end
    end
  end
 
end

#===============================================================================
# ▼ Scene_Shop
#===============================================================================
class Scene_Shop
  
  #=============================================================================
  # ● update_buy
  #=============================================================================
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      if @item == nil or @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      
      $game_system.se_play($data_system.decision_se)
      $game_temp.game_shop.gain_gold(@item.price)
      $game_party.lose_gold(@item.price)
      if @item.is_a?(Game_Item)
        $game_party.gain_item(@item)
        $game_temp.game_shop.lose_item(@item)
      end
      if @item.is_a?(Game_Weapon)
        $game_party.gain_weapon(@item)
        $game_temp.game_shop.lose_weapon(@item)    
      end
      if @item.is_a?(Game_Armor)
        $game_party.gain_armor(@item)
        $game_temp.game_shop.lose_armor(@item)
      end
      
      @buy_window.refresh
      @status_window.refresh
      @gold_window.refresh
    end
  end
  
  #=============================================================================
  # ● update_sell
  #=============================================================================
  def update_sell
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0 or (@item.price/2) > $game_temp.game_shop.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $game_temp.game_shop.lose_gold(@item.price / 2)
      $game_party.gain_gold(@item.price / 2)
      if @item.is_a?(Game_Item)
        $game_temp.game_shop.gain_item(@item)
        $game_party.lose_item(@item)
      end
      if @item.is_a?(Game_Weapon)
        $game_temp.game_shop.gain_weapon(@item)
        $game_party.lose_weapon(@item)    
      end
      if @item.is_a?(Game_Armor)
        $game_temp.game_shop.gain_armor(@item)
        $game_party.lose_armor(@item)
      end

      @sell_window.refresh
      @gold_window.refresh    
    end
  end
  
end
Revenir en haut Aller en bas
lidenvice
Ancien staffeux
Ancien staffeux
lidenvice

Masculin
Messages postés : 1955
Date d'inscription : 18/10/2011
Jauge LPC :
[XP] Shop Stock 891527140068 / 10068 / 100[XP] Shop Stock 8915271400

[XP] Shop Stock Membre10
[XP] Shop Stock Doyen10
[XP] Shop Stock Travai10
[XP] Shop Stock Membre15
[XP] Shop Stock Altrui10
[XP] Shop Stock Padago10
[XP] Shop Stock Scanar10
[XP] Shop Stock Mappeu10
[XP] Shop Stock Event-10
[XP] Shop Stock Maker_10
[XP] Shop Stock Projet16
[XP] Shop Stock Mythe_10
[XP] Shop Stock Riche_10
[XP] Shop Stock Collec10
[XP] Shop Stock Collec11
[XP] Shop Stock Collec12
[XP] Shop Stock Collec13
[XP] Shop Stock Antino10
[XP] Shop Stock Serial10


[XP] Shop Stock Empty
MessageSujet: Re: [XP] Shop Stock   [XP] Shop Stock EmptySam 7 Sep 2013 - 5:06

Merci pour ce partage je te donne les points
Revenir en haut Aller en bas
Zexion
Administrateur
Administrateur
Zexion

Masculin
Messages postés : 6228
Date d'inscription : 04/01/2012
Jauge LPC :
[XP] Shop Stock 891527140097 / 10097 / 100[XP] Shop Stock 8915271400

[XP] Shop Stock Membre15
[XP] Shop Stock Event-10
[XP] Shop Stock Altrui10
[XP] Shop Stock Action10
[XP] Shop Stock Travai10
[XP] Shop Stock Collec10
[XP] Shop Stock Collec11
[XP] Shop Stock Collec12
[XP] Shop Stock Staffe11
[XP] Shop Stock Dessin10


[XP] Shop Stock Empty
MessageSujet: Re: [XP] Shop Stock   [XP] Shop Stock EmptySam 7 Sep 2013 - 5:19

Merci à toi, c'est une dimension trop souvent négligée dans les RPG qui fait qu'il est parfois trop facile de s'enrichir en vendant pléthore d'objets.
Je suis sûr que ça servira à du monde. Smile
Revenir en haut Aller en bas
Contenu sponsorisé




[XP] Shop Stock Empty
MessageSujet: Re: [XP] Shop Stock   [XP] Shop Stock Empty

Revenir en haut Aller en bas
 
[XP] Shop Stock
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» RTP SHOP
» Character Shop
» [VX] CC shop menu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Système-
Sauter vers: