Rafidelis Craft System V1.0

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Rafidelis Craft System V1.0

Mensagem por Convidad em Dom 20 Fev - 10:25

Rafidelis Craft System
Versão: 1.1

Por Rafidelis ? Não pelo Chuck Norris xD

Siga os direitos de uso e disponibilização

Sobre o Script


Este Script adiciona um Sistema de Forja no seu jogo,ou melhor falando um Sistema de Criação de Items.Você pode adaptar esse script para ser um Sistema de Cozinha,como nos jogos The Sim's e Harvest Moon,por exemplo,veja a demo do script para mais detalhes.
Ou então para funcionar como um sistema de mineração,veja exemplos na demo para entender melhor

Historico:
Citar

20/12/09 - Lançado o Script
24/12/09 - Script Atualizado para possibilitar a opção de 'Craft' no Menu Principal



Características


(*) Infinitas Possibilidades de Receitas
(*) Criação de Items Comuns,Armas e Armaduras
(*) Chance de Quebra no momento da Forja
(*) Janela com todas os dados de todas as forjas já feitas
(*) Criação de varios sistemas diferentes,como,sistema de cozinha,sistema de mineração,etc..

Instruções

1 - Cole o Script Acima do Main

2 - No Script Options & Recipes é o local onde você deve criar novas receitas,e configurar o script.

3 - Principais Configurações
Spoiler for Clique:
Código: (ruby) [Selecionar]
#==========================================================================
# [** Can_Fail? => Pode haver quebra na hora da Forja?
# [ ** Deixe em true para que seja possivel,false para desativar
#==========================================================================
Can_Fail = true # Linha 105 do Script Options & Recipes
#==========================================================================
# [** Porcentagem de Falha(Quebra) no total de 100
# Ou seja,o valor passado abaixo será a porcentagem possivel da forja falhar
# Tem efeito somente se a opção Can_Fail? for igual a true
#==========================================================================
Fail_Percent = 40 # Padrão 40 % de chances de falha | Linha 111 do Script Options & Recipes

4 - Criando Receitas

A declaração de receitas deve ser feita no modulo Craft Recipes.Siga o seguinte modelo no momento de declaração
de receitas:

Código: (ruby) [Selecionar]
Recipes[ID] = {
"Ingredients" => [id item 1,id item 2...id item n],
"Ingredients Types" => [tipo item 1,tipo item 2...tipo item n],
"Ingredients Quantity" => [quantidade item 1,qntadade item 2,qntadade item n],
"Result" => ID do Item Resultante da Forja,
"Result Type" => Tipo de Item Resultante,
"Result Quantity" => Quantidade de Itens Criados }
#==========================================================================
# TIPOS DOS ITEMS DOS INGREDIENTES E RESULTADO DA FORJA :
#==========================================================================
# 1 - Indica que o item com o ID passado,é um Item.
# 2 - Indica que o item com o ID passado,é uma Arma.
# 3 - Indica que o item com o ID passado,é uma Arma.
#==========================================================================

Veja o script para exemplos de receitas,e se realmente pretende usar este script,baixe a demo que contem 13 receitas declaradas.


Screenshots

Sistema de Forja de Items

Sistema de Criação de Items - Adaptado para funcionar como Sistema de Cozinha

Spoiler for Outras Imagens:
Sistema de Criação de Items - Adaptado para funcionar como Sistema de Mineração

Sistema de Criação de Items - Criação de Armas

Script

Options & Recipes Script
Spoiler for Script:
Código: (ruby) [Selecionar]
#==============================================================================#
# [RGSS2] Rafidelis Craft System #
#------------------------------------------------------------------------------#
# $RafiScripts.by = Rafidelis(RafiScripts - RafideliSoft Brasil) #
# $RafiScripts.version = 1.1 #
# $RafiScripts.release_date = 19/12/09 (d/m/y) #
# $RafiScripts.update_date = 24/12/09 (d/m/y) #
# $RafiScripts.email = Rafa_Fidelis@hotmail.com or Rafa_Fidelis@yahoo.com.br #
# $RafiScripts.website = www.ReinoRPG.com or www.ReinoRPG.com/forum #
# $RafiScripts.website² = www.RafideliScripts.4shared.com #
#==============================================================================#

#==============================================================================#
# [** $RafiScripts.desc **] // Sobre o Script / About Script #
#------------------------------------------------------------------------------#
# Este Script adiciona um Sistema de Forja no seu jogo,ou melhor falando um #
# Sistema de Criação de Items #
# Você pode adaptar esse script para ser um sistema de Receitas de Comidas #
# como nos jogos The Sim's e Harvest Moon,por exemplo,veja a demo do script. #
# Ou para funcionar como um sistema de mineração,veja exemplos na demo. #
#------------------------------------------------------------------------------#
# ** Caracteristicas: #
# (*) Infinitas Possibilidades de Receitas #
# (*) Criação de Items Comuns,Armas e Armaduras #
# (*) Chance de Quebra no momento da Forja #
# (*) Janela com todas os dados de todas as forjas já feitas #
# (*) Criação de varios sistemas diferentes,como,sistema de cozinha,sistema #
# de mineração,etc.. #
#==============================================================================#

