Partagez
Aller en bas
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

restriction pour l'utilisation d'un objet

le Jeu 17 Mar 2016 - 10:35
bonjour,

sur VX j'avais trouvé un script qui permettait de mettre des restrictions sur l'utilisation d'un item
par exemple si je marquais en zone de commentaire :
< level: 10 >
< class: 8 >

seul un personnage ayant la classe 8 et d'un level supérieur ou égal à 10 pouvait utiliser l'objet ou porter l'équipement



j'aimerai savoir s'il existe un tel plugin sous MV
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: restriction pour l'utilisation d'un objet

le Jeu 17 Mar 2016 - 12:40
En soit c'est pas compliqué, mais c'est super long, car faut gérer toutes les vérifications sur plein de stat différents. En ce moment, j'suis un peu charette, si quelqu'un veut bien s'en occuper à ma place si ça n'existe pas.

Ou alors faudra être patient.
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Lun 21 Mar 2016 - 12:38
je mets les deux scripts vx ace si ça peut aider

Code:

#==============================================================================
#   XaiL System - Class Items
#   Author: Nicke
#   Created: 02/05/2012
#   Edited: 28/08/2012
#   Version: 1.0d
#   Level restriction added by Peridot Gaming 05-Mar-2015
#==============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ? Materials but above ? Main. Remember to save.
#
# This script enables you to restrict a certain item for a specific class.
# To use this go to the notetag in the item section and add the following:
#
# <CLASS|class: id, id, id...>
#
# Examples:
# <class: 1, 2, 3>
# <class: 2>
# <class: 3, 1, 5>
#
# Note: If you leave the notetag empty for an item it will use the default
# method instead.
#
# PeridotGaming added the following
# To restrict an item for a minimum level put the following notetage in the item
#
# <LEVEL|level: minimum>
#
# Example to restrict the mimimum level required to be 3 or higher:
# <level: 3>
#
#
# NB: Also added bug-fix where the class restriction was not working battles.
#
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-CLASS-ITEMS"] = true
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** RPG::BaseItem
#==============================================================================#
class RPG::BaseItem
  
  def class_use
    # // Method to check if class can use item.
    arr = []
    n = /<(?:CLASS|class):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    @note.split(/[\r\n]+/).each { |line|
      case line
      when n
        $1.scan(/\d+/).each { |num|
        arr.push(num.to_i) if num.to_i > 0
        }
      end
    }
    return arr
  end
  
  def level_use
    # // Method to check the level of an item.
    n = @note.match(/<(?:LEVEL|level):[ ]*(\d+)>/i)
    if n != nil
      return n[1].to_i
    else
      return 0
    end
  end
end
#==============================================================================#
# ** Scene_ItemBase
#==============================================================================#
class Scene_ItemBase < Scene_MenuBase
  
  alias xail_class_items_scene_item_base_on_actor_ok on_actor_ok
  def on_actor_ok(*args, &block)
    # // Method when actor ok.
    if check_class?(item)
      return Sound.play_buzzer
    else
      if check_level?(item)
        if item_usable?
          return use_item
        else
          return Sound.play_buzzer
        end
      else
        return Sound.play_buzzer
      end
    end unless item.class_use == [] && item.level_use == 0
    xail_class_items_scene_item_base_on_actor_ok(*args, &block)
  end
  
  def check_class?(item)
    # // Method to check actor's class_id for specified item.
    return false if item.class_use == []
    
    item.class_use.each {|id|
      return false if $game_party.members[@actor_window.index].class_id == id
    }
  end
  
  def check_level?(item)
    # Method to check the actors level against the specified item level
    return true if $game_party.members[@actor_window.index].level >= item.level_use || item.level_use == 0
  end
end
#==============================================================================#
# ** Scene_Battle
#==============================================================================#
class Scene_Battle < Scene_Base
  
  def item
    # // Method to set item.
    @item_window.item
  end
  
  alias xail_class_items_scene_battle_on_actor_ok on_actor_ok
    def on_actor_ok(*args, &block)
    # // Method when actor ok.
    if check_class?(item)
        select_actor_selection
        return Sound.play_buzzer
    else
      if !check_level?(item)
        select_actor_selection
        return Sound.play_buzzer
      end
    end
    xail_class_items_scene_battle_on_actor_ok(*args, &block)
  end

  def check_class?(item)
    # // Method to check actor's class_id for specified item.
    return false if !item.is_a?(RPG::Item)
      
    return false if item.class_use == []
    
    item.class_use.each {|id|
      return false if $game_party.members[@actor_window.index].class_id == id
    }
  end

  def check_level?(item)
    # Method to check the actors level against the specified item level
    return true if !item.is_a?(RPG::Item)
    
    return true if $game_party.members[@actor_window.index].level >= item.level_use || item.level_use == 0
  end

