Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Alchimie
MessagePublié: 18 Fév 2007, 18:48 
Membre royal(e)

Inscrit le: 07 Nov 2006, 01:00
Messages: 786
Points d'aide: 0/60

Créations :

Voir ses créations

Et voici comme promis mon script d'alchimie ! Il permet de combiner 3 items pour en créer un autre. Il y a une gestion des recettes qui peuvent être listées et il est donc impossible de créer des items dont on ne connait pas la recette.

Quelques screens :

Menu principal
Image

Liste des recettes
Image

Menu de création
Image

Et voilà !
Image

1ère étape : la création des recettes

Dans l'onglet système de la base de données, créez un attribut et appellez le comme vous voulez. Il doit impérativement avoir le numéro 20.

Image

Créez ensuite vos recettes de la façon suivante. Dans l'onglet objet, créez-en un, mettez-lui comme attribut celui que vous venez de créer UNIQUEMENT, mettez en nom le nom de l'objet qui sera créé et dans la description mettez 4 numéros qui correspondent aux numéros des ingrédients dans la base de données et à l'item créé. Dans mon exemple, la description est 1 1 2 3, ce qui signifique que les ingrédients sont les items numéros 1 1 et 2, soit potion potion super potion, et l'item créé est le 3, soit mega potion.

Image

Maintenant, dans le script Window_Item, remplacez ligne 40 :

Code: Tout sélectionner
if $game_party.item_number(i) > 0


par

Code: Tout sélectionner
if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)


Cela va permettre de ne pas afficher les recettes dans la liste des items.

Et maintenant, créez un nouveau script au dessus de main, appellez le comme vous voulez, et mettez ça dedans :

Code: Tout sélectionner
#==============================================================================
#   Scene_Alchimie : Création d'objets
#------------------------------------------------------------------------------
#    Créé par Raven - [url=mailto:ravenevans@hotmail.com]ravenevans@hotmail.com[/url] pour RPG Creative
#    Date: 18/02/07
#==============================================================================

class Window_AlItem < Window_Selectable
  #--------------------------------------------------------------------------
  # ● Création de la fenêtre
  #     items : Liste des objets
  #     pos_x : Position de la fenêtre
  #--------------------------------------------------------------------------
  def initialize(items, pos_x)
    super(pos_x, 65, 180, 350)
    @commands = items
    @item_max = items.size
    self.contents = Bitmap.new(width - 32, self.height - 32)
    self.contents.font.name = 'Arial'
    self.contents.font.size = 16
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● Affichage
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #     new : Nouvelle liste d'items
  #--------------------------------------------------------------------------
  def update_qty(new)
    @commands = new
    @item_max = new.size
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● Fonction d'affichage
  #     index : Position de l'objet
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @commands[index]
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, $data_items[item].name + " x" + $game_party.item_number(item).to_s)
  end
  #--------------------------------------------------------------------------
  # ● Fonction de validation de l'objet
  #     index : Position de l'objet
  #--------------------------------------------------------------------------
  def lose(index)
    item = @commands[index]
    $game_party.lose_item(item, 1)
  end
  #--------------------------------------------------------------------------
  # ● Fonction d'annulation de l'objet
  #     index : Position de l'objet
  #--------------------------------------------------------------------------
  def gain(index)
    item = @commands[index]
    $game_party.gain_item(item, 1)
  end
end

class Window_AlRes < Window_Base
  #--------------------------------------------------------------------------
  # ● Création de la fenêtre
  #--------------------------------------------------------------------------
  def initialize
    super(200, 210, 230, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = 'Arial'
    self.contents.font.size = 24
  end
  #--------------------------------------------------------------------------
  # ● Création de l'objet
  #     inga : Ingrédient 1
  #     ingb : Ingrédient 2
  #     ingc : Ingrédient 3
  #--------------------------------------------------------------------------
  def make(inga, ingb, ingc)
    res = -1
    @recipe = []
    for i in 1..$data_items.size
      if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] == 20)
        tmp = $data_items[i].description
        @recipe.push(tmp.split(" "))
      end
    end
    for i in [url=mailto:0..@recipe.size]0..@recipe.size[/url] - 1
      if res != -1
        break
      end
      if (@recipe[i][0].to_i == inga.to_i) and (@recipe[i][1].to_i == ingb.to_i) and (@recipe[i][2].to_i == ingc.to_i)
         res = @recipe[i][3].to_i
      end
    end
    if res == -1
      $game_system.se_play($data_system.buzzer_se)
      self.contents.draw_text(0, 0, 230, 32, "Echec de la création")
    else
      $game_system.se_play($data_system.shop_se)
      res_item = $data_items[res]
      bitmap = RPG::Cache.icon(res_item.icon_name)
      self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(35, 0, 200, 32, res_item.name)
      $game_party.gain_item(res, 1)
    end
  end
end

class Window_AlRecipe < Window_Base
  #--------------------------------------------------------------------------
  # ● Création de la fenêtre
  #--------------------------------------------------------------------------
  def initialize
    super(200, 0, 440, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = 'Arial'
    self.contents.font.size = 24
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #     recipe : Liste des recettes
  #     index : Recette sélectionnée
  #--------------------------------------------------------------------------
  def update(recipe, index)
    self.contents.clear
    if index > -1
      selected = $data_items[recipe[index]]
      desc = selected.description
      res = desc.split(" ")
      items =[]
      for i in 0..3
        items[i] = res[i].to_i
      end
      inga = $data_items[items[0]]
      ingb = $data_items[items[1]]
      ingc = $data_items[items[2]]
      res = $data_items[items[3]]
      nbra = $game_party.item_number(items[0])
      nbrb = $game_party.item_number(items[1])
      nbrc = $game_party.item_number(items[2])
      self.contents.font.size = 36
      self.contents.font.color = Color.new(255, 255, 170)
      self.contents.draw_text(-5, 0, 440, 50, selected.name, 1)
      self.contents.font.size = 22
      self.contents.font.color = system_color
      self.contents.draw_text(15, 100, 200, 32, "Ingrédient 1")
      self.contents.draw_text(15, 170, 200, 32, "Ingrédient 2")
      self.contents.draw_text(15, 240, 200, 32, "Ingrédient 3")
      self.contents.font.color = normal_color
      self.contents.draw_text(-5, 35, 440, 32, res.description, 1)
      icona = RPG::Cache.icon(inga.icon_name)
      iconb = RPG::Cache.icon(ingb.icon_name)
      iconc = RPG::Cache.icon(ingc.icon_name)
      self.contents.blt(0, 134, icona, Rect.new(0, 0, 24, 24))
      self.contents.blt(0, 204, iconb, Rect.new(0, 0, 24, 24))
      self.contents.blt(0, 274, iconc, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(35, 130, 400, 32, inga.name + " (Possédés : " + nbra.to_s + " )")
      self.contents.draw_text(35, 200, 400, 32, ingb.name + " (Possédés : " + nbrb.to_s + " )")
      self.contents.draw_text(35, 270, 400, 32, ingc.name + " (Possédés : " + nbrc.to_s + " )")
    end
  end
end

class Window_AlSelect < Window_Selectable
  #--------------------------------------------------------------------------
  # ● Création de la fenêtre
  #     recipe : Liste des recettes
  #--------------------------------------------------------------------------
  def initialize(recipe)
    super(0, 0, 200, 480)
    @commands = recipe
    @item_max = recipe.size
    self.contents = Bitmap.new(width - 32, self.height - 32)
    self.contents.font.name = 'Arial'
    self.contents.font.size = 20
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● Affichage
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_recipe(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● Fonction d'affichage
  #     index : Position de la recette
  #--------------------------------------------------------------------------
  def draw_recipe(index)
    recipe = @commands[index]
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, $data_items[recipe].name)
  end
end

class Scene_Recipe
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main
  @spriteset = Spriteset_Map.new
  @recipe = []
  for i in 1..$data_items.size
    if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] == 20)
      @recipe.push(i)
    end
  end
  @select_window = Window_AlSelect.new(@recipe)
  @recipe_window = Window_AlRecipe.new
  @select_window.active = true
  @select_window.index = 0
  if @recipe.size == 0
    @select_window.index = -1
  end
  @select_window.opacity = 190
  @recipe_window.opacity = 190
      Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @select_window.dispose
    @recipe_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #--------------------------------------------------------------------------
  def update
    @select_window.update
    @recipe_window.update(@recipe, @select_window.index)
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Alchimie.new
    end
  end
end


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 18 Fév 2007, 18:49 
Membre royal(e)

Inscrit le: 07 Nov 2006, 01:00
Messages: 786
Points d'aide: 0/60

Créations :

Voir ses créations

Code: Tout sélectionner
class Scene_Alchimie
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new
    @items = []
    @recipe = []
    for i in 1...$data_items.size
      if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)
        @items.push(i)
      end
    end
    for i in 1..$data_items.size
      if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] == 20)
        @recipe.push(i)
      end
    end
    @itemA_window = Window_AlItem.new(@items, 40)
    @itemB_window = Window_AlItem.new(@items, 230)
    @itemC_window = Window_AlItem.new(@items, 420)
    @res_window = Window_AlRes.new
    @command_window = Window_Command.new(200, ["Créer un objet", "Voir les recettes", "Annuler"])
    @itemA_window.opacity = 190
    @itemB_window.opacity = 190
    @itemC_window.opacity = 190
    @res_window.opacity = 190
    @command_window.opacity = 190
    @itemA_window.visible = false
    @itemB_window.visible = false
    @itemC_window.visible = false
    @res_window.visible = false
    @itemA_window.active = false
    @itemC_window.active = false
    @itemB_window.active = false
    @command_window.active = true
    @command_window.index = 0
    @command_window.x = 220
    @command_window.y = 180
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      if (@items.size == 0) or (@recipe.size == 0)
        @command_window.disable_item(0)
      end
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @spriteset.dispose
    @itemA_window.dispose
    @itemB_window.dispose
    @itemC_window.dispose
    @res_window.dispose
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #--------------------------------------------------------------------------
  def update
    @command_window.update
    @itemA_window.update
    @itemB_window.update
    @itemC_window.update
    if @command_window.active
      update_command
      return
    end
    if @itemA_window.active
      update_itemA
      return
    end
    if @itemB_window.active
      update_itemB
      return
    end
    if @itemC_window.active
      update_itemC
      return
    end
    if @res_window.visible
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour : Menu de commande
  #--------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case @command_window.index
      when 0
        if (@items.size == 0) or (@recipe.size == 0)
          $game_system.se_play($data_system.buzzer_se)
        else
          @command_window.visible = false
          @itemA_window.visible = true
          @itemB_window.visible = true
          @itemC_window.visible = true
          @command_window.active = false
          @itemA_window.active = true
          @itemA_window.index = 0
          @itemB_window.index = -1
          @itemC_window.index = -1
        end
      when 1
          $scene = Scene_Recipe.new
      when 2
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Map.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour : ItemA
  #--------------------------------------------------------------------------
  def update_itemA
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @itemA_window.visible = false
      @itemB_window.visible = false
      @itemC_window.visible = false
      @itemA_window.active = false
      @itemC_window.active = false
      @itemB_window.active = false
      @command_window.visible = true
      @command_window.active = true
      @command_window.index = 0
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @itemA_window.lose(@itemA_window.index)
      @newb = []
      for i in 1...$data_items.size
        if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)
          @newb.push(i)
        end
      end
      @itemB_window.update_qty(@newb)
      @itemC_window.update_qty(@newb)
      @itemA_window.active = false
      @itemB_window.active = true
      @itemB_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour : ItemB
  #--------------------------------------------------------------------------
  def update_itemB
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @itemA_window.gain(@itemA_window.index)
      @newb = []
      for i in 1...$data_items.size
        if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)
          @newb.push(i)
        end
      end
      @itemB_window.update_qty(@newb)
      @itemC_window.update_qty(@newb)
      @itemB_window.active = false
      @itemA_window.active = true
      @itemA_window.index = 0
      @itemB_window.index = -1
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @itemB_window.lose(@itemB_window.index)
      @newc = []
      for i in 1...$data_items.size
        if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)
          @newc.push(i)
        end
      end
      @itemC_window.update_qty(@newc)
      @itemB_window.active = false
      @itemC_window.active = true
      @itemC_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour : ItemC
  #--------------------------------------------------------------------------
  def update_itemC
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @itemB_window.gain(@itemB_window.index)
      @newc = []
      for i in 1...$data_items.size
        if ($game_party.item_number(i) > 0) and ($data_items[i].element_set[0] != 20)
          @newc.push(i)
        end
      end
      @itemC_window.update_qty(@newc)
      @itemC_window.active = false
      @itemB_window.active = true
      @itemB_window.index = 0
      @itemC_window.index = -1
    end
    if Input.trigger?(Input::C)
      @itemC_window.lose(@itemC_window.index)
      @itemC_window.active = false
      @res_window.visible = true
      @itemA_window.visible = false
      @itemB_window.visible = false
      @itemC_window.visible = false
      inga = @items[@itemA_window.index]
      ingb = @newb[@itemB_window.index]
      ingc = @newc[@itemC_window.index]
      @res_window.make(inga, ingb, ingc)
    end
  end
end


Le script est appellé par la commande $scene = Scene_Alchimie.new

Enjoy Very Happy


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 17:52 
Artisan (Nv 5)
Avatar de l’utilisateur

Inscrit le: 02 Mai 2010, 13:49
Messages: 185
Localisation: Reims - Orgeval
Niveau RPG Maker: 11/20
Logiciel(s) préféré(s): Rpg MakerXp
Point(s) Fort(s): Graphisme
Sexe: Masculin
Points d'aide: 3/60

Créations :

Voir ses créations

Bonjour désoler du nécrot post mais j'ai vraiment besoin de se script mais j'ai un probleme, quand je demande le jeux il me dit syntax errore a la ligne 98 ... voici la ligne en question.
Code: Tout sélectionner
  for i in [url=mailto:0..@recipe.size]0..@recipe.size[/url] - 1

Une petite questio le script et en 2 partie ou c'est 2 script different ?

_________________
Image

Encourager le jeu "Les portes du temps" en cliquand ici


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 18:17 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 01 Juin 2008, 00:00
Messages: 1812
Localisation: Dans le pré
Niveau RPG Maker: Pas trop mal
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Tout le pixel-art
Sexe: Féminin
Points d'aide: 33/60

Créations :

Voir ses créations

À ce que j'ai compris, c'est un seul et même script, posté en deux parties.
Pour ton erreur, je n'y connais rien alors je ne saurais te dire ... même si pour les bugs du genre, autant faire un nouveau topic si celui sur lequel le script est posté est trop vieux.

_________________
Image
Mon jeu [démo] :
Image
Mon dA : ~trucbiduleBond
truc is back ? maybe ...


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 18:43 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 20 Juil 2008, 00:00
Messages: 1726
Niveau RPG Maker: correct
Point(s) Fort(s): polyvalent
Sexe: Masculin
Points d'aide: 0/60

Créations :

- Création d'un sous menu

- Personnalisation des tailles d'icônes et de curseurs

- Affichages des altérations d'état via des icônes


Voir ses créations

Je serais tenté de dire qu'il s'agit d'un problème de balise du forum.

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 18:49 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 01 Juin 2008, 00:00
Messages: 1812
Localisation: Dans le pré
Niveau RPG Maker: Pas trop mal
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Tout le pixel-art
Sexe: Féminin
Points d'aide: 33/60

Créations :

Voir ses créations

À y regarder de plus près ... Qu'est-ce qu'un [url][/url] fait dans un script ? O.o

Peut-être qu'en le postant normalement ... :
Non, en fait, ça change rien, je viens d'essayer. Il faut regarder en détails et enlever le BBCode ...

_________________
Image
Mon jeu [démo] :
Image
Mon dA : ~trucbiduleBond
truc is back ? maybe ...


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 19:06 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Oct 2007, 00:00
Messages: 1323
Localisation: Inconnu de la société mais que tout le monde a
Niveau RPG Maker: Agent du FBI
Logiciel(s) préféré(s): RMXP
Point(s) Fort(s): Polyvalente
Points d'aide: 4/60

Créations :

Voir ses créations

Vous avez la réponse à la ligne 92, il suffit de faire pareil...

Voici la ligne 98 corrigée :

for i in 0..@recipe.size - 1

_________________
Démo de SHER en cours de préparation. C'est vous qui décidez de la taille en participant à un booklet ! Envoi jusqu'au 9 Septembre
Image


Haut
 Profil  
 
 Sujet du message: Re: Alchimie
MessagePublié: 04 Aoû 2010, 19:35 
Artisan (Nv 5)
Avatar de l’utilisateur

Inscrit le: 02 Mai 2010, 13:49
Messages: 185
Localisation: Reims - Orgeval
Niveau RPG Maker: 11/20
Logiciel(s) préféré(s): Rpg MakerXp
Point(s) Fort(s): Graphisme
Sexe: Masculin
Points d'aide: 3/60

Créations :

Voir ses créations

En faite j'ai refait un nouveau topic comme a dit trucbidule, et j'ai trouver un autre script encore meilleur parseque celui ci permet que de crée des objet alors que celui que j'ai trouver permet de crée (Armre,Amure,Objet) se que je voulait merci encore pour votre aide.
Voicis le script que je cherchai mais il y a quand meme un petit probleme ^^
Alchimie

_________________
Image

Encourager le jeu "Les portes du temps" en cliquand ici


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728