#==============================================================================#
# [** $RafiScripts.instr ] // Instruções / Instructions: #
#------------------------------------------------------------------------------#
# 1° Cole este script acima do Main #
# 2° Dentro do Modulo Rafidelis::CraftSystem,a varias opções para personalizar #
# o sistema,leia os comentarios antes de editar uma determinada opção #
# 3° Dentro do Modulo Rafidelis::CraftSystem:: CraftRecipes,existe uma opção #
# chamada 'Recipes'.Vá até essa sessão para ver como são feitas as receitas #
#------------------------------------------------------------------------------#
# :: COMANDOS CHAMAR SCRIPT :: #
#------------------------------------------------------------------------------#
# Para chamar a tela de Criação de Itens,use: #
# $scene = $scene = Scene_ItemCraft.new #
#------------------------------------------------------------------------------#
# Para aprender uma determinada receita,já declarada em Recipes,use: #
# $game_party.learn_recipe(id da receita) #
#------------------------------------------------------------------------------#
# Para fazer com que o jogador esqueça uma receita,use: #
# $game_party.forget_recipe(id da receita) #
#------------------------------------------------------------------------------#
# Para fazer com que o jogador esqueça toda as receitas aprendidas,use: #
# $game_party.forget_all_recipes! #
#------------------------------------------------------------------------------#
# Para fazer com que o jogador aprenda toda as receitas declaradas,use: #
# $game_party.learn_all_recipes! #
#==============================================================================#

#==============================================================================#
# [ ** Modulo necessarios para usar os Scripts Criados por Rafidelis ** ] #
#==============================================================================#
module Rafidelis
#==============================================================================#
# Rafidelis.add_script - Name : Name of Script - Version : Version of Script #
#------------------------------------------------------------------------------#
def self.add_script(name,version)
$RafiScripts = [] if $RafiScripts.nil?
$RafiScripts.push("Name : #{name} - Version: #{version}")
$RafiScripts.compact!
end
#==============================================================================#
# Rafidelis.script_exist? - Name : Name of Script - Version : Version of Script#
#------------------------------------------------------------------------------#
def self.script_exist?(name,version)
$RafiScripts = [] if $RafiScripts.nil?
return $RafiScripts.include?("Name : #{name} - Version: #{version}")
end
#==============================================================================#
# Rafidelis.scripts - Return all scripts create by Rafidelis(RafiScripts) #
#------------------------------------------------------------------------------#
def self.scripts
print $RafiScripts
end
#==============================================================================#
# Rafidelis.create_txt - Create a .txt with all Rafidelis(RafiScripts) scripts #
#------------------------------------------------------------------------------#
def self.create_txt(filename="RafideliScripts")
file = File.open("#{filename}.txt","wb")
for i in 0...$RafiScripts.size
file.write("#{$RafiScripts[i]}\r\n")
end
end
#==============================================================================#
# [ ** Modulo de Opções para o Sistema de Criação de Itens ** ] #
#==============================================================================#
module CraftSystem
# Adicionando o Script ao Sistema.Não Modificar
name = "Craft System"
version = "1.0"
Rafidelis.add_script(name,version)
# Script adicionado ao Sistema.

#===========================================================================
# [** Can_Fail? => Pode haver quebra na hora da Forja?
# [ ** Deixe em true para que seja possivel,false para desativar
#===========================================================================
Can_Fail = true
#===========================================================================
# [** Porcentagem de Falha(Quebra) no total de 100
# Ou seja,o valor passado abaixo será a porcentagem possivel da forja falhar
# Tem efeito somente se a opção Can_Fail? for igual a true
#===========================================================================
Fail_Percent = 40 # Padrão 40 % de chances de falha
#===========================================================================
# [** Escopos dos Items. => Recomendado não modificar.
#===========================================================================
ItemScopes = ["Nada","Um só Inimigo","Grupo de Inimigos","Inimigo Continuo",
"Um Inimigo Aleatório","Dois Inimigos Aleatórios",
"Três Inimigos Aleatórios","Um só Aliado","Grupo de Personagens",
"Um só aliado[Morto]","Grupo de Personagens[Mortos]","Herói"]
#===========================================================================
# [** Parametros dos Items. => Recomendado não modificar.
#===========================================================================
Item_Parameters = [
"Nada","HP Máximo","MP Máximo","Ataque","Defesa",
"Agilidade","Inteligência"]
#===========================================================================
# [** Dados dos Items. => Recomendado não modificar.
#===========================================================================
Item_Datas = [
"Afeta:","Preço:","Recuperação de HP:","Recuperação de MP:",
"Adiciona Pontos em:","Quantidade de Pontos:"]
#===========================================================================
# [** Dados das Armas. => Recomendado não modificar.
#===========================================================================
Weapon_Datas = ["Preço:","Ataque:","Defesa:","Inteligência:","Agilidade:",
"Suporte a 2 Mãos:","Precisão:"]
#===========================================================================
# [** Tipos de Armaduras. => Recomendado não modificar.
#===========================================================================
ArmorKinds = ["Escudo","Elmo","Armadura","Acessório"]
#===========================================================================
# [** Dados das Armaduras. => Recomendado não modificar.
#===========================================================================
Armor_Datas = ["Tipo:","Preço:","Ataque:","Defesa:","Inteligência:",
"Agilidade:","Evasão:"]
#===========================================================================
# [** Mensagens do Resultados das Forjas ** ]
#===========================================================================
Result_Messages = [
"Você Não Possui os Itens Necessarios Para Essa Receita.",
"Criação Falhou!Não Foi Possivel Criar Item Para Essa Receita.",
"Criação Completa!O Seu Item Foi Criado com Sucesso!"]
#===========================================================================
# [** Tamanho do Icone do Item Exibido na Janela de Resultado da Forja **]
#===========================================================================
Icon_Size = 48
#===========================================================================
# [** Textos Exibidos na Janela de Ingredientes ** ]
#===========================================================================
Ingredients_Captions = ["Items Necessarios","Possuidos/Necessarios"]
#===========================================================================
# [** Textos Exibidos na Janela de Informações das Forjas ** ]
#===========================================================================
Window_Infos_Captions = ["Receitas Aprendidas:","Total de Itens Usados:",
"Total de Items Obtidos:","Forjas Completas:"]
#==============================================================================#
# [ ** Modulo de Receitas para o Sistema de Criação de Itens ** ] #
#==============================================================================#
module CraftRecipes
#==============================================================================#
# [ ** MODELO PARA DECLARAÇÃO DE RECEITAS ** ] #
#------------------------------------------------------------------------------#
# Recipes[ID] = {
# "Ingredients" => [id item 1,id item 2...id item n],
# "Ingredients Types" => [tipo item 1,tipo item 2...tipo item n],
# "Ingredients Quantity" => [quantidade item 1,qntadade item 2,qntadade item n],
# "Result" => ID do Item Resultante da Forja,
# "Result Type" => Tipo de Item Resultante,
# "Result Quantity" => Quantidade de Itens Criados }
#===============================================================================
# TIPOS DOS ITEMS DOS INGREDIENTES E RESULTADO DA FORJA :
#===============================================================================
# 1 - Indica que o item com o ID passado,é um Item.
# 2 - Indica que o item com o ID passado,é uma Arma.
# 3 - Indica que o item com o ID passado,é uma Arma.
#===============================================================================