end # END OF FILE


Code:

# =============================================================================
# TheoAllen - Minimum Level Equip Requirement
# Version : 1.0c
# Contact : www.rpgmakerid.com (or) <a href="http://theolized.blogspot.com" target="_blank">http://theolized.blogspot.com</a>
# (This script documentation is written in informal indonesian language)
# =============================================================================
($imported ||= {})[:Theo_MinLevelEquip] = true
# =============================================================================
# CHANGE LOGS:
# -----------------------------------------------------------------------------
# 2013.09.21 - Bug fix when optimizing equip
# 2013.08.10 - Bug fix when unequip item
# 2013.08.05 - Finished script
# =============================================================================
=begin
 
  Perkenalan :
  Script ini ngebikin setiap equip bisa disetting level minimalnya buat
  digunain
 
  Cara penggunaan :
  Pasang dibawah material namun diatas main
  Gunakan notetag <min level: n> pada note equip. Dimana n adalah level minimal
  yang dibutuhkan untuk diequip
  
  Terms of Use :
  Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  dipake buat komersil, jangan lupa, gw dibagi gratisannya.
 
  Utilisation:
  ecrire <min level: n> en note sur l'équipement.(a écrire aussi dans la définition pour le joueur)
  ex: <min level: 10>
  
=end
# =============================================================================
# Tidak ada konfigurasi
# =============================================================================
class << DataManager
  
  alias theo_equip_level_load_db load_database
  def load_database
    theo_equip_level_load_db
    load_equip_minimum_level
  end
  
  def load_equip_minimum_level
    ($data_armors + $data_weapons).compact.each do |equip|
      equip.load_minimum_level_req
    end
  end
  
end
 
class RPG::EquipItem < RPG::BaseItem
  attr_accessor :minimum_level
  
  def load_minimum_level_req
    @minimum_level = 1
    self.note.split(/[\r\n]+/).each do |line|
      case line
      when /<(?:MIN_LEVEL|min level): [ ]*(\d+)>/i
        @minimum_level = $1.to_i
      end
    end
  end
  
end
 
class Window_EquipItem < Window_ItemList
  
  alias theo_min_equip_level_enable? enable?
  def enable?(item)
    return theo_min_equip_level_enable?(item) && sufficient_level?(item)
  end
  
  def sufficient_level?(item)
    return true unless item
    return @actor.level >= item.minimum_level
  end
  
end
 
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # Overwrite Optimize Equipment
  #--------------------------------------------------------------------------
  def optimize_equipments
    clear_equipments
    equip_slots.size.times do |i|
      next if !equip_change_ok?(i)
      items = $game_party.equip_items.select do |item|
        item.etype_id == equip_slots[i] &&
        equippable?(item) && item.performance >= 0 &&
        sufficient_equip_level?(item)
      end
      change_equip(i, items.max_by {|item| item.performance })
    end
  end
  
  def sufficient_equip_level?(item)
    level >= item.minimum_level
  end
end
avatar
Sphinx
Membre

Nombre de messages : 58
Distinction : aucune
Date d'inscription : 08/03/2016

Re: restriction pour l'utilisation d'un objet

le Lun 21 Mar 2016 - 22:06
J'ai trouvé le script sur le blog en lien dans l'entête du second script (http://www.theolized.com/2013/08/theo-minimum-level-equip-requirement.html), mais les explications sur son fonctionnement sont très limitées et mon indonésien est un petit peu rouillé je le crains (mon anglais se porte mieux mais pas si bien que ca en fait). A noter que ne serais pas contre quelques explications sur l'autre script (le premier). Est-ce un autre système que tu voudrais voir implémenté sur RMMV ou a-t-il un lien avec le second script ?

En général, c'est le genre de petites bricoles qui m'amuse Smile Donc si personne ne veut s'en occuper, je suis tout disposé à tenter ma chance (je ne suis pas forcément capable de traduire simplement un script RMVX en script RMMV mais j'ai un début d'idée sur comment assembler quelque chose de ressemblant). Mais dans le cas présent et n'ayant pas RMVX pour tester ce script, je dois commencer par poser quelques questions pour être sur de bien avoir compris l'idée avant de foncer tête baissée :
  • Les filtres d'utilisation sont-ils uniquement rédigés dans les remarques de chaque objet ou y a-t-il d'autres endroit à renseigner également ?
  • Les filtres ne sont-ils appliqués que sur la classe et le niveau du héros ciblé ou d'autres filtres existent également (si oui, lesquels existent) ?
  • Les objets sont-ils seulement désactivés dans la liste ou une mise en forme spéciale est-elle appliquée ? Là, l'impression d'écran de l'auteur original du script me donne un bout de la réponse mais je voudrais m'assurer que je ne me trompe pas. Ce que j'ai compris c'est que les conditions sont indiquées juste en dessous de la description dans ce qui me semble être le menu d'équipement d'un personnage (dans l'exemple : Eric) et l'élément est désactivé et grisé dans la liste. Ces infos sont-elles présentes uniquement à cet endroit ou apparaissent-elles ailleurs (comme dans le magasin, le menu objets, ...) ?


Là tout de suite, ce sont les principales questions que je me pose ^o^ Si quelqu'un a ne serait-ce qu'un début de réponse je suis preneur Smile
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Mar 22 Mar 2016 - 8:51
Merci beaucoup pour ton intérêt à mon problème.

alors je vais essayer de répondre, je précise que je ne suis qu'utilisateur de ces scripts je sais donc ce qu'ils font mais malheureusement pas comment ils procèdent.

Le premier script concerne les items.
il permet d'interdire l'utilisation d'un item sur un personnage si ce dernier n'a pas la bonne classe et n'est pas au moins au level spécifié.
Pour ce faire on entre simplement
< level: 10 >
< class: 8 >
dans les commentaire d'un item et ce dernier ne pourra être utilisé que sur un personnage de la classe 8 ayant un level supérieur ou égal à 10
L'objet en lui même apparait tout à fait normalement dans l'inventaire.
Je me servais de ce script pour créer des manuels d'apprentissage pour les mages
par exemple le manuel de soin 2 permet d'apprendre la magie soin 2 à un mage blanc de level 11 ou plus. (il y a bien un plugin de yanfly qui permet de faire la même chose mais il est extremement lourd car trop généraliste et obligeant à passer par un sous menu d'apprentissage)

Le second script fonctionne de la même manière et permet d’empêcher un personnage de s'équiper d'une arme ou armure s'il n'a pas la classe requise et le level minimum requis
pareil :
< level: 10 >
< class: 8 >
sur le champ remarque d'une arme ou d'une armure empêche un personnage de s'équiper de la chose s'il n'est pas de classe 8 et d'un level sup ou égal à 10
pour ce qui est de l'équipement, avec ce script l'option "optimal" risque de poser problème cela dit elle devient inutile dans mon système d'équipement et s'il est possible de la faire disparaître tout simplement ce ne serait vraiment pas un mal, au contraire.
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Mer 30 Mar 2016 - 13:37
des nouvelles ?
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Lun 18 Avr 2016 - 9:27
personne ?
avatar
Rai The One
Membre

Nombre de messages : 20
Distinction : aucune
Date d'inscription : 13/03/2012

Re: restriction pour l'utilisation d'un objet

le Sam 23 Avr 2016 - 1:29
T'as était voir du coté de Yanfly & Cie ou bien Himeworks ??

Parce qu'il me semble bien avoir vu un truc y ressemblant.. ^^,

Edit : Je suis allez zyeuté vite fait pour voir..
J'ai trouvé chez Yanfly.moe un 'Equip Requirement' ; Un Class/SubClass Core Engine ; Un Item Core et plugins.. ^^!


Dernière édition par Rai The One le Sam 23 Avr 2016 - 1:36, édité 1 fois (Raison : Peut-etre que ça pourrait résoudre ton problème :P)
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Mar 26 Avr 2016 - 8:18
merci
oui j'ai été voir chez yanfly
il a bien un module pour l'apprentissage des sorts mais il est assez complexe car généraliste :
en clair le joueur doit aller dans une liste de sort à apprendre et peux apprendre un sort si il a l'objet requis.
au contraire j'aimerai que le joueur puisse utiliser l'objet qui permet d'apprendre le sort directement sur le personnage avec à la clé un message si le personnage en question n'a pas le bon job ou le bon level
(à la manière de final fantasy XI pour ceux qui connaissent)
je ne connaissait pas Himeworks, je vais voir
[edit] il n'y a rien de ressemblant apparemment chez Himeworks non plus (cela dit mon niveau en anglais est assez faible)
avatar
LightNox
Membre

Nombre de messages : 1756
Age : 28
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

Re: restriction pour l'utilisation d'un objet

le Mar 26 Avr 2016 - 10:57
Déjà il faudrait que tu refasse un sujet plus explicite dans la section "Demande de Plugin" pour que l'on puisse t'aider au mieux.

Et détaille bien les fonctionnalités que tu aimerais avoir dans se plugin.

Et si moi ou un autre scripteur à un peu de temps à accorder à ta demander nous t'aiderons du mieux possible.

Je vais déjà faire l'analyse de ta demande primaire.
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: restriction pour l'utilisation d'un objet

le Jeu 28 Avr 2016 - 9:04
Contenu sponsorisé

Re: restriction pour l'utilisation d'un objet

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