Kingdom maker : Le royaume du Making

Le site du making avec les meilleurs ressources, scripts, download et tutoriels
 
AccueilLe sitePortailFAQRechercherS'enregistrerGroupesMembresConnexion

Partagez | 
 

 Forge

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité



MessageSujet: Forge   Mar 30 Oct - 23:43

uteur : 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.multimania.fr/rpgcc/Demos/Demo14.rar



L'installation :
Crée un (Crafting System) et introduiser ceci à l'intérieure.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Forge   Mar 30 Oct - 23:44

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
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Forge   Mar 30 Oct - 23:44

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
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Forge   

Revenir en haut Aller en bas
 
Forge
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» logiciel pour faire un plan de grille en fer forgé

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Kingdom maker : Le royaume du Making :: A propos de RPG Maker :: Les scripts-
Sauter vers: