Partagez
Aller en bas
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Objet clé [résolu]

le Mar 11 Déc 2012 - 20:06
Je suis devant un petit soucis que je n'arrive pas à régler...

J'aimerais que les "objet clé" ne soit plus comptabilisé dans l'inventaire mais quand même visible, y a t'il une solution à cella ?

Par objet clé je parle bien du "type" de l'objet réglable dans l'onglet objets de la base de données.


J'utilise ce script pour gérer la place dans mon inventaire mais je ne pense pas que la solution soit dans celui ci mais plutôt dans le Game_BaseItem ou autres...

Code:
=begin
#==============================================================================
 ** Inventory Size
 Author: Tsukihime
 Date: Nov 25, 2012
------------------------------------------------------------------------------
 ** Change log
 Nov 25, 2012
  - initial release
------------------------------------------------------------------------------ 
 ** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Preserve this header
------------------------------------------------------------------------------
  ** Compatibility
 
  This script replaces one method
    Scene_Shop#max_buy
------------------------------------------------------------------------------
  ** Description
 
 This script allows you to limit the size of an inventory by item count.
 When you have exceeded the limit:
    -items will not be added to your inventory.
    -equips cannot be removed, only exchanged
    -cannot purchase additional items from the shop
 
 This script does not define how extra items should be handled, nor does it
 handle what happens when your inventory size decreases and you have extra
 items.
 
------------------------------------------------------------------------------
  ** Usage
 
 Set the initial inventory size in the configuration.
 
 Augmenter la taille de l'inventaire ou la diminuer
    $game_party.change_inventory_size(n)
 
 n peut être positif ou négatif
 
 Check if the inventory is full using script calls
    $game_party.inventory_full?
 
Other useful script calls:
 
$game_party.inventory_size  Retourne la taille de l'inventaire
$game_party.inventory_full? Retourne true or false si l'inventaire est remplie ou pas
$game_party.inventory_space Retourne l'espace disponible
$game_party.inventory_count Retourne le nombre d'objets dans l'inventaire
#==============================================================================
=end
$imported = {} if $imported.nil?
$imported["Tsuki_InventorySize"] = true
#==============================================================================
# ** Configuration
#==============================================================================
module Tsuki
  module Inventory_Size
   
    # Starting limit
    Start_Size = 10
  end
end
#==============================================================================
# ** Rest of the script
#==============================================================================
 
class Game_Party < Game_Unit
 
  alias :th_inventory_size_init :initialize
  def initialize
    th_inventory_size_init
    @inventory_size = Tsuki::Inventory_Size::Start_Size
  end
 
  # Replaced. Change the stack limit based on the item's individual limits.
  def inventory_size
    return @inventory_size
  end
 
  def inventory_full?
    return inventory_count >= inventory_size
  end
 
  # Get the total count for the bag
  def item_count(bag)
    return bag.values.inject(:+) || 0
  end
 
  def inventory_count
      item_count(@items) + item_count(@weapons) + item_count(@armors)
  end
 
  def inventory_space
    inventory_size - inventory_count
  end
 
  # Calculate how many we can add
  alias :th_inventory_size_gain_item :gain_item
  def gain_item(item, amount, include_equip = false)
    return if amount > 0 && inventory_full?
    can_add_amount = amount > 0 ? [inventory_size - inventory_count, amount].min : amount
    th_inventory_size_gain_item(item, can_add_amount, include_equip)
  end
 
  def change_inventory_size(amount)
    @inventory_size += amount
  end
 
end
 
class Window_ShopBuy < Window_Selectable
 
  alias :th_inventory_size_enable? :enable?
  def enable?(item)
    return false if $game_party.inventory_full?
    return th_inventory_size_enable?(item)
  end
end
 
class Scene_Shop < Scene_MenuBase
 
  # take into consideration inventory space
  alias :th_inventory_size_max_buy :max_buy
  def max_buy
    max = $game_party.max_item_number(@item) - $game_party.item_number(@item)
   
    # whichever is smaller
    max = [$game_party.inventory_space, max].min
    buying_price == 0 ? max : [max, money / buying_price].min
  end
end



Merci pour votre aide Smile


Dernière édition par spywaretof le Mer 12 Déc 2012 - 12:52, édité 1 fois
avatar
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 32
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' ]
Date d'inscription : 14/04/2010

Re: Objet clé [résolu]

le Mar 11 Déc 2012 - 21:51
Alors, si je comprend bien, ce script permet juste de limiter le nombre d'items dans l'inventaire, c'est ça ?
Mais il comptabilise juste le nb, et non pas le "poids". Ce qui est dommage, car ça aurait pu changer la donne.

Là, il faudrait qu'un scripteur te fasse une ligne en plus à ajouter en commentaire dans l'objet clé (et d'autre si tu veux) permettant de ne pas comptabiliser l'objet en question dans la limite maxi.
A voir si c'est faisable et si j'ai raison.
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Objet clé [résolu]

le Mar 11 Déc 2012 - 22:02
Oui le script permet de faire un inventaire limité, un peu comme si tu avais un sac à dos avec 10 places, donc 10 objets peuvent y rentrer Smile

J'aime pas trop le système de poids pour un inventaire...

Oui il faut un vrai scripteur la parce que ça m'a assez compliqué à régler comme problème je ne sais même pas si c'est possible, je n'ai rien trouvé dans les scripts présent qui peux différiencier un "objet normal" et un "objet clé".

...
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 0:08
je te fait ça demain
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 0:10
Un grand merci je sais pas si c'est possible ça fais trois jours que je cherche...
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 11:44
pour savoir si un objet est un objet clef, il faut d'abord vérifier que l'objet (de classe) que l'on manipule soit une instance de RPG::Item, et ensuite utiliser la méthode key_item? qui renverra vrai si c'est un objet clef.
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 11:52
J'avoue que je suis un peu perdu avec cette histoire d'objet clé, mais je comprendrai surement beaucoup mieux quand tu auras réussi à me mettre ça dans mon script plus haut ou à part.

J'ai tenté tellement de chose déjà pour rendre ça possible, d'habitude je trouve mais la... pourtant le fait de chercher à comprendre aide beaucoup et ça m'aide à apprendre.

J'ai réussis déjà à supprimer l'ajout des objets clé dans mon inventaire mais du coup je les voyais plus du tout, après j'ai tenté avec des conditions et toutes sorte de lignes de code pour arriver à mes fins mais sans succès.


PS : Je comprends plus ou moins ce que tu m'expliques plus haut mais je ne vois pas du tout comment et par ou commencer, pour ajouter quoi que ce soit dans mon script.

avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 12:41
essaie en remplaçant :

Code:
  def inventory_count
    item_count(@items) + item_count(@weapons) + item_count(@armors)
  end

par

Code:
  def inventory_count
    item_count(@items) + item_count(@weapons) + item_count(@armors) - key_item_number
  end

  def key_item_number
    nbr = 0
    @items.each do |key, value|
      nbr += ($data_items[key].key_item? ? value : 0)
    end
    return nbr
  end

J'ai pas test, j'ai fait ça sans RPGmaker de lancé, dit moi, ce que ça donne
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 12:51
Ben voila, ça donne exactement ce qu'il faut, je te remercie grandement !!!

Les objets sont bien ramassés, mais seul les objets normaux sont comptabilisé dans l'inventaire.


Encore merci pour ton aide Smile


EDIT :

Juste une petite question que signifie les "each" dans ce bout de code ?
avatar
tonyryu
Membre

Nombre de messages : 895
Age : 38
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 13:09
@items est une liste (Hash) qui est structuré de la sorte :
ID objet 1 => Quantité 1
...
ID objet N => Quantité 1

le each (chaque en français) renvoie la clef (ID de l'objet) et la valeur (la quantité de l'objet) pour chaque entité de la liste. |key, value| , le code qui suit est exécuté pour chaque entité.
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Objet clé [résolu]

le Mer 12 Déc 2012 - 13:23
Ok merci pour ces précisions Smile
Contenu sponsorisé

Re: Objet clé [résolu]

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