AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 [VX] Script de Forge

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: [VX] Script de Forge   Mer 3 Sep 2008 - 0:16

Salut tout le monde,

Suite à une demande Cabaji, j'ai effectué une refonte du script de forge créé par lb_guilherme. Le script a été entièrement recréé afin de permettre de nouvelles fonctionalités:


  • Définir un coût en gold.
  • Avoir un nombre infini de groupes ou d'objets dans les groupes.
  • Aucune limite au nombre d'ingrédients dans le jeu (Bien que pour chaque "recette" une limite existe toujours)
  • Possibilité d'utiliser des armes et armures comme ingrédients (ex: épée + ruby = épée de feu)
  • Une fenetre de help pour afficher la description de l'objet forgé (comme menu item)
  • Possibilité que certains objets ne soient disponible que si certains interrupteurs sont activés.


La dernière option permet d'avoir différentes forges dans le jeu, par exemple une pour l'alchimie et une autre pour les armes. Cela permettra aussi d'avoir certaines armes qui apparaissent dans la forge suite à l'obtention de certains objets (Livre de compétence ou outil de travail) ou bien suite à une évolution dans l'histoire.

J'ai aussi créé un démo afin de présenter le nouvel outil de forge, disponible à cette adresse: megaupload.com 6JV6C4DN







INSTALLATION DU SCRIPT: à placer au dessus du main.
CONFIGURATION: expliqué à la ligne 114 du script.

Aussi, si des vétérans du script ont des commentaires ou des idées concernant le code de mon script (structure, standards, good practices, etc), n'hésitez pas à m'en faire part, je suis très interessé à m'améliorer.


Dernière édition par jebbou le Mar 30 Sep 2008 - 16:30, édité 6 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 0:18

Voici le script à utiliser (PART 1):

Code:
# =========================================
#  FORGE 1.0
# =========================================
#
#  Author: Jebbou AKA LorD_DaoS[ATF]
#  Version 1.0 (02/09/2008)
#  Configuration: à la ligne 114
# =========================================

      class Crafted_Item
      def initialize (item_id, item_type, required_switch, gold_cost, reqComponentID = [], reqComponentQty = [], reqComponentType = [])
          @item_id = item_id
          @item_type = item_type
          @required_switch = required_switch
          @gold_cost = gold_cost
          @reqComponentID = reqComponentID
          @reqComponentType = reqComponentType
          @reqComponentQty = reqComponentQty
        end

        attr_reader:item_id
        attr_reader:item_type
        attr_reader:required_switch
        attr_reader:gold_cost
        attr_reader:reqComponentID
        attr_reader:reqComponentType
        attr_reader:reqComponentQty

        def getItem
          tempItem = nil
          case @item_type
            when 1 then tempItem = $data_armors[@item_id]
            when 2 then tempItem = $data_weapons[@item_id]
            when 3 then tempItem = $data_items[@item_id]
            else print ("ERROR - BAD ITEM TYPE")
            end
            return tempItem
          end

        def GetIngredientItems

          tempItem = nil
          tempItemList = []
          for index in 0 ... @reqComponentID.size
            case @reqComponentType[index]
              when 1 then tempItem = $data_armors[@reqComponentID[index]]
              when 2 then tempItem = $data_weapons[@reqComponentID[index]]
              when 3 then tempItem = $data_items[@reqComponentID[index]]
              else print ("ERROR - BAD ITEM TYPE")
            end           
            tempItemList.push(tempItem)
          end
         
          return tempItemList
        end

        def isCraftable?
            isCraftable = true
            arrIngredients = self.GetIngredientItems
            if $game_party.gold < @gold_cost
                isCraftable = false
            else
                for i in 0 ... arrIngredients.size
                    if  $game_party.item_number( arrIngredients[i] ) < @reqComponentQty[i]
                      isCraftable = false
                    end
                  end
                end
            return isCraftable
          end
    end

    class Crafted_Item_Group
        def initialize (name)
            @name = name
            @arrItems = []
          end

        attr_reader:name

        def push (item)
          @arrItems[@arrItems.size] = item
        end

        def getItem(index)
          return @arrItems[index]
        end


        def getAvailableItemList

          arrAvailableItems = []
          for i in 0 ... @arrItems.size
            if @arrItems[i].required_switch >= 0
              if $game_switches[@arrItems[i].required_switch] == true
                arrAvailableItems.push(@arrItems[i])
              end
            else
              arrAvailableItems.push(@arrItems[i])
            end
          end
          return  arrAvailableItems
        end
       
        def getAvailableGroupSize
          arrTemp = self.getAvailableItemList
          return arrTemp.size
        end

    end


module Forge

    # Numéro de l'icone correspondant au pièces de monnaie courante
    # NOTE: Si vous ne voulez pas d'icone, mettez -1 au lieu du numéro
    GOLDICON = 147
   
    # Instructions
    #  ======================================
    # 1) CONFIGURATION DES GROUPES
    #  ======================================
    #    On doit d'abord créer les groupes d'objets à l'aide de la ligne
    #              ARRGROUPS[0] = Crafted_Item_Group.new("Armes simples")
    #      Notez que le numéro entre crochet [] est spécifique à chaque groupe

    #  ======================================
    # 2) CONFIGURATION DES OBJETS
    #  ======================================
    # Ensuite, pour chacun des groupes, on doit définir les objets se trouvant à l'intérieur.
    # Cela implique de créer, pour chaque objet, une ligne de code ressemblant à :
    #        ARRGROUPS[x].push(Crafted_Item.new(a, b, c, d, [e1, e2], [f1, f2], [g1, g2]))
    #  Le code entre crochet (x) doit correspondre au numéro de groupe (de zéro à infini)

    # Voici les paramètres qui sont défini dans cette ligne :
    #    a) numéro de l'objet à créer
    #    b) Type de l'objet à créer (Armure=1, Arme=2, Objet=3)
    #    c) Interrupteur nécessaire pour afficher (-1 = aucun interrupteur nécessaire)
    #    d) Coût en or
    #    e) Array contenant la liste des ID des objets nécessaire à la conception de l'objet (Jusqu'à 8)
    #    f) Dans le même ordre,  array contenant les quantités nécessaires de chacun des objets défini en "e)"
    #    g) Dans le même ordre,  array contenant les types de chacun des objets défini en "e)"
    #          (Armure=1, Arme=2, Objet=3)

    #  ======================================
    #  3) APPEL DE LA FORGE
    #  ======================================
   
    # Pour appeller la forge, il suffit d'ajouter la ligne suivante dans un événement:
    #                $scene = Scene_Forge.new
   
    # Lorsque les interrupteurs sont utilisés, on doit les définir AVANT d'appeller l'événement.  Voici différentes
    # possibilité d'utilisation d'interrupteurs, lors de la configuration:

    #    1) Laisser à -1 va permettre à l'objet d'apparaitre dans lors de tous les appels de la forge.  C'est l'option par défaut.

    #    2) Si on veut avoir différentes forges avec différents objets disponible, on doit définir le numéro de l'interrupteur
    #        pour chaque objet durant la configuration.  Lors de l'exécution de l'événement qui appèle la forge, on définit les
    #        interrupteurs AVANTd'appeller la forge.
 
    #    3) On peut définir que certains événements dans le jeu définissent une progression dans le niveau de maitrise
    #        de la forge (en définissant certains
    #  NOTE: Dans le démo, plusieurs exemples expliquent les différentes options possibles pour ces fusions:
   
   
    ARRGROUPS = []
    ARRGROUPS[0] = Crafted_Item_Group.new("Armes simples")
    ARRGROUPS[0].push(Crafted_Item.new(2, 2, 10, 50, [25], [2], [3]))
    ARRGROUPS[0].push(Crafted_Item.new(6, 2, 10, 100, [26, 25], [1,1], [3,3]))
    ARRGROUPS[0].push(Crafted_Item.new(10, 2, 10, 200, [27, 26], [1,1], [3,3]))

    ARRGROUPS[1] = Crafted_Item_Group.new("Armes avancées")
    ARRGROUPS[1].push(Crafted_Item.new(13, 2, 11, 450, [27, 25,28], [2,1,1], [3,3,3]))
    ARRGROUPS[1].push(Crafted_Item.new(21, 2, 11, 1200, [24,26], [2,1], [3,3]))
    ARRGROUPS[1].push(Crafted_Item.new(12, 2, 11, 1450, [27,26,25], [1,1,1], [3,3,3]))

    ARRGROUPS[2] = Crafted_Item_Group.new("Armes enchantées")
    ARRGROUPS[2].push(Crafted_Item.new(31, 2, 12, -1, [13, 29], [1,1], [2,3]))
    ARRGROUPS[2].push(Crafted_Item.new(32, 2, 12, -1, [21, 28], [1,1], [2,3]))
    ARRGROUPS[2].push(Crafted_Item.new(33, 2, 12, -1, [21,28, 29], [1,1,1], [2,3,3]))

    ARRGROUPS[3] = Crafted_Item_Group.new("Potions")
    ARRGROUPS[3].push(Crafted_Item.new(1, 3, 13, -1, [34,32], [1,1], [3,3]))
    ARRGROUPS[3].push(Crafted_Item.new(2, 3, 13, -1, [1, 32], [1,1], [3,3]))
    ARRGROUPS[3].push(Crafted_Item.new(3, 3, 13, -1, [2,31, 34], [1,1,1], [3,3,3]))
   
    ARRGROUPS[4] = Crafted_Item_Group.new("Remèdes")
    ARRGROUPS[4].push(Crafted_Item.new(4, 3, 13, -1, [33, 31], [1,1], [3,3]))
    ARRGROUPS[4].push(Crafted_Item.new(5, 3, 13, -1, [33, 34], [1,1], [3,3]))
    ARRGROUPS[4].push(Crafted_Item.new(6, 3, 13, -1, [31,32, 33], [1,1,1], [3,3,3]))
    ARRGROUPS[4].push(Crafted_Item.new(7, 3, 13, -1, [31,32, 34], [2,1,1], [3,3,3]))

    ARRGROUPS[5] = Crafted_Item_Group.new("Armures")
    ARRGROUPS[5].push(Crafted_Item.new(1, 1, 14, -1, [41, 25], [2,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(2, 1, 14, -1, [42,26], [1,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(3, 1, 14, -1, [41,27, 29], [1,1,1], [3,3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(4, 1, 15, -1, [42,27, 28], [1,1,1], [3,3,3]))

    ARRGROUPS[5].push(Crafted_Item.new(7, 1, 14, -1, [40, 25], [1,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(8, 1, 14, -1, [41, 26], [1,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(9, 1, 15, -1, [27,41, 28], [1,1,1], [3,3,3]))
   
    ARRGROUPS[5].push(Crafted_Item.new(13, 1, 14, -1, [41,40, 28], [1,1,1], [3,3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(14, 1, 14, -1, [41, 26], [1,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(15, 1, 15, -1, [42,30], [1,1], [3,3]))
   
    ARRGROUPS[5].push(Crafted_Item.new(17, 1, 14, -1, [40,41, 29], [1,1,1], [3,3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(18, 1, 14, -1, [41, 28], [2,1], [3,3]))
    ARRGROUPS[5].push(Crafted_Item.new(19, 1, 15, -1, [27,40, 30], [2,1,1], [3,3,3]))
  end


Dernière édition par jebbou le Mer 3 Sep 2008 - 11:55, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 0:19

Voici le script (PART 2)

Code:


class Scene_Forge < Scene_Base
    def start
        super
        create_menu_background

        # Définir quels groupes ont des objets, en fonction des interrupteurs activés.
        @arrCurrentGroups = []
        for i in 0 ... Forge::ARRGROUPS.size
          if Forge::ARRGROUPS[i].getAvailableGroupSize > 0
          @arrCurrentGroups.push(Forge::ARRGROUPS[i])
          end
        end


        # Création de la fenêtre pour l'aide sur les objets
        @help_window = Window_Help.new

        # Création de la fenêtre pour les groupes d'objets
        @craft_group_window = Window_ForgeGroups.new (260, Window_Base::WLH * 12 + 32, @arrCurrentGroups)
        @craft_group_window.x = 0
        @craft_group_window.y = Window_Base::WLH + 32
        @craft_group_window.visible = true
        @craft_group_window.active = true
        @craft_group_window.index = 0

        # Création de la fenêtre pour les objets
        @craft_objects_window = Window_ForgeObjectList.new (260,Window_Base::WLH * 12 + 32, [])
        @craft_objects_window.x = 0
        @craft_objects_window.y = Window_Base::WLH + 32
        @craft_objects_window.visible = false
        @craft_objects_window.active = false
        @craft_objects_window.help_window = @help_window

       
        @craft_ingredients_window = Window_IngredientList.new (260,Window_Base::WLH * 12 + 32, [])
        @craft_ingredients_window.x = 260
        @craft_ingredients_window.y = Window_Base::WLH + 32
        @craft_ingredients_window.visible = false
        @craft_ingredients_window.active = false
      end
     


    def terminate
        super
        dispose_menu_background
        @help_window.dispose
        @craft_group_window.dispose
        @craft_ingredients_window.dispose
    end

    def update
        super
        update_menu_background
        @help_window.update
        @craft_group_window.update
        @craft_objects_window.update
        @craft_ingredients_window.update
        if @craft_group_window.active == true
            craft_group_update
          elsif @craft_objects_window.active = true
            craft_objects_update
            craft_ingredients_update
        end
    end

    # ======================================================================
    # craft_group_update : Saisie d'input dans la fenêtre des groupes d'objets
    # ======================================================================
    def craft_group_update
        if Input.trigger?(Input::B)
            Sound.play_cancel
            $scene = Scene_Map.new
          elsif Input.trigger?(Input::C)

            if (@craft_group_window.commands.size > 0)
             
            @craft_objects_window.set_new_parameters (@arrCurrentGroups[@craft_group_window.index].getAvailableItemList)
            @craft_group_window.visible = false
            @craft_group_window.active = false
            @craft_objects_window.visible = true
            @craft_objects_window.active = true
            @craft_objects_window.index = 0
            @craft_ingredients_window.visible = true
          else
            Sound.play_cancel
            end
        end
      end
     
    # ======================================================================
    # craft_group_update : Saisie d'input dans la fenêtre des objets
    # ======================================================================
      def craft_objects_update
        if Input.trigger?(Input::B)

            @craft_objects_window.set_new_parameters ([])
            @craft_objects_window.visible = false
            @craft_objects_window.active = false
           
            @craft_ingredients_window.set_new_parameters ([],[], 0)
            @craft_ingredients_window.visible = false
            @craft_ingredients_window.active = false
           
            @craft_group_window.visible = true
            @craft_group_window.active = true
            @craft_group_window.index = 0

          elsif Input.trigger?(Input::C)
                currentObject = @craft_objects_window.commands[@craft_objects_window.index]
                if currentObject.isCraftable?
                    Sound.play_shop
                    $game_party.gain_item(currentObject.getItem, 1)
                    arrIngredients = currentObject.GetIngredientItems
                    for i in 0 ... arrIngredients.size
                        $game_party.lose_item(arrIngredients[i], currentObject.reqComponentQty[i] )
                      end
                      if currentObject.gold_cost > 0
                            $game_party.lose_gold(currentObject.gold_cost )
                      end
                      @craft_objects_window.refresh
                      @craft_ingredients_window.refresh
                else
                  Sound.play_buzzer
                end
            end
          end

          def craft_ingredients_update
            # Récupérer l'objet sélectionner
            currentObject = @craft_objects_window.commands[@craft_objects_window.index]

            # Charger la liste
            if currentObject != nil
              @craft_ingredients_window.set_new_parameters(currentObject.GetIngredientItems, currentObject.reqComponentQty, currentObject.gold_cost)
            end
            end
end


class Window_ForgeGroups < Window_Selectable
      attr_reader:commands
 
  # Note : Commands est une liste de groupes d'objets de type Crafted_Item_Group
  def initialize (width, height, commands)
        super(0, 0, width, height )
        @commands = commands
        @column_max = 1
        @item_max = commands.size
        refresh
      end

  def refresh
    @item_max = @commands.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end

    #--------------------------------------------------------------------------
  # * Draw Item
  #    index : no de l'item
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(rect, @commands[index].name)
  end
end




class Window_ForgeObjectList < Window_Selectable
    attr_reader:commands

    # Note: itemGroup est une liste des tous les objets disponibles, de type Crafted_Item
    def initialize(width, height, itemGroup, spacing = 32 )

      super(0, 0, width, height, spacing)
        @commands = itemGroup
        @item_max = itemGroup.size
        @column_max = 1

        refresh
        self.index = 0
    end

    def refresh
        self.contents.clear
        create_contents
        for i in 0...@item_max
          draw_item(i)
        end
    end
       
    def set_new_parameters (objectList)
        @commands = objectList
        @item_max =  objectList.size
        @help_window.set_text("")
        refresh
    end

    def draw_item(index, enabled = true)
        rect = item_rect(index)
        self.contents.clear_rect(rect)
        enabled = @commands[index].isCraftable?
        draw_item_name(@commands[index].getItem, rect.x, rect.y, enabled)
    end

    def update_help
        item = @commands[index].getItem
      @help_window.set_text(item == nil ? "" : item.description)
    end
end


class Window_IngredientList < Window_Selectable
    attr_reader:commands

    def initialize(width, height, itemGroup, spacing = 32 )

      super(0, 0, width, height)
        @commands = itemGroup
        @item_max = itemGroup.size
        @column_max = 1
        @reqQty = []
        @gold_cost  = 0
        refresh
    end

    def set_new_parameters (objectList, reqQty, gold_cost)
        @commands = objectList
        @reqQty = reqQty
        @gold_cost = gold_cost
        @item_max =  objectList.size
        refresh
    end

    def refresh
        # Initialiser l'affichage
        self.contents.clear
        create_contents

        # Afficher le coût en gold, lorsque applicable
        if @gold_cost > 0
            rect = item_rect(0)
            if Forge::GOLDICON > 0
                draw_icon(Forge::GOLDICON, rect.x, rect.y)
            end
            self.contents.draw_text( rect.x + 24, rect.y, rect.width - 32, rect.height, Vocab.gold)
            self.contents.font.color = ($game_party.gold < @gold_cost ? self.knockout_color : self.normal_color)
            self.contents.draw_text(rect, sprintf("%2d /%2d", $game_party.gold, @gold_cost), 2)
        end

        # Afficher les ingrédients
        for i in 0...@item_max
          draw_item(i)
        end
    end

    def draw_item(index, enabled = true)

        # Sauter une position si le coût en gold a été affiché
        itemPosition = index + (@gold_cost > 0 ? 1:0)
        rect = item_rect(itemPosition)
        self.contents.clear_rect(rect)

        # Afficher l'ingrédient courant
        draw_item_name(@commands[index], rect.x, rect.y, enabled)

        # Afficher le nombre d'ingrédient requis pour ce type, ainsi que le nombre détenu par le party
        number = $game_party.item_number(@commands[index])
        self.contents.font.color = (number < @reqQty[index] ? self.knockout_color : self.normal_color)

        self.contents.draw_text(rect, sprintf("%2d /%2d", number, @reqQty[index]), 2)
    end
  end


Dernière édition par jebbou le Mer 3 Sep 2008 - 12:00, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Illusionniste Lv.12
Illusionniste Lv.12


Masculin Age : 22
Inscrit le : 08/08/2008
Messages : 769

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 7:37

merci pour ce script et Cabaji sera heureux surement
sa va pourvoir me servir a quelque chose

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 11:17

N'hésitez pas à me laisser savoir si vous trouvez des bugs, soit dans le démo ou le script.

Merci!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 11:52

Heu... Merci ça sera utile

mais Je que je veux: c'est une forge et alchimie mais ou on utilise des objet comme des pierre bleu,... que l'on trouve sur certains monstre mais que pour la forger il faut payer au forgeron une certaine somme

Exemple: Pour une épée, il faut 5pierre bleu et 3 pierre rouge + payer 90 pièce d'or tu comprend?
Revenir en haut Aller en bas
Illusionniste Lv.12
Illusionniste Lv.12


Masculin Age : 22
Inscrit le : 08/08/2008
Messages : 769

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 11:54

s'il te plait tu peux changer tes sript en code, car c'est pas facile a avoir en spoiler

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 11:55

Pas de problème, le script le fait aussi, et c'est dans le démo! Smile

En fait, dans le premier screenshot c'est un exemple parfait de ce que tu veux faire.

Un coût en or, plus des matériaux qui sont des objets.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ex-Admin-Script
Ex-Admin-Script
avatar


Masculin Age : 35
Inscrit le : 26/05/2008
Messages : 2360

MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 13:49

Pas encore tester complètement, mais vraiment bien. Merci d'avoir répondu à cette demande. Je te donne tes points.

_________________
Hikari.

«Si je comprenais mieux ce que tu ne comprends pas, ça m'aiderait à t'aider à mieux comprendre.», Hikari
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mirainohikari.deviantart.com
Invité
Invité



MessageSujet: Re: [VX] Script de Forge   Mer 3 Sep 2008 - 13:54

Ha.... OK.... ben merci alors C\\'est bien
Revenir en haut Aller en bas
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 28/03/2008
Messages : 107

MessageSujet: Re: [VX] Script de Forge   Lun 22 Sep 2008 - 16:48

Excusez moi mais serait il possible de le scinder?

J'aimerais qu'un perso me forge des armes et un autre forge une autre sorte d'objet.Le problème, c'est que l'un peut forger ce que l'autre forge...

Comprenez vous?

Forge arme >< forge objet

deux forges distincts quoi.

C'est possible?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Lun 22 Sep 2008 - 16:59

Salut Whurio,

C'est possible, et le script le fait déjà. Pour accomplir ce que tu veux faire, tu dois utiliser deux interrupteurs. Par exemple, tu pourrais avoir un interrupteur appellé "forge_armes" (disons l'interrupteur #15) et un autre appellé "forge_cuisine" (disons l'interrupteur #16). Avant d'appeller le script dans la forge pour les armes, tu dois faire ceci dans ton événement:

Interrupteur forge_armes = activé
Interrupteur forge_cuisine = désactivé
$scene = Scene_Forge.new


Dans ton autre forge, disons celui de la cuisine, tu dois faire l'inverse:

Interrupteur forge_armes = désactivé
Interrupteur forge_cuisine = activé
$scene = Scene_Forge.new


(Note: L'activation des interrupteurs ne se fait PAS dans le script, seulement par les fonctions de l'événement)

Mais le plus important, c'est que dans la configuration et pour chacun des objets à créer, tu définisses quel interrupteur doit être activé pour que l'objet soit présent dans la forge. Ca devrait être le 3ème paramètre de la configuration des objets. Dans l'exemple ci-dessous, j'ai créé trois groupes de forge. Le premier groupe va apparaitre dans la forge des armes, et les deux autres groupes dans la forge de cuisine.

ARRGROUPS = []
ARRGROUPS[0] = Crafted_Item_Group.new("Armes")
ARRGROUPS[0].push(Crafted_Item.new(2, 2, 15, 50, [25], [2], [3]))
ARRGROUPS[0].push(Crafted_Item.new(6, 2, 15, 100, [26, 25], [1,1], [3,3]))
ARRGROUPS[0].push(Crafted_Item.new(10, 2, 15, 200, [27, 26], [1,1], [3,3]))

ARRGROUPS[1] = Crafted_Item_Group.new("Pâtes")
ARRGROUPS[1].push(Crafted_Item.new(13, 2, 16, 450, [27, 25,28], [2,1,1], [3,3,3]))
ARRGROUPS[1].push(Crafted_Item.new(21, 2, 16, 1200, [24,26], [2,1], [3,3]))
ARRGROUPS[1].push(Crafted_Item.new(12, 2, 16, 1450, [27,26,25], [1,1,1], [3,3,3]))

ARRGROUPS[2] = Crafted_Item_Group.new("Pizza")
ARRGROUPS[2].push(Crafted_Item.new(23, 2, 16, 450, [27, 25,28], [2,1,1], [3,3,3]))
ARRGROUPS[2].push(Crafted_Item.new(51, 2, 16, 1200, [24,26], [2,1], [3,3]))
ARRGROUPS[2].push(Crafted_Item.new(12, 2, 16, 1450, [27,26,25], [1,1,1], [3,3,3]))

J'ai codé la forge de cette façon afin d'être assez flexible, et de pouvoir faire varier la forge selon les interrupteurs, afin de pouvoir contrôler facilement les objets disponible directement dans le jeu.

Cordialement,

Jebbou




PS: Et si l'interrupteur nécessaire est défini à -1, alors il apparaitra dans toutes les forges. Par exemple:
ARRGROUPS[0].push(Crafted_Item.new(10, 2, -1, 200, [27, 26], [1,1], [3,3]))

EDIT: Dans le démo, j'exploite les options de forge à fond :

  • Il existe plusieurs forges différentes, tel que l'alchimiste et le forgeron
  • Il est possible d'apporter le marteau de Thor au forgeron pour augmenter le nombre d'objets disponibles dans la forge.
  • Il existe une forge "libre service" (cachée dans l'école de magie), dans laquelle on peut forger ce qu'on veut selon les livres de compétences qu'on a aquis.

Ceci démontre la flexibilité et les possibilités de la forge, et tout se fait par des activations d'interrupteurs.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 26
Inscrit le : 28/03/2008
Messages : 107

MessageSujet: Re: [VX] Script de Forge   Lun 22 Sep 2008 - 17:39

désolé, j'ai pas vraiment réfléchit sur ce coup là...

J'aurais du le deviner que c'était déjà prévu.

Merci de la réponse rapide te passe une bonne journée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mar 30 Sep 2008 - 15:27

Si quelqu'un a utilisé mon script, et a des commentaires qui pourraient m'aider à l'améliorer, il est le bienvenue. Voici les changements que je prévois pour la version 2.0:


  • Ajout simplifié des ingrédients à une recette dans la configuration
  • Affichage des caractéristiques de l'arme lorsqu'applicable (pas pour des objets)


Dernière édition par jebbou le Mer 15 Oct 2008 - 16:57, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: [VX] Script de Forge   Mar 30 Sep 2008 - 18:13

serait -til possible de:

Lors de l'achat de l'arme, qu'un message s'affiche: voulez-vous l'équiper maintenant? choix: oui/non
Si oui,que l'arme équipé avant retourne dans les objet
si non, que l'arme retourne dans les objet sans être équiper.
Revenir en haut Aller en bas
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Mar 30 Sep 2008 - 18:20

Hey Cabaji,

Tu avais pas demandé quelque chose de similaire pour le magasin? Si oui, est-ce que ca avait été répondu? Si c'est le cas, je pourrais peut-être reprendre ce qui avait été fait.

Jebbou
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vagabond Lv.5
Vagabond Lv.5
avatar


Inscrit le : 17/07/2008
Messages : 89

MessageSujet: Re: [VX] Script de Forge   Dim 9 Nov 2008 - 10:22

Alors là.. Je dis BRAVO et MERCI c'est pile ce dont j'avais besoin.
Merci vraiment !

Evite les necro-messages qui servent à rien, la prochaine fois c'est un averto >w<
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vagabond Lv.5
Vagabond Lv.5
avatar


Inscrit le : 17/07/2008
Messages : 89

MessageSujet: Re: [VX] Script de Forge   Ven 14 Nov 2008 - 6:06

Bon j'ai une petite demande :
serait-il possible de mettre un système pour que on ne voit une arme que si on a un certain objet (le plan de l'arme par exemple).

Pour que dans le jeu, on achète le plan d'une arme pour la construire chez nous après, je voudrais que la forge soit "dynamique"

Merci d'avance.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Ven 14 Nov 2008 - 14:05

Salut,

Tout est basé sur des interrupteurs, donc si un joueur posède un objet, tu peux activer l'interrupteur pour voir certains objets. Si tu jettes un coup d'oeil au démo, c'est déjà possible. J'ai placé au fond de la mine derrière le village un marteau de Thor, qui est nécessaire afin de faire plus d'armes dans la forge du village.

Un autre exemple de ceci est que, dans le même démo, tu peux aquérir des livres de connaissances (rouge), qui trainent un peu partout. Lorsque tu accèdes au laboratoire de l'école de magie, tu peux forger les objets pour lesquels tu as obtenu les livres de connaissances correspondants. Je crois que c'est exactement ce que tu veux faire.

Cordialement,

Jebbou
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vagabond Lv.5
Vagabond Lv.5
avatar


Inscrit le : 17/07/2008
Messages : 89

MessageSujet: Re: [VX] Script de Forge   Ven 14 Nov 2008 - 21:23

OK, merci
j'ai pas testé la démo car marche pas chez moi.
Je vais regarder les script un peu plus précisément.
Merci Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Ven 14 Nov 2008 - 21:45

Adrezo,

Es-tu capable d'ouvrir le projet dans RMVX au moins? Si c'est le cas et que ca ne fonctionne toujours pas, je ferai une version compilé avec le RTP.

Cordialement,

Jebbou
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vagabond Lv.5
Vagabond Lv.5
avatar


Inscrit le : 17/07/2008
Messages : 89

MessageSujet: Re: [VX] Script de Forge   Sam 15 Nov 2008 - 1:53

Je l'ouvre dans l'éditeur, mais quand je veux tester (ou lancer directement sans passer par rpgmvx) je vois le titre, je mets "nouvelle aprtie" et la "erreur script cache line 80 " failed to creat bitmap"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Doyen
Doyen
avatar


Masculin Age : 39
Inscrit le : 20/08/2008
Messages : 2485

MessageSujet: Re: [VX] Script de Forge   Sam 15 Nov 2008 - 15:45

Bizzare. Je ferai une version avec le RTP. Peut-être que ca résoudra le problème.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Vagabond Lv.5
Vagabond Lv.5
avatar


Inscrit le : 17/07/2008
Messages : 89

MessageSujet: Re: [VX] Script de Forge   Sam 15 Nov 2008 - 16:59

J'ai téléchargé une autre version du logiciel. et c'est bon ça marche, j'ai pu tester "en live" ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Habitant Lv.6
Habitant Lv.6
avatar


Masculin Age : 21
Inscrit le : 06/05/2009
Messages : 121

MessageSujet: Re: [VX] Script de Forge   Mer 9 Déc 2009 - 16:48

Petit bug, qui m'était arrivé aussi avec l'autre script de forge ICI vous pouvez voir les screens tout en bas de la page, quand j'améliore mon arme, je ne peut pas l'équiper...
J'ai tout bien regardé mais sa ne marche pas...
Voici quand même d'autres screens :







Voilà, et si vous pouviez m'aider, ça serait super !

_________________
Six russes c'est six Slaves et s'ils s'lavent c'est qu'ils se nettoient et si ce n'est toi c'est donc ton frère ??
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [VX] Script de Forge   

Revenir en haut Aller en bas
 

[VX] Script de Forge

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant

 Sujets similaires

-
» Appeler un script/ une page PHP?
» [Script RMVX] Fenêtre additionnelle
» After Effects script
» [demande] conversion de script
» Script AllForum v3.0.0a

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Divers-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit