Oniromancie: Scripts - Système de forge


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (14 connectés)

Bienvenue
visiteur !








Statistiques

Liste des
membres


Contact

76 connectés actuellement

9259605 visiteurs
depuis l'ouverture

649 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Loisirs RPG

Adventure Games Studio fr

Rpg maker détente

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Système de forge
Script pour RPG Maker XP
Ecrit par Ikurhaï

Bonjour le monde !


Je précise des le départ : ce script n'a pas était écris par moi (mais par Deke) , j'ai juste traduit le texte qui est affiché.
J'ai trouvé ce script sur RPG Community (qui, eux même, l'ont trouvé sur un autre site, le gros bordel quoi !), mais l'explication étant incomplète et sans démo, j'ai pensé que ça serai pas mal de l'avoir bien expliqué ! ^^


Bon on commence par le commencement : le script

Allez dans l'éditeur de script (F11), puis faites un nouveau script au dessus de Main, et nommez le Crafting_System.

Et copiez-collez ceci :


Portion de code:



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

# CRAFTING PROGRAM
#----------------------------------------------------------------
#-Scripté par Deke, Texte traduit par Ikurhaï.
#-yes_no window créer par 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
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.result and item[1] ==$game_temp.recipe_list.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
when 0
if $game_party.item_number(@ingredients) < @quantities
have_all=false
end
when 1
if $game_party.armor_number(@ingredients) < @quantities
have_all=false
end
when 2
if $game_party.weapon_number(@ingredients) < @quantities
have_all=false
end
end
end
return have_all
end

#----------------------------------------------------------------------
def decrement
for i in 0...@ingredients.size
case @ingredient_types
when 0
$game_party.lose_item(@ingredients, @quantities)
when 1
$game_party.lose_armor(@ingredients, @quantities)
when 2
$game_party.lose_weapon(@ingredients, @quantities)
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)
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 = "% de Soin :"
hp_stat = item.recover_hp_rate
else
hp_string = "Soin:"
hp_stat = item.recover_hp
end
if item.recover_sp_rate > item.recover_sp
sp_string = "% de régénération :"
sp_stat = item.recover_sp_rate
else
sp_string = "Régénération:"
sp_stat = item.recover_sp
end
@strings = [hp_string, sp_string, "Déf phys:" , "Déf mag:", "Précision:", "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 = ["Déf phys:", "Déf mag:", "Esquive", "Force:", "Dextérité:",
"Agilité:", "Intelligence:"]
@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 =["Attaque:", "Déf phys:", "Déf mag:", "Force:", "Dextérité:",
"Agilité:", "Intelligence:"]
@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)
self.contents.font.color = system_color
self.contents.draw_text(x + 110, y, 45, 28, @stats.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, "Déjà en possesion:")
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
when 0
@item = $data_items[@ingredients]
@count = $game_party.item_number(@ingredients)
when 1
@item = $data_armors[@ingredients]
@count = $game_party.armor_number(@ingredients)
when 2
@item = $data_weapons[@ingredients]
@count = $game_party.weapon_number(@ingredients)
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 ? normal_color : disabled_color
self.contents.draw_text(30, y, 280, 28, @item.name)
self.contents.draw_text(300, y, 45, 28, @quantities.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, ["Oui", "Non"])
@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, " Possédé(s) Nécessaire(s)")
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) and $game_party.recipes.size != 0
@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 = "Créer " + @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




--------------------------- STOOOOOP !! Y'a un deuxième script ! ---------------------------


Faites de nouveau un nouveau script au dessus de Main, et nommez le Crafting_List.

Copiez-collez de nouveau


Portion de code:



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

# Sample master list for crafting script
#----------------------------------------------------------------
#-written by Deke
#----------------------------------------------------------------
#================================

class Game_Temp
attr_reader :recipe_list

alias crafting_temp_initialize initialize

def initialize
crafting_temp_initialize
@recipe_list=[]
get_recipe_list
end

def get_recipe_list

#----------------------------------------------------------------
#----------------------------------------------------------------
#--------------- Insérer vos recettes ici ! --------------
#----------------------------------------------------------------
#----------------------------------------------------------------


@recipe_list.push(Game_Recipe.new(ingredients,ingredient_types,quantities,result,result_type))


end # of get_recipe_list method
end # of updates to Game_Temp Class





Ça, c'est fait !


C'est la que les choses deviennent un peu plus compliquer : on va créer nos recettes.


I - Les objets

Dans un premier temps, on va créer nos ingrédients.
Allez dans la base de données (F9), puis dans l'onglet objets. En bas à gauche ce trouve un bouton "Nombre maximum d'éléments...". Cliquez dessus et ajoutez y le nombre d'ingrédients que vous voulez créer (pour moi ca sera 3).
Nommez les, mettez leurs un prix, etc... Notez bien leurs IDs (le nombre à côté de leur noms) , car on en aura besoin pour la suite.

Maintenant que nous avons les ingrédients, on va s'occuper de l'objet créé.
Allez dans l'onglet de l'objet que vous voulez forger (Armes, Armures, ou encore Objets) , et créé votre objet. Retenez aussi son ID.


II - Les recettes

Le plus dur : la création des recettes.
Accrochez vous ! C'est PARTIIII !!! X)


Je résume ce que l'on a fait : on a créer nos ingrédients et notre objet qui est à forger et on a leur IDs. On est prêt !

On ouvre notre magnifique, et ô combien puissant éditeur de script (F11) et on va dans le script "Crafting_List".

On va insérer les recettes en dessous de la où c'est écrit.

Première ligne du code de la recette:


Portion de code:



ingredients = []


Cette ligne permettra au script de savoir quels ingrédients il faut utiliser dans la recette. Donc si vous avez bien compris, il faut y mettre les IDs de nos ingrédients (séparer par une virgule)
Pour moi c'est :


Portion de code:



ingredients = [33,34,35]



Deuxième ligne du code de la recette:


Portion de code:



ingredient_types = []


Cette ligne permettra au script de savoir quels types d'ingrédients il doit prendre:
-les objets sont de type 0
-les armures sont de type 1
-les armes sont de type 2
On met donc:


Portion de code:



ingredient_types = [0,0,0]

si on utilise que des objets en ingrédients.
Si on est dans le cas au le deuxième ingrédients de la recette est une arme, et le reste des objets, ca sera [0,2,0], ou encore si c'est une armure qui se trouve en troisième position, le code sera [0,0,1].

Quatrième ligne du code de la recette:


Portion de code:



result = 


Cette ligne permettra au script de savoir ce qui va être forgé. mettez donc l'ID de votre objet.
Voici ma ligne:


Portion de code:



result = 33



Cinquième ligne du code de la recette :


Portion de code:



result_type = 


Cette ligne permettra au script de savoir le type de l'objet forgé.

Spoiler: (sélectionnez le texte pour l'afficher)

Citation:

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


Dans mon cas:


Portion de code:



result_type = 2



Sixième et dernière ligne du code de la recette:


Portion de code:



@recipe_list.push(Game_Recipe.new(ingredients,ingredient_types,quantities,result,result_type))


Rien à dire. Copiez-collez cette ligne. J'espère que cela ne sera pas trop dur. :F


Aperçu final du code d'une recette (la mienne):


Portion de code:



ingredients = [33,34,35]

ingredient_types = [0,0,0]
quantities = [1,1,1]
result = 33
result_type = 2 @recipe_list.push(Game_Recipe.new(ingredients,ingredient_types,quantities,result,result_type))



Et voilà ! Une recette de créé ! Vous pouvez en créer autant que vous voulez !


III - Les commandes

Au début du jeu, il faut initialiser le script en créant un événement qui à ce script en lui:


Portion de code:



$game_party.recipes = [] 

, mais attention ! Il ne faut pas que le joueur puisse avoir accés une nouvelle fois à ce code, car il va perdre toutes les recettes qu'il a appris !

Et oui ! Il faut que le joueur apprenne les recettes ! SInon c'est pas drôle ! :p
Il faudra donc un événement pour apprendre une ou des recette(s).
Voici le bout de code à insérer:


Portion de code:



$game_party.learn_recipe([])


ce qui sera dans les crochets sera l'objet de la recette, et son type.
Dans mon cas, l'apprentissage de la recette de l'épée d'ID 33 sera:


Portion de code:



$game_party.learn_recipe([33,2])



Et enfin, voici la commande qui est à insérer dans l'événement qui fera appelle au menu de forge.


Portion de code:



$scene=Scene_Craft.new

.



Voilà ! Tout est fini ! Vous êtes devenu un pro du codage de recettes ! :lol N'hésitez pas à télécharger la démo si vous avez du mal à comprendre.

Télécharger la démo


Voilà voilà ! Tout est dit !
J'espère que ce script et cette explication vous sera fort bien utile !

A pluch !


NanakyTim - posté le 13/09/2009 à 20:10:55. (20706 messages postés) - staff

Leader Bocaliste Floodeur Légendaire

Pas mal, ça peut servir :D

Plongez dans l'univers sombre du Darkans ! ~Une dictature, mais une dictature juste... Votez Bocaux Haram ! ~ Sauvez le futur, en allant dans le passé: BOCALATOR... ~ Dimens Reis... Allez y faire un tour. Rangez votre chambre ! Avez-vous peur du noir ?


Alkanédon - posté le 13/09/2009 à 21:53:30. (7478 messages postés)

Citoyen d'Alent

si on s'est deja bien fais ch**r a faire des recette avec le script de fusion de compétences ,
on devrait pas pédaler dans la semoule avec celui-ci ...

Allez-y voir donc. Et followez-moi


Kanton-Cherchontrouv - posté le 15/09/2009 à 18:59:35. (155 messages postés)

[...] Chargin mah lazor WHA

mhhh semoule super ce script, moi ça me prenait 2 heures de faire ça en eventXD:lolX)

♪ZBOOB♫


KnightLink - posté le 16/09/2009 à 14:59:06. (153 messages postés)

J'aime les frites. Et toi, à quoi tu joue ?

Sniif, moi qui croyais que le script état pour VX, le choc, le script était exactement celui que je cherchais ToT
Et puis la démo marche pas.

Sur un projet de jeu web.


TheDuke - posté le 16/09/2009 à 16:45:34. (34 messages postés)

Notest! Powa!

Il est pas pour Vx oo snif:'(

Notest! Official Démo 2! pour bientot ;)


Olorthost - posté le 18/09/2009 à 08:52:24. (135 messages postés)

Patapon onirique

Ton système de différenciation des objets (0,1,23,...) ça veut aussi dire que l'on peut faire autre chose que des armures ou des armes, comme des aliments pour un cuisinier ou des potions pour un alchimiste?


Alkanédon - posté le 19/09/2009 à 19:58:08. (7478 messages postés)

Citoyen d'Alent

objet+objet = arme/armure/objet
objet+arme= arme/armure/objet
objet+armure= arme/armure/objet
arme+arme= arme/armure/objet
arme+armure= arme/armure/objet

C'est ça si je ne m'abuse ?

Allez-y voir donc. Et followez-moi


Ikurhaï - posté le 23/09/2009 à 20:52:06. (13 messages postés)

Eka aí fricai un skulblaka.

Il y a une infinité de combinaisons ! Ce que tu proposes est donc un bon exemple, Alaknédon !

Astra esterni ono thelduin. Mor'ranr lifa unin hjarta onr. Un du evarinya ono varda.


chyro - posté le 29/12/2009 à 20:57:42. (93 messages postés)

la légende revient

super se script :lol c'est exactement l"ingrédient manquant"
y a un script un peut près pareil mai sur le thème de la cuisine un peut peut plus haut dans l index des script ;)
enfin je t applaudit si c toi qu'il la fait :sonic un grand GG a toi!
tu a mes sincère remerciement pour ce script :lei


Mookyz - posté le 18/03/2010 à 18:54:44. (1 messages postés)

Super ce script =)
Par contre, si on veut par exemple faire des recettes de cuisine ou créer nimporte quel autre objet qui ne se fait pas dans une forge est-ce possible de faire deux menus différents ?
Comme un menu pour la forge et un pour la cuisine par exemple. =)
Merci d'avance.


Fredomaker - posté le 11/08/2010 à 22:29:17. (37 messages postés)

Epéliste en colère

Citation:

Il est pas pour Vx oo snif


je le fait sur VX et XP sans problème grace aux events
[color=red][/color][size=24][/size]C'EST D"'LA BALLE

beaucoup de choses se passe mais quoi que vous fassiez quelqu'un ous regarde d'un mauvais oeil


Eichimaru - posté le 16/10/2010 à 13:41:24. (209 messages postés)

Graphiste en puissance!!

bug ligne 31!!!:'(

Iron::http://iron.xooit.fr/index.php


Ranger Maker - posté le 15/01/2011 à 09:17:01. (17 messages postés)

en train de maker

J'ai remarqué qu'en copiant la dernière ligne des recettes, elle y est 2 fois (en effet elle y est dès le départ)
Mais même après l'avoir supprimé ça me met :
Script Crafting_List line 31 : NameError ocurred
undefined local variable or method 'quantities' for #<Game_Temp:0x3fc 42d8>

est-ce qqn peut m'aider svp

Bordel pourquoi tout le monde a photoshop alors que ce sont des RPG AMATEURS !


gamer34 - posté le 22/07/2011 à 18:58:34. (99 messages postés)

:'( moi j'ai un problème avec la derrière ligne des recettes
et quant je la surprime la fenêtre de forge est vide même quant
j'apprend les recette !!!

a c'est bon j'ai trouver Ikurhaï tu avait oublier les quantité .....:D


Zaryel - posté le 22/04/2012 à 13:41:53. (45 messages postés)

J'ai un petit problème avec ce script. Il marche, enfin je pense car je n'est pas encore pu vraiment tester, car le seul petit problème est que au moment ou je fais apprendre un recette à mon perso, il message d’erreurs s'affiche pour la ligne 127 du script qui est :
if item[0] == $game_temp.recipe_list.result and item[1] ==$game_temp.recipe_list.result_type

Quelqu'un sait il pourquoi j'ai ce problème ?


zurae - posté le 15/07/2012 à 12:15:34. (3 messages postés)

J'ai exactement le même problème .... Peut-être qu'une petite démo ouvrable avec rmxp suffirait à nous aider. Merci d'avance !

Ranger maker tu as oublié de mettre la ligne :

quantities = [1,1,1]

En dessous de ingredients_type.
Biensur tu peux changer les valeurs des 1 que j'ai mit.


itashi76 - posté le 08/11/2012 à 22:07:44. (54 messages postés)

Tranquille

J'ai moi aussi se problème quelqu'un peu nous aidé.

Le savoir est une arme


kanatos - posté le 09/08/2015 à 09:45:58. (293 messages postés)

cute rabbit

Bonjour, pour ceux qui veulent utilisé ce script et auxquelles ça marche pas.
Remplacé le script scene_craft par celui-ci :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
#================================
# 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) and $game_party.recipes.size != 0
     @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


(Par contre tous sera en anglais...)

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis