Partagez
Aller en bas
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Compétence en fonction de l'inventaire [résolu]

le Lun 25 Oct 2010 - 16:09
Bonsoir Smile


Voilà, j'aurais une question/demande.


Existe t'il un système (event, script, etc) qui fasse en sorte que certaines compétences ne soient utilisable
que lorsque le héros possède un nombre défini d'objets dans son inventaire ?
et je parle de compétence que l'on utilise en combat.


et si non, quelqu'un peut-il se lancer dans la conception d'un truc pareil ?^^



merci de votre attention et de vos futures réponses Smile


Dernière édition par Pharazon le Dim 31 Oct 2010 - 12:21, édité 2 fois
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Jeu 28 Oct 2010 - 14:57
Je connais un script comme ça :

http://wiki.pockethouse.com/index.php?title=Custom_Skill_Effects

Le probleme , c'est que ça consomme les objets et c'est pas forcement ce que tu veux ... Aprés , tu peux toujours supprimer le "$game_party.consume_item" .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Jeu 28 Oct 2010 - 14:59
je vais regarder ça et je te redis.

mais oui, je souhaiterais que ça consomme en même temps les objets.
je ne l'avais pas préciser dans l'énoncé.
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Jeu 28 Oct 2010 - 17:16
Oui c'est ce que je recherchais,

c'est parfait.


par contre, c'est en anglais :s
y a pas de tuto en français à tout hasard ? parce que je vais souffrir si 'il faut que j'analyse tout ça et doit
traduire en plus.^^


en tout cas, merci Smile
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Jeu 28 Oct 2010 - 17:22
Oui , c'est pas forcement évident .
Spécialement la partie "Configuration" . Le pire là-dedans , c'est que tu dois mettre des IDs d'icones . Alors si tu as un iconset fait maison , faut corriger .

C'est dommage parce que tu veux faire devient trés trés simple aprés .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Ven 29 Oct 2010 - 19:58
J'ai plus ou moins trouver la partie d'un des scripts qui permette d'utiliser des compétences en fonction
d'objets prérequis.
Mais par contre, je ne comprend pas trop comment mettre ça en place.
C'est plutôt dans les commentaires des skills ou directement dans le script qu'il faut agir ?


Voici la partie de script si ça peut aider :

Code:
#===============================================================================
# Lunatic Mode - Custom Skill Costs
#===============================================================================

class Game_Battler
 
  #--------------------------------------------------------------------------
  # new method: custom_skill_costs
  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  # In this section, you can modify the various skill cost types available or
  # create your own. By following the examples below, you can effectively
  # generate your own skill cost types and using this tag:
  # 
  #  <cost: phrase>
  #
  # Match phrase with a case below and follow the examples below to meet and
  # match your custom costs.
  #--------------------------------------------------------------------------
  def custom_skill_costs(skill, type)
    hash = YEM::BATTLE_ENGINE::SKILL_SETTINGS
    calc_cost = 0; use_icon = 0; suffix = "%s"; text_cost = "0"
    colour = hash[:mp_colour]; font_size = hash[:mp_size]
    can_use = false
    perform = (type == :perform)
    case skill.skill_cost
    #------------------------------------------------------------------------
    # <cost: x mp>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # This allows you to manually adjust the MP costs skills. Although its
    # ability is already present within the editor itself, this tag's purpose
    # is to allow you to create skills with an MP cost of higher than 999.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 2000 mp>
    # --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # This is a default-used template. Do not remove this.
    #------------------------------------------------------------------------
    when /(\d+)[ ](?:MP|SP)/i
      #---
      calc_cost = $1.to_i
      calc_cost = apply_skill_cost_changes(skill, calc_cost, "MP")
      calc_cost /= 2 if half_mp_cost
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.mp_cost
      suffix = hash[:mp_suffix]
      colour = hash[:mp_colour]
      font_size = hash[:mp_size]
      can_use = @mp >= calc_cost
      @mp -= calc_cost if perform
     
    #------------------------------------------------------------------------
    # <cost: x% maxmp>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # This tag allows you to create skills that cost a percentage of the
    # battler's MaxMP. That said, this value will always fluctuate depending
    # on the MaxMP of the battler.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 20% maxmp>
    #------------------------------------------------------------------------
    when /(\d+)([%%])[ ](?:MP|SP|MAXMP|MAXSP)/i
      #---
      calc_cost = maxmp * $1.to_i / 100
      calc_cost = apply_skill_cost_changes(skill, calc_cost, "MP")
      calc_cost /= 2 if half_mp_cost
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.mp_cost
      suffix = hash[:mp_suffix]
      colour = hash[:mp_colour]
      font_size = hash[:mp_size]
      can_use = @mp >= calc_cost
      @mp -= calc_cost if perform
     
    #------------------------------------------------------------------------
    # <cost: x hp>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # If you wish for skills to cost HP instead of MP, apply this tag to the
    # skill's notebox. Unlike MP skills, HP skills cannot bring HP to 0 so
    # they will stop short if the skill costs more than exact HP.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 2000 hp>
    #------------------------------------------------------------------------
    when /(\d+)[ ](?:HP|LP)/i
      #---
      calc_cost = $1.to_i
      calc_cost = apply_skill_cost_changes(skill, calc_cost, "HP")
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.hp_cost
      suffix = hash[:hp_suffix]
      colour = hash[:hp_colour]
      font_size = hash[:hp_size]
      can_use = @hp > calc_cost
      @hp -= calc_cost if perform
     
    #------------------------------------------------------------------------
    # <cost: x% maxhp>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # To make a skill cost a percentage of the user's MaxHP, use the above
    # tag. Just like the tag above, the skill cannot be used if it brings the
    # battler's HP to 0 or below.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 20% maxhp>
    #------------------------------------------------------------------------
    when /(\d+)([%%])[ ](?:HP|LP|MAXHP|MAXLP)/i
      #---
      calc_cost = maxhp * $1.to_i / 100
      calc_cost = apply_skill_cost_changes(skill, calc_cost, "HP")
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.hp_cost
      suffix = hash[:hp_suffix]
      colour = hash[:hp_colour]
      font_size = hash[:hp_size]
      can_use = @hp > calc_cost
      @hp -= calc_cost if perform
     
    #------------------------------------------------------------------------
    # <cost: x gold>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # To make skills cost gold, use the tag above. x is the amount of gold
    # spent when the skill takes action. Note that enemies do not have any
    # restrictions on using gold cost skills.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 2000 gold>
    #------------------------------------------------------------------------
    when /(\d+)[ ](?:GOLD|money)/i
      #---
      if self.actor?
        calc_cost = $1.to_i
        calc_cost = apply_skill_cost_changes(skill, calc_cost, "GOLD")
      else
        calc_cost = 0
      end
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.gold_cost
      suffix = hash[:gold_suffix]
      colour = hash[:gold_colour]
      font_size = hash[:gold_size]
      can_use = $game_party.gold > calc_cost
      $game_party.lose_gold(calc_cost) if perform
     
    #------------------------------------------------------------------------
    # <cost: x% gold>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # To cost a percentage of the player's total gold, use x%. Just like the
    # above tag, enemies using gold cost skills will have no restrictions.
    # This skill will consume a percentage of the player's total gold.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 20% gold>
    #------------------------------------------------------------------------
    when /(\d+)([%%])[ ](?:GOLD|money)/i
      #---
      if self.actor?
        calc_cost = $game_party.gold * $1.to_i / 100
        calc_cost = apply_skill_cost_changes(skill, calc_cost, "GOLD")
      else
        calc_cost = 0
      end
      #---
      text_cost = $1.to_s
      use_icon = Icon.gold_cost
      suffix = hash[:gold_suffixp]
      colour = hash[:gold_colour]
      font_size = hash[:gold_size]
      can_use = $game_party.gold > calc_cost
      $game_party.lose_gold(calc_cost) if perform
     
    #------------------------------------------------------------------------
    # <cost: x rage>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Rage is a new stat made to function as a new skill currency. It grows
    # as battlers take hits or dish out physical attacks themselves. Use the
    # tag above to make a skill cost rage instead of MP.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 2 rage>
    #------------------------------------------------------------------------
    when /(\d+)[ ]RAGE/i
      #---
      calc_cost = $1.to_i
      calc_cost = apply_skill_cost_changes(skill, calc_cost, "RAGE")
      #---
      text_cost = calc_cost.to_s
      use_icon = Icon.rage_cost
      suffix = hash[:rage_suffix]
      colour = hash[:rage_colour]
      font_size = hash[:rage_size]
      @rage = 0 if @rage == nil
      can_use = @rage >= calc_cost
      @rage -= calc_cost if perform
     
    #------------------------------------------------------------------------
    # <cost: x item:y>
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # This will allow you to make a skill cost 2 of an item to use. The y
    # value will be the database's relative item ID value. This will check
    # whether or not the party's inventory has enough to use. Note that if an
    # enemy is using this skill, no items will be consumed.
    # --- Example --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # <cost: 2 item:1>
    #------------------------------------------------------------------------
    when /(\d+)[ ]ITEM:(\d+)/i
      #---
      calc_cost = self.enemy? ? 0 : $1.to_i
      name = $data_items[$2.to_i].name.upcase
      calc_cost = apply_skill_cost_changes(skill, calc_cost, name)
      #---
      item = $data_items[$2.to_i]
      text_cost = calc_cost.to_s
      use_icon = item.icon_index
      can_use = $game_party.item_number(item) >= calc_cost
      if perform and self.actor?
        calc_cost.times do; $game_party.consume_item(item); end
      end
     
    #------------------------------------------------------------------------
    # Stop editting past this point.
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Values created in the damage formula will be applied here to total HP
    # and MP damage after undergoing variance and elemental adjustments.
    #------------------------------------------------------------------------
    end
    use_icon = skill.cost_icon if skill.cost_icon != nil
    case type
    when :perform;  return
    when :calc_cost; return calc_cost
    when :text_cost; return text_cost
    when :can_use;  return can_use
    when :use_icon;  return use_icon
    when :suffix;    return suffix
    when :font_size; return font_size
    when :colour;    return colour
    end
  end
 
end # Game_Battler

Merci d'avance Smile
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mar 2 Nov 2010 - 16:42
Up du post Smile

Personne n'a une idée de comment fonctionne cette partie du script ?

ps : c'est la section "cost : item" qui m'intéresse, mais je pense qu'elles fonctionne toutes de la même façon.
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 10:33
Dans le commentaire du skill , oui .

Je sais que c'est un "lunatic" mode (cad un mode expert) mais ce que tu veux faire est déja codé par défaut .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 10:50
Désolé dricc, mais - mise à part le fait qu'il faille mettre un bout de code dans le commentaire - je n'ai rien compris. :s
là, c'est vraiment compliqué pour moi (ou alors, j'analyse pas correctement).


tu ne pourrais pas me faire un exemple de ce qu'il faudrait rentrer dans le commentaire ?
du genre :
mon sort brasier nécessite deux bout de bois (ID 01) et un briquet (ID 02)

que dois-je inscrire dans les commentaires de mon sort ?


merci Smile
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 11:27
Code:

<cost: 2 item:1>
<cost: 1 item:2>

Mais j'ai un doute si on peux mettre plusieurs coûts ou pas .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 12:13
Ok, je viens de tester et ça marche nikel (en fait, c'était vraiment tout simple)

par contre, tu as raison, ça ne prend pas en compte plusieurs objets, mais seulement le dernier demander.
dans l'exemple, ça ne prend que l'objet ID02.

J'aurais préféré pouvoir utiliser plusieurs items, mais si ce n'est pas possible je ferais avec.



en tout cas, merci beaucoup pour ton aide et tes réponses Smile
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 13:42
C'est là qu'intervient le niveau expert dont je vais humblement essayer de me hisser lol

J'ai bricolé un "when" en plus pour gérer 2 objets :

Code:

when /(\d+)[ ]ITEM:(\d+)[ ](\d+)[ ]ITEM:(\d+)/i
      #---
      calc_cost = self.enemy? ? 0 : $1.to_i
      name = $data_items[$2.to_i].name.upcase
      calc_cost = apply_skill_cost_changes(skill, calc_cost, name)
      calc_cost2 = self.enemy? ? 0 : $3.to_i
      name2 = $data_items[$4.to_i].name.upcase
      calc_cost2 = apply_skill_cost_changes(skill, calc_cost2, name2)
      #---
      item = $data_items[$2.to_i]
      item2 = $data_items[$4.to_i]
      text_cost = calc_cost.to_s+ " " + calc_cost2.to_s
      use_icon = item.icon_index
      can_use = $game_party.item_number(item) >= calc_cost and $game_party.item_number(item2) >= calc_cost2
      if perform and self.actor?
        calc_cost.times do; $game_party.consume_item(item); end

        calc_cost2.times do; $game_party.consume_item(item2); end

end
 

utilisation :

Code:

<cost: 2 item:1 1 item:2>

Pas testé . Je suis meme pas sur que ça plante pas .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 16:10
ok, je test ça tout à l'heure, voir si ça fonctionne Smile



EDIT : Alors, ça marche bien avec les deux items.
le seul hic, c'est que le sort consomme le même nombre du premier objet et du deuxième, même si je
demande des nombres différents.
en gros, si je tape :
, le sort me consommera 60 objets ID1 et ID2

et bizarrement, même si je n'ai pas 60 objet ID02.
dricc
dricc
Membre

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

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 17:11
Ouais en effet .
Je viens de telecharger la démo et implémenter mon truc , ça va pas .

Je vais débugguer un peu .

Quand meme , c'est super joli ce moteur de combat melody .


EDIT : bon , met un # devant cette ligne :
calc_cost2 = apply_skill_cost_changes(skill, calc_cost2, name2)
et ça marche . Apparement ,ça modifie le prix en fonction d'un état (pour par exemple avoir un statut -50%MP) , donc pas utile dans notre cas .
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compétence en fonction de l'inventaire [résolu] 522164]
Date d'inscription : 14/04/2010

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Mer 3 Nov 2010 - 17:49
Génial, ça marche parfaitement.

Merci beaucoup Dricc Smile
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 26
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires Compétence en fonction de l'inventaire [résolu] 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

Compétence en fonction de l'inventaire [résolu] Empty Re: Compétence en fonction de l'inventaire [résolu]

le Ven 2 Sep 2011 - 23:42
résolu => déplacé.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum