Welcome Guest: S’enregistrer | Connexion
 
Portail  | FAQ | Rechercher | Membres | Groupes
 
forge[script]
 
Poster un nouveau sujet   Répondre au sujet
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP
Sujet précédent :: Sujet suivant  
Auteur Message
skater
Paysan
Paysan

Hors ligne

Inscrit le: 05 Mar 2006
Messages: 16
Points RPG Community: -2
Moyenne de points: -0,13

MessagePosté le: 05/03/2006 16:01:47
MessageSujet du message: forge[script]
Répondre en citant

Bien... voici un petit script qui va permettre de faire un système de Forge, c'est-à-dire de créatio d'objets avec certains autres objets... Il n'est pas de moi, alors un peu d'indulgence...

Auteur : Forum RPG Créateurs Centrales

Captures:

Les Evenements :
Pas besoin (pour l'instant) [pourraient être ajouter dans un futur proche]

L'utilisation :
1.INGREDIENTS

1. L' étalage des objets utilisés pour l' objet désiré. Ces étélages consistent simplement en un index des onjets dans la base de données.Par exemple, dans l' image ci-dessous, l' ID de la tablette est de 30, l' ID de la carte et du fruit est de 31 et 32. Si nous voulons faire un récipient qui utilise ces trois objets, celà devra être comme suivant:
[30,31,32]

note: vous DEVEZ mettre les crochets !

2. Vous pouvez vouloir que vos recipients ne soit pas consistués uniquement d' objets. Peut-être voulez vous un recipient qui transforme une épée normale en épée de feu avec un souffle de dragon. Pour faire ceci vous devrez spécifier le type d' objet que vous utilisez avec un numéro.

-les objets sont de type 0
-les armures sont de type 1
-les armes sont de type 2

Dans cas, l' étalage des objets devra donner le code suivant [0,0,0]

3. Maintenant que nous connaissons l' ID et le type de nos ingrédients, que devons-nous faire maintenant ? Vous l' avez deviné ! Le nombre d' objet du même type que requiert le recipient. Supposons que nous voulons un objet du même type alors notre code sera [1,1,1]

2.LE RESULTAT

1. De même que pour les ingrédient, vous devez préciser l' ID de l' objet que vous voulez créer. La seule différence est que maintenant il n' y a aucun besoin de le mettre dans un étalage. Par exemple, si vous voulez créer une epée mythril son ID sera de 4 (dans la base de données).

2. De même que pour les ingredients, vous devez dire au recipient quel type d' objet voulez vous créer (comme dit précedament, 0 pour objet, 1 pour amures et 2 pour les armes)
Encore une fois, ce n' est pas un étage.

Par exemple, pour créer un récipient faisant que pour créer un épée Mythril, une carte, une tablette et un fruit sont requis, utiliser le code suivant:

Code:
Code:
ingredients = [30,31,32]
types = [0,0,0]
quantities = [1,1,1]
sword=Game_Recipe.new(ingredients, types, quantities,4,2)

Le mot "sword" ne compte pas car dans le craft screen (j' ignore ce que ca doit être ndt)le nom de l' objet crée va être affiché, pas le nom de l' objet

Maintenant que le nouveau recipient à été crée, ' équipe doit l' apprendre. Pour ce, faites le code suivant :

Code:
Code:
$game_party.learn_recipe(sword)

Enfin pour entrer dans le menu de forge faites le code suivant:


Code:
Code:
$scene=Scene_Craft.new

Par défaut, sortir de l' écran de forge vous améne au menu principal.


2.LES RECETTES

3. Les SEULES choses que vous devez modifier sont en rouge, le typte, l' ID et le nombre des igredients et le type et l' iD du résultat
Tout ce que avez à faire est de copier-coller ceci autant de fois que avez besoin de recipients.

Finalement, si vous voulez que votreéquipe apprennes le recipient (ou comment forger des objets ndt), utilisez les lignes de codes suivantes:

Code:
Code:
$game_party.learn_recipe([4,2])
$game_party.learn_recipe([8,1])
$game_party.learn_recipe([4,0])

La premiere vous montre comment créer l' épée dont l' ID est 4 (le 2 c'est le type d' objet, souvenez-vous-en)
La seconde, pour créer la 8eme armure
la troisieme le 4eme objet

Comme je l' ai dit plus tôt, je vous ai montré comment faire plusieurs récipients pour le mêe objet en résultat. Supposons que nous avons mis le code suivant aprés les récipients :


Code:
Code:
ingredients = [30,31]
ingredient_types = [0,0]
quantities = [1,1]
result = 4
result_type = 0
@recipe_list.push(Game_Recipe.new(ingredients,ingredient_types,quantities,result,result_type))

Vous preciserez qu' il y a recipient pour le quatrieme objet (le parfum).Si vous voulez quel' équipe apprennes ce recipient faites ce code:
Code:
$game_party.learn_recipe([4,0],2)

Ajouter le 2 pour spécifier que l' équipe apprends le recipient du scrîpt. Devinez comment cela marche pour la version 3,4,5,6 ...

Ps:Me dire ci quelque chose ne fonctionne pas.

Pour le tester :
Vous pouvez le télécharger le demo du scripts :
ici
http://membres.lycos.fr/rpgcc/Demos/Demo14.rar



L'installation :
Crée un (Crafting System) et introduiser ceci à l'intérieure.

Code:
Code:
#================================
# CRAFTING PROGRAM
#----------------------------------------------------------------
#-written by Deke
#-yes_no window code created by Phsylomortis
#----------------------------------------------------------------
#================================

#updates to Game_Party class

class Game_Party
 
 attr_accessor       :recipes
 
 alias crafting_party_initialize initialize
 
 def initialize
   crafting_party_initialize
   @recipes=[]
 end
 
 #----------------------------------------------------------------------
 def know?(recipe, version = 1)
   unless recipe.is_a?(Game_Recipe)
     recipe = get_recipe_from_master_list(recipe, version)
   end
   return $game_party.recipes.include?(recipe)
 end
 
#----------------------------------------------------------------------
 def learn_recipe(recipe , version = 1)
   unless recipe.is_a?(Game_Recipe)
     recipe = get_recipe_from_master_list(recipe, version)
   end
   if recipe.is_a?(Game_Recipe)
     unless know?(recipe)
       @recipes.push(recipe)
     end
   end
 end
 
#----------------------------------------------------------------------
 def forget_recipe(recipe , version = 1)
   if !recipe.is_a?(Game_Recipe)
     recipe = get_recipe_from_master_list(recipe, version)
   end
   if recipe.is_a?(Game_Recipe)
     for i in 0...@recipes.size
       if recipe == @recipes[i]
         index = i
         break
       end
     end
     if index != nil
       @recipes.delete(@recipes[index])
     end
   end
 end
 
#----------------------------------------------------------------------
 def get_recipe_from_master_list(item, version)
   index = nil
   for i in 0...$game_temp.recipe_list.size
     if item[0] == $game_temp.recipe_list[i].result and item[1] ==$game_temp.recipe_list[i].result_type
       version -= 1
       if version == 0
         index = i
         break
       end
     end
   end
   if index.is_a?(Integer)
     return ($game_temp.recipe_list[index])
   else
     return false
   end
 end
 
end # of Game_Party updates

#================================
class Game_Recipe

 attr_reader :ingredients
 attr_reader :quantities
 attr_reader :result
 attr_reader :result_type
 attr_reader :ingredient_types
 
#----------------------------------------------------------------------
 def initialize( ingredients, ingredient_types, quantities, result, result_type)
   @ingredients = ingredients
   @ingredient_types = ingredient_types
   @quantities = quantities
   @result = result
   @result_type = result_type
 end
 
#----------------------------------------------------------------------
 def name
   case @result_type
     when 0
       name = $data_items[@result].name
     when 1
       name = $data_armors[@result].name
     when 2
       name = $data_weapons[@result].name
   end
   return name
 end

#----------------------------------------------------------------------
 def have
   have_all = true
   for i in 0...@ingredients.size
     case @ingredient_types[i]
       when 0
         if $game_party.item_number(@ingredients[i]) < @quantities[i]
           have_all=false
         end
       when 1
         if $game_party.armor_number(@ingredients[i]) < @quantities[i]
           have_all=false
         end
       when 2
         if $game_party.weapon_number(@ingredients[i]) < @quantities[i]
           have_all=false
         end
     end
   end
   return have_all
 end

#----------------------------------------------------------------------
 def decrement
   for i in 0...@ingredients.size
     case @ingredient_types[i]
     when 0
       $game_party.lose_item(@ingredients[i], @quantities[i])
     when 1
       $game_party.lose_armor(@ingredients[i], @quantities[i])
     when 2
       $game_party.lose_weapon(@ingredients[i], @quantities[i])
     end
   end
 end

#----------------------------------------------------------------------
 def make
   if have
     case @result_type
     when 0
       $game_party.gain_item(@result, 1)
     when 1
       $game_party.gain_armor(@result, 1)
     when 2
       $game_party.gain_weapon(@result, 1)
     end
     decrement
   end
 end
 
#----------------------------------------------------------------------
 def == (recipe)
   if recipe.is_a?(Game_Recipe)
     equal = true
     if recipe.ingredients != self.ingredients
       equal = false
     end
     if recipe.ingredient_types != self.ingredient_types
       equal = false
     end
     if recipe.quantities != self.quantities
       equal = false
     end
     if recipe.result != self.result
       equal=false
     end
     if recipe.result_type != self.result_type
       equal = false
     end
   else
     equal = false
   end
   return equal
 end
 
end # of Game_Recipe class

#===================================

class Window_Craft < Window_Selectable

 #--------------------------------------------------------------------------
 def initialize
   super(0, 64, 240, 416)
   @column_max = 1
   refresh
   self.index = 0
 end

 #--------------------------------------------------------------------------
 def recipe
   return @data[self.index]
 end

 #--------------------------------------------------------------------------
 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   for i in 0...$game_party.recipes.size
       @data.push($game_party.recipes[i])
   end
   @item_max = @data.size
   if @item_max > 0
     self.contents = Bitmap.new(width - 32, row_max * 32)
     self.contents.font.name = $fontface.is_a?(String) ? $fontface : $defaultfonttype
     self.contents.font.size = $fontsize.is_a?(Integer) ? $fontsize : $defaultfontsize
     for i in 0...@item_max
       draw_item(i)
     end
   end
 end

 #--------------------------------------------------------------------------
 def draw_item(index)
   recipe = @data[index]
   self.contents.font.color = recipe.have ? normal_color : disabled_color
   x = 16
   y = index * 32
   self.contents.draw_text(x , y, self.width-32, 32, recipe.name, 0)
 end

 #--------------------------------------------------------------------------
 def update_help
   current_recipe = recipe
   if current_recipe.is_a?(Game_Recipe)
   case current_recipe.result_type
     when 0
       description = $data_items[current_recipe.result].description
     when 1
       description = $data_armors[current_recipe.result].description
     when 2
       description = $data_weapons[current_recipe.result].description
     end
   else
     description = ""
   end
   @help_window.set_text(description)
   @help_window.update
 end
 
end # of Window_Craft

#=======================================
class Window_CraftResult < Window_Base

 #--------------------------------------------------------------------------
 def initialize
   super(240, 64, 400, 184)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $fontface.is_a?(String) ? $fontface : $defaultfonttype
   self.contents.font.size = 20
   @result = nil
   @type = nil
 end

 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   case @type
     when 0
       item = $data_items[@result]
       if item.recover_hp_rate > item.recover_hp
         hp_string = "HP Recovery% :"
         hp_stat = item.recover_hp_rate
       else
         hp_string = "HP Recovery Points:"
         hp_stat = item.recover_hp
       end
       if item.recover_sp_rate > item.recover_sp
         sp_string = "SP Recovery% :"
         sp_stat = item.recover_sp_rate
       else
         sp_string = "SP Recovery Points:"
         sp_stat = item.recover_sp
       end
       @strings = [hp_string, sp_string, "Phy. Def:" , "Mag Def:", "Accuracy:", "Variance:"]
       @stats = [hp_stat, sp_stat, item. pdef_f, item.mdef_f, item.hit, item.variance,
                      $game_party.item_number(@result)]
       @bitmap = RPG::Cache.icon(item.icon_name)
     when 1
       item = $data_armors[@result]
       @strings = ["Phy. Def:", "Mag. Def:", "Evasion plus:", "Strength plus:", "Dex. plus:",
                      "Agility plus:", "Int. plus:"]
       @stats = [item.pdef, item.mdef, item.eva, item.str_plus, item.dex_plus,
                   item.agi_plus, item.int_plus, $game_party.armor_number(@result) ]
       @bitmap = RPG::Cache.icon(item.icon_name)
     when 2
       item = $data_weapons[@result]
       @strings =["Attack Power:", "Phy. Def:", "Mag. Def:", "Strength plus:", "Dex. plus:",
                   "Agility plus:", "Int. plus:"]
       @stats = [item.atk, item.pdef, item.mdef, item.str_plus, item.dex_plus,
                   item.agi_plus, item.int_plus, $game_party.weapon_number(@result) ]
       @bitmap = RPG::Cache.icon(item.icon_name)
   end
   for i in 0...@strings.size
     x = i%2 * 184
     y = i /2 *28 +32
     self.contents.font.color = normal_color
     self.contents.draw_text(x,y,100, 28,@strings[i])
     self.contents.font.color = system_color
     self.contents.draw_text(x + 110, y, 45, 28, @stats[i].to_s)
   end
   self.contents.blt(0, 0, @bitmap, Rect.new(0, 0, 24, 24), 255)
   self.contents.font.color= normal_color
   self.contents.draw_text(40, 0, 300, 28, "Quantity curentley owned:")
   self.contents.font.color = system_color
   count = @stats[@stats.size - 1].to_s
   self.contents.draw_text(294, 0, 45, 28, count )
 end
   
#----------------------------------------------------------------------
 def set_result(result , type)
   @result = result
   @type = type
   refresh
 end

end #of Window_CraftResult

#=======================================
class Window_CraftIngredients < Window_Base

 #--------------------------------------------------------------------------
 def initialize
   super(240, 248, 400, 232)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $fontface.is_a?(String) ? $fontface : $defaultfonttype
   self.contents.font.size = 20
   @ingredients = []
   @types = []
   @quantities = []
   @item = nil
   @count = 0
 end

 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   for i in 0...@ingredients.size
     case @types[i]
     when 0
       @item = $data_items[@ingredients[i]]
       @count = $game_party.item_number(@ingredients[i])
     when 1
       @item = $data_armors[@ingredients[i]]
       @count = $game_party.armor_number(@ingredients[i])
     when 2
       @item = $data_weapons[@ingredients[i]]
       @count = $game_party.weapon_number(@ingredients[i])
     end
     y = i *26
     self.contents.blt(0, y, RPG::Cache.icon(@item.icon_name), Rect.new(0, 0, 24, 24), 255)
     self.contents.font.color = @count >= @quantities[i] ? normal_color : disabled_color
     self.contents.draw_text(30, y, 280, 28, @item.name)
     self.contents.draw_text(300, y, 45, 28, @quantities[i].to_s)
     self.contents.font.color = system_color
     self.contents.draw_text(245, y, 45, 28, @count.to_s )     
   end
 end
     
 #--------------------------------------------------------------------------
 def set_ingredients(ingredients , types, quantities)
   @ingredients = ingredients
   @types = types
   @quantities = quantities
   refresh
 end

end # of Window_CraftIngredients

#======================================
class Scene_Craft

 #--------------------------------------------------------------------------
 def initialize(craft_index=0, return_scene = "menu")
   @craft_index=craft_index
   @return_scene = return_scene
 end
 
 #--------------------------------------------------------------------------
 def main
   @craft_window = Window_Craft.new
   @craft_window.index=@craft_index
   @confirm_window = Window_Base.new(120, 188, 400, 64)
   @confirm_window.contents = Bitmap.new(368, 32)
   @confirm_window.contents.font.name = $fontface.is_a?(String) ? $fontface : $defaultfonttype
   @confirm_window.contents.font.size = $fontsize.is_a?(Integer) ? $fontsize : $defaultfontsize
   @help_window = Window_Help.new
   @craft_window.help_window = @help_window
   @result_window=Window_CraftResult.new
   @ingredients_window=Window_CraftIngredients.new
   @yes_no_window = Window_Command.new(100, ["Yes", "No"])
   @confirm_window.visible = false
   @confirm_window.z = 1500
   @yes_no_window.visible = false
   @yes_no_window.active = false
   @yes_no_window.index = 1
   @yes_no_window.x = 270
   @yes_no_window.y = 252
   @yes_no_window.z = 1500
   @label_window = Window_Base.new(450,200,190,52)
   @label_window.contents=Bitmap.new(@label_window.width - 32,@label_window.height - 32)
   @label_window.contents.font.size=20
   @label_window.contents.font.color = @label_window.normal_color
   @label_window.contents.font.name = $fontface.is_a?(String) ? $fontface : $defaultfonttype
   @label_window.contents.draw_text(0, 0, @label_window.contents.width, 20, "   Have    Need")
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @help_window.dispose
   @craft_window.dispose
   @result_window.dispose
   @ingredients_window.dispose
   @confirm_window.dispose
   @yes_no_window.dispose
   @label_window.dispose
 end

 #--------------------------------------------------------------------------
 def update
   @craft_window.update
   @ingredients_window.update
   if $game_party.recipes.size > 0
     @result_window.set_result(@craft_window.recipe.result, @craft_window.recipe.result_type)
     @ingredients_window.set_ingredients(@craft_window.recipe.ingredients,
                                                          @craft_window.recipe.ingredient_types,
                                                          @craft_window.recipe.quantities)
   end
   if @craft_window.active
     update_craft
     return
   end
   if @yes_no_window.active
     confirm_update
     return
   end
 end

 #--------------------------------------------------------------------------
 def update_craft
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     if @return_scene == "menu"
       $scene = Scene_Menu.new(0)
     else
       $scene = Scene_Map.new
     end
     return
   end
   if Input.trigger?(Input::C)
     @recipe = @craft_window.recipe
     if @recipe.have
       @yes_no_window.active = true
       @craft_window.active = false
     else
       $game_system.se_play($data_system.buzzer_se)
       return
     end
   end
 end

 #--------------------------------------------------------------------------
 def confirm_update
   @craft_index = @craft_window.index
   @confirm_window.visible = true
   @confirm_window.z = 1500
   @yes_no_window.visible = true
   @yes_no_window.active = true
   @yes_no_window.z = 1500
   @yes_no_window.update
   string = "Create " + @recipe.name + "?"
   cw = @confirm_window.contents.text_size(string).width
   center = @confirm_window.contents.width/2 - cw /2
   unless @drawn
     @confirm_window.contents.draw_text(center, 0, cw, 30, string)
     @drawn = true
   end
   if Input.trigger?(Input::C)
     if @yes_no_window.index == 0
       $game_system.se_play($data_system.decision_se)
       @recipe.make
       $game_system.se_play($data_system.save_se)
       $scene=Scene_Craft.new(@craft_index)
     else
       $game_system.se_play($data_system.cancel_se)
       $scene=Scene_Craft.new(@craft_index)
     end
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene=Scene_Craft.new(@craft_index)
   end
 end

end # of Scene_Craft

vala j'ai pris ca d'un autre forum donc ne me demandez pas de conseilles car je suis un peu ... euh ... enfin voila quoi
Revenir en haut
Publicité






MessagePosté le: 05/03/2006 16:01:47
MessageSujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 05/03/2006 21:00:02
MessageSujet du message: forge[script]
Répondre en citant

Merci!
Je ferai prochainement une mise à jour de la partie Script Very Happy.
Revenir en haut
Visiter le site web du posteur
Chedy
Paysan
Paysan

Hors ligne

Inscrit le: 02 Oct 2007
Messages: 1
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 02/10/2007 19:34:52
MessageSujet du message: forge[script]
Répondre en citant

Very Happy c'est cool, mais je suis sur que c'est faisable en event comme ça c'est plus zouli...^^! Ok je sors
Revenir en haut
Visiter le site web du posteur
Aurelking
Paysan
Paysan

Hors ligne

Inscrit le: 02 Déc 2007
Messages: 6
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 23/02/2008 19:39:40
MessageSujet du message: forge[script]
Répondre en citant

Je suis sincerrement désolé mais je n'ai rien compri, où on les mets tous ces scripts ?????
Et puis, c'est pas très clair, cette histoire d'apprendre un objet ????
Je suis désolé mais je ne voix pas où je dois mettre ces infos dans la base de donnés, c'est bete ça avait l'air cool, aidez moi à résoudre ce problème !!!!!!!
Please !!!!! Embarassed
_________________
Je suis un fan
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 23/02/2008 21:42:41
MessageSujet du message: forge[script]
Répondre en citant

Télécharge la démo et ouvre la avec RPG Maker, cela devrait t'aider.

Oui je sais j'ai honte, c'est rapide comme réponse, mais je n'ai pas le courage de tout expliquer. Embarassed
Revenir en haut
Visiter le site web du posteur
DrakeRoxas
Dieu
Dieu

Hors ligne

Inscrit le: 06 Mar 2009
Messages: 37
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 06/03/2009 12:31:34
MessageSujet du message: forge[script]
Répondre en citant

Non compri dsl Je suis désoler mais le lien ne marche plus, et comme aurel, je vois pas ou mettre les scripts (a part le dernier). Vous pouvais mettre un autre liens de téléchargement de la démo? Sa prendra moins de temps que tout expliquer ^^'


PS : Pour ceux qui ne font pas un jeu en anglais, a la ligne 421 il y a marquer " Have need", il suffit de le remplacer par " Ingrédients nécessaires" ou ce que vous voulez pour avoir la version française Mr. Green
Revenir en haut
Contenu Sponsorisé






MessagePosté le: 10/12/2016 01:11:54
MessageSujet du message: forge[script]

Revenir en haut
Montrer les messages depuis:   
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Toutes les heures sont au format GMT + 2 Heures
Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Sauter vers:  

 

Portail | Index | Panneau d’administration | Créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
phpBB
Template by BMan1
Traduction par : phpBB-fr.com