Recipes = []
#=========================================================================
# [** Receita 0 ** ] => Mega Poção
#=========================================================================
Recipes[0] =
{
# ID dos Ingredientes
"Ingredients" => [1,2],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1,1],
# ID do Item que será obtido com a forja
"Result" => 3,
# Tipo do Item que será obtido com a forja
"Result Type" => 1,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 1 ** ] => Lança
#=========================================================================
Recipes[1] =
{
# ID dos Ingredientes
"Ingredients" => [1,2],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [2,2],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1,1],
# ID do Item que será obtido com a forja
"Result" => 3,
# Tipo do Item que será obtido com a forja
"Result Type" => 2,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 2 ** ] => Armadura Completa
#=========================================================================
Recipes[2] =
{
# ID dos Ingredientes
"Ingredients" => [14,15],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [3,3], # 3 = Armaduras
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1,1],
# ID do Item que será obtido com a forja
"Result" => 17,
# Tipo do Item que será obtido com a forja
"Result Type" => 3,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }

#=========================================================================
# DAQUI PARA BAIXO SÃO RECEITAS DA DEMO DO SCRIPT
# SE VOCÊ QUISER PODE USAR ESSAS RECEITAS NOS SEUS JOGOS.
#=========================================================================


#=========================================================================
# [** Receitas Para Sistema de Cozinha ** ]
#=========================================================================

#=========================================================================
# [** Receitas 3 ** ] Torta de Cereja
#=========================================================================
Recipes[3] =
{
# ID dos Ingredientes
"Ingredients" => [34,35,36],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [2,1,1],
# ID do Item que será obtido com a forja
"Result" => 31,
# Tipo do Item que será obtido com a forja
"Result Type" => 1,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receitas 4 ** ] Torta de Maça
#=========================================================================
Recipes[4] =
{
# ID dos Ingredientes
"Ingredients" => [34,35,37],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [2,1,1],
# ID do Item que será obtido com a forja
"Result" => 32,
# Tipo do Item que será obtido com a forja
"Result Type" => 1,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receitas 5 ** ] X - Burguer de Queijo
#=========================================================================
Recipes[5] =
{
# ID dos Ingredientes
"Ingredients" => [38,39],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1,1],
# ID do Item que será obtido com a forja
"Result" => 33,
# Tipo do Item que será obtido com a forja
"Result Type" => 1,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }


#=========================================================================
# [** Receitas Somentes de Armas e Armaduras ** ]
#=========================================================================

#=========================================================================
# [** Receita 6 ** ] => Espada
#=========================================================================
Recipes[6] =
{
# ID dos Ingredientes
"Ingredients" => [43,44],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [2,1],
# ID do Item que será obtido com a forja
"Result" => 2,
# Tipo do Item que será obtido com a forja
"Result Type" => 2,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 7 ** ] => Tridente
#=========================================================================
Recipes[7] =
{
# ID dos Ingredientes
"Ingredients" => [43,44],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [3,3],
# ID do Item que será obtido com a forja
"Result" => 9,
# Tipo do Item que será obtido com a forja
"Result Type" => 2,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 8 ** ] => Armadura Real
#=========================================================================
Recipes[8] =
{
# ID dos Ingredientes
"Ingredients" => [43],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [20],
# ID do Item que será obtido com a forja
"Result" => 15,
# Tipo do Item que será obtido com a forja
"Result Type" => 3,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 9 ** ] => Escudo do Dragão
#=========================================================================
Recipes[9] =
{
# ID dos Ingredientes
"Ingredients" => [43,15],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,3],
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [4,1],
# ID do Item que será obtido com a forja
"Result" => 6,
# Tipo do Item que será obtido com a forja
"Result Type" => 3,
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }

#=========================================================================
# [** Receitas Somentes de Cristais e Joias ** ]
#=========================================================================

#=========================================================================
# [** Receita 10 ** ] => Diamante de Ruby
#=========================================================================
Recipes[10] =
{
# ID dos Ingredientes
"Ingredients" => [48], # Pedra Vermelhaa
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1], # Item
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1],
# ID do Item que será obtido com a forja
"Result" => 51, # Diamante de Ruby
# Tipo do Item que será obtido com a forja
"Result Type" => 1, # Item
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 11 ** ] => Diamante de Ametista
#=========================================================================
Recipes[11] =
{
# ID dos Ingredientes
"Ingredients" => [49], # Pedra Azul
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1], # Item
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1],
# ID do Item que será obtido com a forja
"Result" => 52, # Diamante de Ametista
# Tipo do Item que será obtido com a forja
"Result Type" => 1, # Item
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 12 ** ] => Diamante Supremo
#=========================================================================
Recipes[12] =
{
# ID dos Ingredientes # Pedra Branca,Diamante de Ruby,Diamante de Ametista
"Ingredients" => [50,51,52],
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1,1,1], # Item
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1,1,1],
# ID do Item que será obtido com a forja
"Result" => 53, # Diamante de Ametista
# Tipo do Item que será obtido com a forja
"Result Type" => 1, # Item
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
#=========================================================================
# [** Receita 13 ** ] => Diamante de Ouro
#=========================================================================
Recipes[13] =
{
# ID dos Ingredientes
"Ingredients" => [54], # Ouro
# Tipo de Ingrediente de cada ID passado acima
"Ingredients Types" => [1], # Item
# Quantidade usada de cada ingrediente
"Ingredients Quantity" => [1],
# ID do Item que será obtido com a forja
"Result" => 55, # Diamante de Ouro
# Tipo do Item que será obtido com a forja
"Result Type" => 1, # Item
# Total de Items que serão obtidos com a forja
"Result Quantity" => 1 }
end
end
end
#==============================================================================#
# [** $RafiScripts.conf_end ] \\ Fim das Configurações #
#==============================================================================#
# [** $RafiScripts.script_end] // Fim do Script - Script End #
#------------------------------------------------------------------------------#
# Você pode encontrar mais scripts meus em www.ReinoRPG.com #
# You can find more scripts create for me at www.ReinoRPG.com #
#==============================================================================#
# www.RafideliScripts.4shared.com #
#==============================================================================#

Item Crafting Script
Spoiler for Script:
Código: (ruby) [Selecionar]
#==============================================================================#
# [RGSS2] Rafidelis Craft System #
#------------------------------------------------------------------------------#
# $RafiScripts.by = Rafidelis(RafiScripts - RafideliSoft Brasil) #
# $RafiScripts.version = 1.1 #
# $RafiScripts.release_date = 19/12/09 (d/m/y) #
# $RafiScripts.update_date = 24/12/09 (d/m/y) #
# $RafiScripts.email = Rafa_Fidelis@hotmail.com or Rafa_Fidelis@yahoo.com.br #
# $RafiScripts.website = www.ReinoRPG.com or www.ReinoRPG.com/forum #
# $RafiScripts.website² = www.RafideliScripts.4shared.com #
#==============================================================================#
#==============================================================================#
# Verificando se o script esta incluso no sistema #
#==============================================================================#
name = "Craft System"
version = "1.0"
if Rafidelis.script_exist?(name,version)
#==============================================================================
# Scene_ItemCraft
#------------------------------------------------------------------------------
# Esta classe é responsavel pelo processo da Scene de criação de items e as
# o comportamento das janelas
#==============================================================================
class Scene_ItemCraft < Scene_Base
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
def initialize(from_menu=false)
@from_menu = from_menu
end
#--------------------------------------------------------------------------
# Inicialização do processo
#--------------------------------------------------------------------------
def start
@windows = []
@recipe_id = nil
@windows[0] = Window_Recipe_Result.new(200,0)
@windows[1] = CraftRecipes_Command_Window.new(@windows[0].y)
y = @windows[0].height + @windows[0].y
@windows[2] = Window_Recipe_Ingredients.new(@windows[0].x,y)
@windows[3] = Window_Recipe_Infos.new(0,@windows[1].y + @windows[1].height)
@windows[4] = CraftResult_Window.new
@windows[4].update
@windows[5] = Craft_Yes_No.new
@recipe_id = @windows[1].index
@windows[0].recipe_id = @windows[2].recipe_id =
@windows[4].recipe_id = @recipe_id
@index = @windows[1].index
@windows[0].update
@windows[2].update
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
if @windows[1].active
update_recipe_list_command_window
elsif @windows[5].active
update_recipe_yes_no_command_window
elsif @windows[4].active
update_result_window
end
end
#--------------------------------------------------------------------------
# Atualização da Janela de Comando com a Lista de Receitas
#--------------------------------------------------------------------------
def update_recipe_list_command_window
@windows[1].update
if @index != @windows[1].index and @recipe_id != nil and @recipe_id >= 0
@recipe_id = @windows[1].index
@index = @windows[1].index
@windows[0].recipe_id = @windows[2].recipe_id =
@windows[4].recipe_id = @recipe_id
@windows[0].update ; @windows[2].update
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C) and @recipe_id != nil and @recipe_id >= 0
@windows[1].refresh
if $game_party.recipe_can_make?(@index)
@windows[5].set_visible(true)
set_window_mode(1,true,false)
else
@windows[1].refresh
Sound.play_buzzer
set_window_mode(1,true,false)
set_window_mode(4,true,true)
$game_party.make_recipe(@index)
@windows[4].update
end
end
end
#--------------------------------------------------------------------------
# Atualização da Janela de Escolha 'Sim' ou 'Não'
#--------------------------------------------------------------------------
def update_recipe_yes_no_command_window
@windows[5].update
if Input.trigger?(Input::C)
case @windows[5].index
when 0
Sound.play_use_item
$game_party.make_recipe(@index)
@windows[5].set_visible(false)
@windows[1].refresh
@windows[4].update
set_window_mode(4,true,true)
@windows[3].refresh
@windows[2].update
when 1
@windows[1].refresh
@windows[5].set_visible(false)
set_window_mode(1,true,true)
end
elsif Input.trigger?(Input::B)
@windows[1].refresh
@windows[5].set_visible(false)
set_window_mode(1,true,true)
end
end
#--------------------------------------------------------------------------
# Atualização da Janela de Resultado da Forja
#--------------------------------------------------------------------------
def update_result_window
if Input.trigger?(Input::C) or Input.trigger?(Input::B)
@windows[1].refresh
set_window_mode(4,false,false)
set_window_mode(1,true,true)
end
end
#--------------------------------------------------------------------------
# Definir o modo de uma determinada Janela
#--------------------------------------------------------------------------
def set_window_mode(window,visible,active)
@windows[window].active = active
@windows[window].visible = visible
end
#--------------------------------------------------------------------------
# Retornar à tela original
#--------------------------------------------------------------------------
def return_scene
if @from_menu
$scene = Scene_Menu.new(5)
else
$scene = Scene_Map.new
end
end
#--------------------------------------------------------------------------
# Fim do processo
#--------------------------------------------------------------------------
def terminate
w = Window_Recipe_Result
@windows.each {|i| i.dispose ; i.is_a?(w) ? i.help_window.dispose : ""}
end
end
#==============================================================================
# Game_Party
#------------------------------------------------------------------------------
# Classe que trata do Grupo. Inclui informações sobre dinheiro, itens, etc.
# Pode ser acessada utilizando $game_party.
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# Variáveis públicas
#--------------------------------------------------------------------------
attr_reader :recipes,:craft_text
include Rafidelis::CraftSystem
include Rafidelis::CraftSystem::CraftRecipes
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
alias :rafidelis_CraftSystem_Initialize :initialize
def initialize
rafidelis_CraftSystem_Initialize
@recipes = []
@craft_text = ""
@craft_results = Result_Messages
end
#--------------------------------------------------------------------------
# Aprender Receita
# recipe_id : ID da habilidade
#--------------------------------------------------------------------------
def learn_recipe(recipe_id)
unless recipe_learned?(recipe_id)
@recipes.push(Recipes[recipe_id])
end
end
#--------------------------------------------------------------------------
# Possível aprender Receita?
# recipe_id : ID da receita
#--------------------------------------------------------------------------
def recipe_learned?(recipe_id)
recipe = Recipes[recipe_id]
return @recipes.include?(recipe)
end
#--------------------------------------------------------------------------
# Esquecer Receita Aprendida
# recipe_id : ID da receita
#--------------------------------------------------------------------------
def forget_recipe(recipe_id)
@recipes[recipe_id] = nil
@recipes.compact!
end
#--------------------------------------------------------------------------
# Aprender todas as receitas declaradas
#--------------------------------------------------------------------------
def learn_all_recipes!
for i in 0...Recipes.size
learn_recipe(i)
end
end
#--------------------------------------------------------------------------
# Esquecer todas as receitas aprendidas
#--------------------------------------------------------------------------
def forget_all_recipes!
@recipes.clear
end
#--------------------------------------------------------------------------
# Checagem dos items Necessarios para fazer a receita
# recipe_id : ID da receita
#--------------------------------------------------------------------------
def have_recipe_necessary_Items?(recipe_id)
return if @recipes[recipe_id].nil?
have_items = false
total_ingredients = @recipes[recipe_id]['Ingredients Quantity']
for i in 0...total_ingredients.size
item = check_recipe_item_type(recipe_id,i)
if $game_party.item_number(item) >= total_ingredients[i]
have_items = true
else
have_items = false
return have_items
end
end
return have_items
end
#--------------------------------------------------------------------------
# Checagem do tipo de Item a ser Forjado(Criado)
# recipe_id : ID da receita
#--------------------------------------------------------------------------
def check_recipe_item_type(recipe_id,value)
type = @recipes[recipe_id]['Ingredients Types']
ingredients = @recipes[recipe_id]['Ingredients']
case type[value]
when 1
item = $data_items[ingredients[value]]
when 2
item = $data_weapons[ingredients[value]]
when 3
item = $data_armors[ingredients[value]]
end
return item
end
#--------------------------------------------------------------------------
# A receita pode ser feita?
# recipe_id : ID da Receita
#--------------------------------------------------------------------------
def recipe_can_make?(recipe_id)
return have_recipe_necessary_Items?(recipe_id)
end
#--------------------------------------------------------------------------
# Fazer Receita(Criar Forja)
# recipe_id : ID da receita
#--------------------------------------------------------------------------
def make_recipe(recipe_id)
return if @recipes[recipe_id].nil?
condition = rand(100)
n = @recipes[recipe_id]['Ingredients Quantity']
total_items = 0
n.each {|i| total_items += i}
if have_recipe_necessary_Items?(recipe_id)
if Can_Fail
if condition <= Fail_Percent
for i in 0...n.size
item = check_recipe_item_type(recipe_id,i)
lose_item(item,n[i])
end
$game_system.recipes_failed += 1
$game_system.recipes_items_used += total_items
@craft_text = @craft_results[1]
return
end
end
type = @recipes[recipe_id]['Result Type']
result = @recipes[recipe_id]['Result']
result_quantity = @recipes[recipe_id]['Result Quantity']
case type
when 1 ; item = $data_items
when 2 ; item = $data_weapons
when 3 ; item = $data_armors
end
gain_item(item[result],result_quantity)
for i in 0...n.size
item = check_recipe_item_type(recipe_id,i)
lose_item(item,n[i])
end
$game_system.recipes_items_used += total_items
$game_system.recipes_items_obtained += result_quantity
$game_system.recipes_made += 1
@craft_text = @craft_results[2]
else
@craft_text = @craft_results[0]
return
end
end
end
#==============================================================================
# Game_System
#------------------------------------------------------------------------------
# Esta classe controla os dados em torno do sistema de jogo. Ela controla os
# veículos, músicas, etc. Pode ser acessada utilizando $game_system
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# Variáveis públicas
#--------------------------------------------------------------------------
attr_accessor :recipes_items_used
attr_accessor :recipes_items_obtained
attr_accessor :recipes_failed
attr_accessor :recipes_made
alias rafidelis_CraftSystem_Initialize initialize
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
def initialize
rafidelis_CraftSystem_Initialize
@recipes_items_used = 0
@recipes_items_obtained = 0
@recipes_failed = 0
@recipes_made = 0
end
end
#==============================================================================
# Window_Base
#------------------------------------------------------------------------------
# Esta é a classe superior à todas as classes de janelas do jogo.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# Adicionar Texto
#--------------------------------------------------------------------------
def add_text(x,y,text,align,color,font_size,bold=false,italic=false)
self.contents.font.size = font_size
self.contents.font.color = text_color(color)
self.contents.font.bold = bold
self.contents.font.italic = italic
self.contents.draw_text(x,y,self.width,32,text,align)
end
end
#==============================================================================
# Window Recipe Result
#------------------------------------------------------------------------------
# Esta é a classe que exibe dados do resultado das receitas na tela de forja.
#==============================================================================
class Window_Recipe_Result < Window_Base
include Rafidelis::CraftSystem
include Rafidelis::CraftSystem::CraftRecipes
#--------------------------------------------------------------------------
# Variáveis públicas
#--------------------------------------------------------------------------
attr_accessor :recipe_id # ID da Receita Atual
attr_reader :help_window # Janela de Ajuda
#--------------------------------------------------------------------------
# Inicialização do obeto
# x : coordenada X da janela
# y : coordenada Y da janela
#--------------------------------------------------------------------------
def initialize(x,y)
super(x,y,344,225)
@recipes = $game_party.recipes
@recipe_id = nil
@help_window = Window_Help.new
self.y += @help_window.height
update
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def update
super
return if @recipe_id.nil? or @recipes.size == 0
@current_recipe = @recipes[@recipe_id]
type = @current_recipe['Result Type']
draw_item_type(type)
end
#--------------------------------------------------------------------------
# Desenhar o Item e seus parametros
# type : Tipo do Item
#--------------------------------------------------------------------------
def draw_item_type(type)
case type
when 1
draw_normal_item
when 2
draw_weapon
when 3
draw_armor
end
end
#--------------------------------------------------------------------------
# Mostrar Dados de um Item Normal
#--------------------------------------------------------------------------
def draw_normal_item
recipe_id = @current_recipe['Result']
item = $data_items[recipe_id]
text = Item_Datas
text2 = [
ItemScopes[item.scope],item.price,item.hp_recovery,item.mp_recovery,
Item_Parameters[item.parameter_type],item.parameter_points]
draw_item_data(text,text2,item)
end
#--------------------------------------------------------------------------
# Mostrar Dados de uma Arma
#--------------------------------------------------------------------------
def draw_weapon
recipe_id = @current_recipe['Result']
item = $data_weapons[recipe_id]
s = " %"
t = item.two_handed ? "Sim" : "Não"
text = Weapon_Datas
text2 =
[item.price,item.atk,item.def,item.spi,item.agi,t,item.hit.to_s + s]
draw_item_data(text,text2,item)
end
#--------------------------------------------------------------------------
# Mostrar Dados de uma Armadura
#--------------------------------------------------------------------------
def draw_armor
recipe_id = @current_recipe['Result']
item = $data_armors[recipe_id]
s = " %"
text = Armor_Datas
text2 =
[ArmorKinds[item.kind],item.price,item.atk,item.def,item.spi,item.agi,item.eva.to_s + s]
draw_item_data(text,text2,item)
end
#--------------------------------------------------------------------------
# Exibição do ícone
# icon_index : número do ícone
# x : exibe na coordenada X
# y : exibe na coordenada Y
# enabled : um espaço permitido. Fica transparente quando falso
#--------------------------------------------------------------------------
def draw_icon(icon_index, x, y, enabled = true)
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
s = Icon_Size
self.contents.stretch_blt(Rect.new(x,y,s,s),bitmap,rect,enabled ? 255 : 128)
end
#--------------------------------------------------------------------------
# Exibição dos Textos e Icone do Item
#--------------------------------------------------------------------------
def draw_item_data(text,text2,item)
font_size = 14
add = (font_size + 10)
self.contents.clear
color = Color.new(0,0,0,50)
self.contents.fill_rect(0,0,self.width,Icon_Size + 2,color)
for i in 0...text.size
x = 0
y = Icon_Size + ( i * add )
w = self.contents.text_size(text[i]).width

if item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)
if i == text.size - 1
x = w + 100
y = Icon_Size
end
end

i == 0 ? w = w - 13 : w
add_text(x,y,text[i],0,2,font_size)
add_text(x + w + 3,y,text2[i],0,0,font_size)
end
draw_icon(item.icon_index,2,0)
add_text(Icon_Size + 10,10,item.name,0,2,20,true)
@help_window.contents.font.size = font_size + 2
@help_window.set_text(item.description,1)
end
end
#==============================================================================
# Window Recipe Ingredients
#------------------------------------------------------------------------------
# Esta é a classe que exibe os Ingredientes das receitas na tela de forja.
#==============================================================================
class Window_Recipe_Ingredients < Window_Base
include Rafidelis::CraftSystem
include Rafidelis::CraftSystem::CraftRecipes
#--------------------------------------------------------------------------
# Variáveis públicas
#--------------------------------------------------------------------------
attr_accessor :recipe_id # ID da Receita Atual
#--------------------------------------------------------------------------
# Inicialização do obeto
# x : coordenada X da janela
# y : coordenada Y da janela
#--------------------------------------------------------------------------
def initialize(x,y)
super(x,y,344,135)
@recipes = $game_party.recipes
@recipe_id = nil
update
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
return if @recipe_id.nil? or @recipes.size == 0
@current_recipe = @recipes[@recipe_id]
draw_recipe_icon(@current_recipe,@current_recipe['Ingredients'].size > 3)
end
#--------------------------------------------------------------------------
# Exibição dos Icones das Receitas
# item : item a ser desenhado
# resize : true para redimensionar o icone
#--------------------------------------------------------------------------
def draw_recipe_icon(item,resize=false)
self.contents.clear
add_text(0,-5,Ingredients_Captions[0],0,2,15)
add_text(160,-5,Ingredients_Captions[1],0,2,15)
item_ingredients = item['Ingredients']
item_types = item['Ingredients Types']
for i in 0...item_ingredients.size
case item_types[i]
when 1 ; data = $data_items
when 2 ; data = $data_weapons
when 3 ; data = $data_armors
end
x = 0
icon_x = 0
if resize
y = 25 + i * 19
draw_small_icon(data[item_ingredients[i]].icon_index,x,y)
else
y = 25 + i * 28
draw_icon(data[item_ingredients[i]].icon_index,x,y)
end
add_text(x + 24,y - 6,data[item_ingredients[i]].name,0,0,15)
items = $game_party.item_number(data[item_ingredients[i]])
needed = item["Ingredients Quantity"][i]
add_text(x + 215,y,"#{items}/#{needed}",0,0,15)
end
end
#--------------------------------------------------------------------------
# Exibição do ícone
# icon_index : número do ícone
# x : exibe na coordenada X
# y : exibe na coordenada Y
# enabled : um espaço permitido. Fica transparente quando falso
#--------------------------------------------------------------------------
def draw_small_icon(icon_index, x, y, enabled = true)
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
self.contents.stretch_blt(Rect.new(x,y,18,18),bitmap,rect,enabled ? 255 : 128)
end
end
#==============================================================================
# Window Recipe Infos
#------------------------------------------------------------------------------
# Esta é a classe que exibe as informações sobre as Forjas na tela de Forja.
#==============================================================================
class Window_Recipe_Infos < Window_Base
include Rafidelis::CraftSystem
include Rafidelis::CraftSystem::CraftRecipes
def initialize(x,y)
super(x,y,200,136)
refresh
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def refresh
self.contents.clear
all_recipes = Rafidelis::CraftSystem::CraftRecipes::Recipes.size
disc_recipes = $game_party.recipes.size
texts = Window_Infos_Captions
texts2 = [
"#{disc_recipes}/#{all_recipes}",$game_system.recipes_items_used,
$game_system.recipes_items_obtained,
"#{$game_system.recipes_made}\\#{$game_system.recipes_failed + $game_system.recipes_made}"]
for i in 0...texts.size
y = i * 25
add_text(0,y,texts[i],0,2,13)
x = self.contents.text_size(texts[i].to_s).width
add_text(x+4,y,texts2[i].to_s,0,0,13)
end
end
end
#==============================================================================
# Craft Yes No Window
#------------------------------------------------------------------------------
# Esta janela exibe a janela de opção,onde o usuario escolhe se quer ou não
# criar um item.
#==============================================================================
class Craft_Yes_No < Window_Command
def initialize
@text_window = Window_Base.new(0,0,300,56)
@text_window.width = 350
@text_window.x = (Graphics.width - @text_window.width)/2
@text_window.y = (Graphics.width - @text_window.height)/4
super(100,["Sim","Não"])
self.x = (Graphics.width - self.width)/2
self.y = (@text_window.y + self.height)
set_visible(false)
self.contents.font.size = 15
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
super
@text_window.contents.clear
@text_window.add_text(-10,0,"Deseja Criar Esse Item?",1,0,16)
end
#--------------------------------------------------------------------------
# Definir Visibilidade
# value : valor da visibilidade da janela
#--------------------------------------------------------------------------
def set_visible(value)
self.active = self.visible = @text_window.visible = value
refresh
end
end
#==============================================================================
# Craft Recipes Command Window
#------------------------------------------------------------------------------
# Esta classe cria uma janela de comando com as as receitas aprendidadas pelo
# jogador.
#==============================================================================
class CraftRecipes_Command_Window < Window_Command
#--------------------------------------------------------------------------
# Inicialização do objeto
# y : Posição vertical da Janela
#--------------------------------------------------------------------------
def initialize(y)
commands = []
@recipes = $game_party.recipes
for i in 0...@recipes.size
case @recipes[i]['Result Type']
when 1 ; data = $data_items
when 2 ; data = $data_weapons
when 3 ; data = $data_armors
end
item_name = data[@recipes[i]['Result']].name
commands.push(item_name)
end
super(200,commands)
self.height = 225
self.contents.font.size = 15
self.y = y
self.index = -1 if @item_max == 0
refresh
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i,$game_party.recipe_can_make?(i))
end
end
end
#==============================================================================
# Craft Result Window
#------------------------------------------------------------------------------
# Esta janela é usada para exibir a mensagem de resultado da Forja
#==============================================================================
class CraftResult_Window < Window_Base
attr_accessor :recipe_id
def initialize()
super(0,0,500,56)
self.x = (Graphics.width - self.width)/2
self.y = (Graphics.height - self.height)/2
self.visible = self.active = false
update
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def update
return if $game_party.recipes.size == 0
self.contents.clear
add_text(-20,-2,$game_party.craft_text,1,0,15)
x = (Graphics.width - self.width)/2
end
end
# Fim da Verificação do Script
end
#==============================================================================#
# [** $RafiScripts.script_end] // Fim do Script - Script End #
#------------------------------------------------------------------------------#
# Você pode encontrar mais scripts meus em www.ReinoRPG.com #
# You can find more scripts create for me at www.ReinoRPG.com #
#==============================================================================#
# www.RafideliScripts.4shared.com #
#==============================================================================#

Menu ADD-ON (24/12/09)
Spoiler for Script:
Código: (ruby) [Selecionar]
#==============================================================================#
# [RGSS2] Rafidelis Craft System - Menu ADD-ON #
#------------------------------------------------------------------------------#
# $RafiScripts.by = Rafidelis(RafiScripts - RafideliSoft Brasil) #
# $RafiScripts.version = 1.0 #
# $RafiScripts.release_date = 24/12/09 (d/m/y) #
# $RafiScripts.email = Rafa_Fidelis@hotmail.com or Rafa_Fidelis@yahoo.com.br #
# $RafiScripts.website = www.ReinoRPG.com or www.ReinoRPG.com/forum #
# $RafiScripts.website² = www.RafideliScripts.4shared.com #
#==============================================================================#
module Rafidelis
#==============================================================================#
# [ ** Modulo de Opções para o Sistema de Criação de Itens ** ] #
#==============================================================================#
module CraftSystem
#===========================================================================
# Nome da Opção no Menu
#===========================================================================
Menu_Craft_Command = "Craft"
#===========================================================================
# ID da Switch que controla a Exibição da Opção de Forja no Menu
#===========================================================================
Menu_Switch_ID = 2
end
end
#==============================================================================#
# Verificando se o script esta incluso no sistema #
#==============================================================================#
name = "Craft System"
version = "1.0"
if Rafidelis.script_exist?(name,version)
#==============================================================================#
# Scene_Menu #
#------------------------------------------------------------------------------#
# Classe de operações na tela do menu. #
#==============================================================================#
class Scene_Menu < Scene_Base
include Rafidelis::CraftSystem
#============================================================================#
# Criação da janela de comandos #
#----------------------------------------------------------------------------#
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
commands = [s1,s2,s3,s4,s5]
if $game_switches[Menu_Switch_ID]
commands.push(Menu_Craft_Command)
commands.push(s6)
else
commands.push(s6)
end
@command_window = Window_Command.new(160,commands)
@command_window.index = @menu_index
if $game_party.members.size == 0 # Se não houver membros na equipe
@command_window.draw_item(0, false) # Desabilita "Items"
@command_window.draw_item(1, false) # Desabilita "Habilidades"
@command_window.draw_item(2, false) # Desabilita "Equipamentos"
@command_window.draw_item(3, false) # Desabilita "Status"
end
if $game_system.save_disabled # Se salvar for proibido
@command_window.draw_item(4, false) # Desabilita "Salvar"
end
end
#============================================================================#
# Atualização da escolha de comando #
#----------------------------------------------------------------------------#
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
if $game_switches[Menu_Switch_ID]
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Habilidades, equipamento, status
start_actor_selection
when 4 # Salvar
$scene = Scene_File.new(true, false, false)
when 5 # Craft
$scene = Scene_ItemCraft.new(true)
when 6
$scene = Scene_End.new
end
else
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Habilidades, equipamento, status
start_actor_selection
when 4 # Salvar
$scene = Scene_File.new(true, false, false)
when 5
$scene = Scene_End.new
end
end
end
end
end
#==============================================================================#
# Scene_End #
#------------------------------------------------------------------------------#
# Classe de operações da tela. #
#==============================================================================#
class Scene_End < Scene_Base
#--------------------------------------------------------------------------
# Retornar à tela original
#--------------------------------------------------------------------------
def return_scene
if $game_switches[Rafidelis::CraftSystem::Menu_Switch_ID]
$scene = Scene_Menu.new(6)
else
$scene = Scene_Menu.new(5)
end
end
end
# Script verification end
end
#==============================================================================#
# [** $RafiScripts.script_end] // Fim do Script - Script End #
#------------------------------------------------------------------------------#
# Você pode encontrar mais scripts meus em www.ReinoRPG.com #
# You can find more scripts create for me at www.ReinoRPG.com #
#==============================================================================#

È altamente recomendavel o download da demo do Script,pois ela contem 13 receitas declaradas,e possui um 'mini jogo' onde é explicado tudo detalhadamente,então antes de fazer uma pergunta,primeiro jogue a demo para ver se a sua duvida é esclarecida na mesma.

Download da Demo
http://www.4shared.com/file/177500054/262b222b/Rafidelis_CraftSystem_10.html

Termos de Uso

- Se for usar esse script em seus jogos,você não é obrigado a incluir meu nome nos creditos,mas eu gostaria que você me desse os merecidos creditos ;D
- Você pode usar esse script em jogos não comerciais,se deseja utilizar em algum jogo comercial,entre em contato comigo e entramos em acordo.
- Você pode distribuir/modificar/editar esse script,mas não pode retirar o nome do autor e nem o link para o forum da ReinoRpg.(www.ReinoRPG.com/forum)
- Enjoy ;D

Convidad
Convidado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum