~Base De Datos de Script de EMD~

Estado
Cerrado para nuevas respuestas
Mensajes
189
Reacciones
0
Puntos
0
Ubicación
Maraciabo- venezuela
Gracias x el script! voy a ver si me sirve....
Aca pongo un script de orfere q encontre... creo q esta en japones o algo... si lo pueden traducir o alguien sabe como usarlo agradeceria q me digan...

-Nombre Del Script: Orfebreria

-Version Del Script: ???

-Rpg Maker:
Vx (rggs2)

-Introduccion: Supuestamente seria como el sistema de orfebreria del ff9...

-Script:

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ アイテム合成 - KGC_ComposeItem ◆ VX ◆
#_/ ◇ Last update : 2008/11/02 ◇
#_/----------------------------------------------------------------------------
#_/ 複数のアイテムを合成し、新たなアイテムを作り出す機能を作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================

module KGC
module ComposeItem
# ◆ 合成画面呼び出しフラグを表すスイッチ番号
# このスイッチを ON にすると、通常のショップの代わりに合成屋が開きます。
COMPOSE_CALL_SWITCH = 2

# ◆ 合成レシピ
# [費用, "タイプ:ID,個数", ...]
# 【 費用 】合成費用
# 【タイプ】合成素材の種類 (I..アイテム W..武器 A..防具)
# 【 ID 】合成素材のID (↑と対応)
# 【 個数 】合成素材の必要数
# "タイプ:ID,個数" はいくつでも指定できます。
# 個数を省略して "タイプ:ID" と書いた場合、個数は 1 扱いとなります。
# 個数を 0 にした場合、1 個以上持っていれば何度でも合成できます。
# レシピ配列は、添字がアイテム・武器・防具IDに対応しています。
RECIPE_ITEM = [] # アイテム
RECIPE_WEAPON = [] # 武器
RECIPE_ARMOR = [] # 防具
# ここから下に合成レシピを定義。
# <設定例>
# アイテムID:8 の合成レシピ
# アイテムID 2, 4, 7 を 1 個ずつ消費。無料。
RECIPE_ITEM[8] = [0, "I:2", "I:4", "I:7"]
# 武器ID:16 の合成レシピ
# 武器ID:10 を 1 個、アイテムID:16 を 2 個消費。800 G。
RECIPE_WEAPON[16] = [800, "W:10", "I:16,2"]
# 防具ID:29 の合成レシピ
# 防具ID:25 を 1 個、アイテムID:8 を 3 個消費。2000 G。
RECIPE_ARMOR[29] = [2000, "A:25", "I:8,3"]

# ◆ 合成コマンド名
# "購入する" コマンドの位置に表示されます。
# ※ 他のコマンド名は [Vocab] で変更可能。
VOCAB_COMPOSE_ITEM = "合成する"
# ◆ 合成アイテム情報切り替えボタン
# 「素材リスト <--> 能力値変化(装備品のみ)」を切り替えるボタン。
# 使用しない場合は nil を指定。
SWITCH_INFO_BUTTON = Input::X

# ◆ 必要素材リストをコンパクトにする
# 素材数が多い場合は true にしてください。
COMPACT_MATERIAL_LIST = true
# ◆ コマンドウィンドウを表示しない
# true : XP 版と同様のスタイル
# false : VX 仕様
HIDE_COMMAND_WINDOW = false
# ◆ 所持金ウィンドウを表示しない
# true : 消える
# false : 表示
# HIDE_COMMAND_WINDOW が false のときは、常に false 扱いとなります。
HIDE_GOLD_WINDOW = false
# ◆ 合成費用が 0 の場合、費用を表示しない
# true : 表示しない
# false : 0 と表示
HIDE_ZERO_COST = true

# ◆ 合成済みのレシピは常に表示する
# true : 一度でも合成したことがあれば常にリストに表示
# false : 合成したことがあっても↓の条件に従う
SHOW_COMPOSED_RECIPE = true
# ◆ 合成費用不足のレシピを隠す
# true : 費用不足ならリストに表示しない
# false : 費用不足でも表示
HIDE_SHORTAGE_COST = false
# ◆ 合成素材不足のレシピを隠す
# true : 素材不足ならリストに表示しない
# false : 素材不足でも表示
HIDE_SHORTAGE_MATERIAL = true
# ◆ 「判明・解禁・存在」機能を使用する
# true : 判明・解禁・存在するまで表示しない
# false : 素材さえあれば合成可能
# true の場合、仕様上強制的に
# HIDE_SHORTAGE_COST = false
# HIDE_SHORTAGE_MATERIAL = false
# という扱いになります。
NEED_RECIPE_EXIST = true

# ◆ 合成したことがないレシピのアイテム名を隠す
MASK_UNKNOWN_RECIPE_NAME = true
# ◆ 合成したことがないレシピに表示する名前
# 1文字だけ指定すると、アイテム名と同じ文字数に拡張されます。
UNKNOWN_NAME_MASK = "?"
# ◆ 合成したことがないレシピのヘルプを隠す
HIDE_UNKNOWN_RECIPE_HELP = true
# ◆ 合成したことがないレシピに表示するヘルプ
UNKNOWN_RECIPE_HELP = "合成したことがありません。"
# ◆ 判明・解禁していないレシピの素材を隠す
# NEED_RECIPE_EXIST = false の場合、常に false 扱いとなります。
HIDE_UNKNOWN_RECIPE_MATERIAL = true
# ◆ 素材を隠す場合の表示文字列
UNKNOWN_RECIPE_MATERIAL = "????????"
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["ComposeItem"] = true

module KGC::ComposeItem
unless NEED_RECIPE_EXIST
HIDE_UNKNOWN_RECIPE_MATERIAL = false
end

module Regexp
# レシピ
RECIPE = /([IWA])\s*:\s*(\d+)(\s*,\s*\d+)?/i
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ KGC::Commands
#==============================================================================

module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ○ レシピ判明フラグを設定
# type : レシピのタイプ (0..アイテム 1..武器 2..防具)
# id : アイテムの ID
# enabled : true..判明 false..未判明
#--------------------------------------------------------------------------
def set_recipe_cleared(type, id, enabled = true)
item = nil
case type
when 0, :item # アイテム
item = $data_items[id]
when 1, :weapon # 武器
item = $data_weapons[id]
when 2, :armor # 防具
item = $data_armors[id]
end

$game_party.set_recipe_cleared(item, enabled) if item != nil
end
#--------------------------------------------------------------------------
# ○ レシピ解禁フラグを設定
# type : レシピのタイプ (0..アイテム 1..武器 2..防具)
# id : アイテムの ID
# enabled : true..解禁 false..未解禁
#--------------------------------------------------------------------------
def set_recipe_opened(type, id, enabled = true)
item = nil
case type
when 0, :item # アイテム
item = $data_items[id]
when 1, :weapon # 武器
item = $data_weapons[id]
when 2, :armor # 防具
item = $data_armors[id]
end

$game_party.set_recipe_opened(item, enabled) if item != nil
end
#--------------------------------------------------------------------------
# ○ レシピ存在フラグを設定
# type : レシピのタイプ (0..アイテム 1..武器 2..防具)
# id : アイテムの ID
# enabled : true or false
#--------------------------------------------------------------------------
def set_recipe_exist(type, id, enabled = true)
item = nil
case type
when 0, :item # アイテム
item = $data_items[id]
when 1, :weapon # 武器
item = $data_weapons[id]
when 2, :armor # 防具
item = $data_armors[id]
end

$game_party.set_recipe_exist(item, enabled) if item != nil
end
end
end

class Game_Interpreter
include KGC::Commands
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Vocab
#==============================================================================

module Vocab
# 合成画面
ComposeItem = KGC::ComposeItem::VOCAB_COMPOSE_ITEM
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
#--------------------------------------------------------------------------
# ○ クラス変数
#--------------------------------------------------------------------------
@@__masked_name =
KGC::ComposeItem::UNKNOWN_NAME_MASK # マスク名
@@__expand_masked_name = false # マスク名拡張表示フラグ

if @@__masked_name != nil
@@__expand_masked_name = (@@__masked_name.scan(/./).size == 1)
end
#--------------------------------------------------------------------------
# ○ アイテム合成のキャッシュ生成
#--------------------------------------------------------------------------
def create_compose_item_cache
@__compose_cost = 0
@__compose_materials = []

# レシピ取得
recipe = nil
case self
when RPG::Item # アイテム
recipe = KGC::ComposeItem::RECIPE_ITEM[self.id]
when RPG::Weapon # 武器
recipe = KGC::ComposeItem::RECIPE_WEAPON[self.id]
when RPG::Armor # 防具
recipe = KGC::ComposeItem::RECIPE_ARMOR[self.id]
end
return if recipe == nil
recipe = recipe.dup

@__compose_cost = recipe.shift
# 素材リストを作成
recipe.each { |r|
if r =~ KGC::ComposeItem::Regexp::RECIPE
material = Game_ComposeMaterial.new
material.kind = $1.upcase # 素材の種類を取得
material.id = $2.to_i # 素材の ID を取得
if $3 != nil
material.number = [$3[/\d+/].to_i, 0].max # 必要数を取得
end
@__compose_materials << material
end
}
end
#--------------------------------------------------------------------------
# ○ マスク名
#--------------------------------------------------------------------------
def masked_name
if @@__expand_masked_name
# マスク名を拡張して表示
return @@__masked_name * self.name.scan(/./).size
else
return @@__masked_name
end
end
#--------------------------------------------------------------------------
# ○ 合成用費用
#--------------------------------------------------------------------------
def compose_cost
create_compose_item_cache if @__compose_cost == nil
return @__compose_cost
end
#--------------------------------------------------------------------------
# ○ 合成用素材リスト
#--------------------------------------------------------------------------
def compose_materials
create_compose_item_cache if @__compose_materials == nil
return @__compose_materials
end
#--------------------------------------------------------------------------
# ○ 合成アイテムか
#--------------------------------------------------------------------------
def is_compose?
return !compose_materials.empty?
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ○ 合成済みフラグをクリア
#--------------------------------------------------------------------------
def clear_composed_flag
@item_composed = {}
@weapon_composed = {}
@armor_composed = {}
end
#--------------------------------------------------------------------------
# ○ レシピ判明フラグをクリア
#--------------------------------------------------------------------------
def clear_recipe_cleared_flag
@item_recipe_cleared = {}
@weapon_recipe_cleared = {}
@armor_recipe_cleared = {}
end
#--------------------------------------------------------------------------
# ○ レシピ解禁フラグをクリア
#--------------------------------------------------------------------------
def clear_recipe_opened_flag
@item_recipe_opened = {}
@weapon_recipe_opened = {}
@armor_recipe_opened = {}
end
#--------------------------------------------------------------------------
# ○ レシピ存在フラグをクリア
#--------------------------------------------------------------------------
def clear_recipe_exist_flag
@item_recipe_exist = {}
@weapon_recipe_exist = {}
@armor_recipe_exist = {}
end
#--------------------------------------------------------------------------
# ○ アイテムの合成済みフラグを設定
# item : アイテム
# flag : true..合成済み false..未合成
#--------------------------------------------------------------------------
def set_item_composed(item, flag = true)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 合成済みフラグを格納するハッシュを作成
clear_composed_flag if @item_composed == nil

# 合成済みフラグをセット
case item
when RPG::Item # アイテム
@item_composed[item.id] = flag
when RPG::Weapon # 武器
@weapon_composed[item.id] = flag
when RPG::Armor # 防具
@armor_composed[item.id] = flag
end
end
#--------------------------------------------------------------------------
# ○ アイテムの合成済み判定
# item : アイテム
#--------------------------------------------------------------------------
def item_composed?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 合成済みフラグを格納するハッシュを作成
clear_composed_flag if @item_composed == nil

# 合成済み判定
case item
when RPG::Item # アイテム
return @item_composed[item.id]
when RPG::Weapon # 武器
return @weapon_composed[item.id]
when RPG::Armor # 防具
return @armor_composed[item.id]
end
return false
end
#--------------------------------------------------------------------------
# ○ アイテムの合成済みフラグを設定
# item : アイテム
# flag : true..合成済み false..未合成
#--------------------------------------------------------------------------
def set_item_composed(item, flag = true)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 合成済みフラグを格納するハッシュを作成
clear_composed_flag if @item_composed == nil

# 合成済みフラグをセット
case item
when RPG::Item # アイテム
@item_composed[item.id] = flag
when RPG::Weapon # 武器
@weapon_composed[item.id] = flag
when RPG::Armor # 防具
@armor_composed[item.id] = flag
end
end
#--------------------------------------------------------------------------
# ○ レシピ判明判定
# item : アイテム
#--------------------------------------------------------------------------
def recipe_cleared?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 判明フラグを格納するハッシュを作成
clear_recipe_cleared_flag if @item_recipe_cleared == nil

# 判定
case item
when RPG::Item # アイテム
return @item_recipe_cleared[item.id]
when RPG::Weapon # 武器
return @weapon_recipe_cleared[item.id]
when RPG::Armor # 防具
return @armor_recipe_cleared[item.id]
end
return false
end
#--------------------------------------------------------------------------
# ○ アイテムの判明フラグを設定
# item : アイテム
# flag : true..判明 false..未判明
#--------------------------------------------------------------------------
def set_recipe_cleared(item, flag = true)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 判明フラグを格納するハッシュを作成
clear_recipe_cleared_flag if @item_recipe_cleared == nil

# 判明フラグをセット
case item
when RPG::Item # アイテム
@item_recipe_cleared[item.id] = flag
when RPG::Weapon # 武器
@weapon_recipe_cleared[item.id] = flag
when RPG::Armor # 防具
@armor_recipe_cleared[item.id] = flag
end
end
#--------------------------------------------------------------------------
# ○ レシピ解禁判定
# item : アイテム
#--------------------------------------------------------------------------
def recipe_opened?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 解禁フラグを格納するハッシュを作成
clear_recipe_opened_flag if @item_recipe_opened == nil

# 判定
case item
when RPG::Item # アイテム
return @item_recipe_opened[item.id]
when RPG::Weapon # 武器
return @weapon_recipe_opened[item.id]
when RPG::Armor # 防具
return @armor_recipe_opened[item.id]
end
return false
end
#--------------------------------------------------------------------------
# ○ アイテムの解禁フラグを設定
# item : アイテム
# flag : true..解禁 false..未解禁
#--------------------------------------------------------------------------
def set_recipe_opened(item, flag = true)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 解禁フラグを格納するハッシュを作成
clear_recipe_opened_flag if @item_recipe_opened == nil

# 解禁フラグをセット
case item
when RPG::Item # アイテム
@item_recipe_opened[item.id] = flag
when RPG::Weapon # 武器
@weapon_recipe_opened[item.id] = flag
when RPG::Armor # 防具
@armor_recipe_opened[item.id] = flag
end
end
#--------------------------------------------------------------------------
# ○ レシピ存在判定
# item : アイテム
#--------------------------------------------------------------------------
def recipe_exist?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 存在フラグを格納するハッシュを作成
clear_recipe_exist_flag if @item_recipe_exist == nil

# 判定
case item
when RPG::Item # アイテム
return @item_recipe_exist[item.id]
when RPG::Weapon # 武器
return @weapon_recipe_exist[item.id]
when RPG::Armor # 防具
return @armor_recipe_exist[item.id]
end
return false
end
#--------------------------------------------------------------------------
# ○ アイテムの存在フラグを設定
# item : アイテム
# flag : true..存在 false..存在しない
#--------------------------------------------------------------------------
def set_recipe_exist(item, flag = true)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

# 存在フラグを格納するハッシュを作成
clear_recipe_exist_flag if @item_recipe_exist == nil

# 存在フラグをセット
case item
when RPG::Item # アイテム
@item_recipe_exist[item.id] = flag
when RPG::Weapon # 武器
@weapon_recipe_exist[item.id] = flag
when RPG::Armor # 防具
@armor_recipe_exist[item.id] = flag
end
end
#--------------------------------------------------------------------------
# ○ アイテム名マスク判定
# item : アイテム
#--------------------------------------------------------------------------
def item_name_mask?(item)
return false unless KGC::ComposeItem::MASK_UNKNOWN_RECIPE_NAME
return false if item_composed?(item) # 合成済み
return false if recipe_cleared?(item) # 判明済み

return true
end
#--------------------------------------------------------------------------
# ○ 素材非表示判定
# item : アイテム
#--------------------------------------------------------------------------
def item_compose_material_mask?(item)
return false unless KGC::ComposeItem::HIDE_UNKNOWN_RECIPE_MATERIAL
return false if item_composed?(item) # 合成済み
return false if recipe_cleared?(item) # 判明済み
return false if recipe_opened?(item) # 解禁済み

return true
end
#--------------------------------------------------------------------------
# ○ アイテムの合成可能判定
# item : アイテム
#--------------------------------------------------------------------------
def item_can_compose?(item)
return false unless item_compose_cost_satisfy?(item)
return false unless item_compose_material_satisfy?(item)

return true
end
#--------------------------------------------------------------------------
# ○ 合成アイテムの資金充足判定
# item : アイテム
#--------------------------------------------------------------------------
def item_compose_cost_satisfy?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

return (gold >= item.compose_cost)
end
#--------------------------------------------------------------------------
# ○ 合成アイテムの素材充足判定
# item : アイテム
#--------------------------------------------------------------------------
def item_compose_material_satisfy?(item)
return false unless item.is_a?(RPG::BaseItem) # アイテム以外
return false unless item.is_compose? # 合成アイテム以外

item.compose_materials.each { |material|
num = item_number(material.item)
return false if num < material.number || num == 0 # 素材不足
}
return true
end
#--------------------------------------------------------------------------
# ○ アイテムの合成可能数を取得
# item : アイテム
#--------------------------------------------------------------------------
def number_of_composable(item)
return 0 unless item.is_a?(RPG::BaseItem) # アイテム以外
return 0 unless item.is_compose? # 合成アイテム以外

number = ($imported["LimitBreak"] ? item.number_limit : 99)
if item.compose_cost > 0
number = [number, gold / item.compose_cost].min
end
# 素材数判定
item.compose_materials.each { |material|
next if material.number == 0 # 必要数 0 は無視
n = item_number(material.item) / material.number
number = [number, n].min
}
return number
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Game_ComposeMaterial
#------------------------------------------------------------------------------
# 合成素材の情報を格納するクラスです。
#==============================================================================

class Game_ComposeMaterial
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :kind # アイテムの種類 (/[IWA]/)
attr_accessor :id # アイテムの ID
attr_accessor :number # 必要数
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
@kind = "I"
@id = 0
@number = 1
end
#--------------------------------------------------------------------------
# ○ アイテム取得
#--------------------------------------------------------------------------
def item
case @kind
when "I" # アイテム
return $data_items[@id]
when "W" # 武器
return $data_weapons[@id]
when "A" # 防具
return $data_armors[@id]
else
return nil
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_Base
#==============================================================================

class Window_Base < Window
#--------------------------------------------------------------------------
# ○ マスク済みアイテム名の描画
# item : アイテム (スキル、武器、防具でも可)
# x : 描画先 X 座標
# y : 描画先 Y 座標
# enabled : 有効フラグ。false のとき半透明で描画
#--------------------------------------------------------------------------
def draw_masked_item_name(item, x, y, enabled = true)
return if item == nil

draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 172, WLH, item.masked_name)
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_ComposeNumber
#------------------------------------------------------------------------------
# 合成画面で、合成するアイテムの個数を入力するウィンドウです。
#==============================================================================

class Window_ComposeNumber < Window_ShopNumber
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :sell_flag # 売却フラグ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
#--------------------------------------------------------------------------
alias initialize_KGC_ComposeItem initialize unless $@
def initialize(x, y)
@sell_flag = false

initialize_KGC_ComposeItem(x, y)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
y = 96
self.contents.clear
if @sell_flag || !$game_party.item_name_mask?(@item)
draw_item_name(@item, 0, y)
else
draw_masked_item_name(@item, 0, y)
end
self.contents.font.color = normal_color
self.contents.draw_text(212, y, 20, WLH, "×")
self.contents.draw_text(248, y, 20, WLH, @number, 2)
self.cursor_rect.set(244, y, 28, WLH)
if !KGC::ComposeItem::HIDE_ZERO_COST || @price > 0
draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_ComposeItem
#------------------------------------------------------------------------------
# 合成画面で、合成できる商品の一覧を表示するウィンドウです。
#==============================================================================

class Window_ComposeItem < Window_ShopBuy
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
@data = []
for goods_item in @shop_goods
case goods_item[0]
when 0
item = $data_items[goods_item[1]]
when 1
item = $data_weapons[goods_item[1]]
when 2
item = $data_armors[goods_item[1]]
end
# 合成アイテムのみ追加
@data.push(item) if include?(item)
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ○ アイテムをリストに含めるかどうか
# item : アイテム
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil # アイテムが nil なら含めない
return false unless item.is_compose? # 合成アイテム以外は含めない

# 合成済みなら表示
if KGC::ComposeItem::SHOW_COMPOSED_RECIPE
return true if $game_party.item_composed?(item)
end
# 判明 or 解禁 or 存在済みなら表示
exist_flag = $game_party.recipe_cleared?(item) ||
$game_party.recipe_opened?(item) || $game_party.recipe_exist?(item)
if KGC::ComposeItem::NEED_RECIPE_EXIST && exist_flag
return true
end
# 費用不足なら隠す
if KGC::ComposeItem::HIDE_SHORTAGE_COST
return false unless $game_party.item_compose_cost_satisfy?(item)
end
# 素材不足なら隠す
if KGC::ComposeItem::HIDE_SHORTAGE_MATERIAL
return false unless $game_party.item_compose_material_satisfy?(item)
end

if KGC::ComposeItem::NEED_RECIPE_EXIST
# 判明 or 解禁 or 存在していない
return false unless exist_flag
end

return true
end
#--------------------------------------------------------------------------
# ○ アイテムを許可状態で表示するかどうか
# item : アイテム
#--------------------------------------------------------------------------
def enable?(item)
return $game_party.item_can_compose?(item)
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
limit = ($imported["LimitBreak"] ? item.number_limit : 99)
rect = item_rect(index)
self.contents.clear_rect(rect)
if $game_party.item_name_mask?(item)
draw_masked_item_name(item, rect.x, rect.y, enable?(item))
else
draw_item_name(item, rect.x, rect.y, enable?(item))
end
# 費用を描画
if !KGC::ComposeItem::HIDE_ZERO_COST || item.compose_cost > 0
rect.width -= 4
self.contents.draw_text(rect, item.compose_cost, 2)
end
end

if KGC::ComposeItem::HIDE_UNKNOWN_RECIPE_HELP
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
item = (index >= 0 ? @data[index] : nil)
if item == nil || !$game_party.item_name_mask?(item)
# アイテムが nil or マスクなしなら [Window_ShopBuy] に任せる
super
else
@help_window.set_text(KGC::ComposeItem::UNKNOWN_RECIPE_HELP)
end
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Window_ComposeStatus
#------------------------------------------------------------------------------
#  合成画面で、素材の所持数や必要数を表示するウィンドウです。
#==============================================================================

class Window_ComposeStatus < Window_ShopStatus
#--------------------------------------------------------------------------
# ○ 表示モード
#--------------------------------------------------------------------------
MODE_MATERIAL = 0 # 素材リスト
MODE_STATUS = 1 # パーティのステータス
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
#--------------------------------------------------------------------------
def initialize(x, y)
@mode = MODE_MATERIAL
super(x, y)
end
#--------------------------------------------------------------------------
# ○ モード変更
#--------------------------------------------------------------------------
def change_mode
case @mode
when MODE_MATERIAL
@mode = MODE_STATUS
when MODE_STATUS
@mode = MODE_MATERIAL
end
self.oy = 0
refresh
end
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
if @mode == MODE_STATUS
super
return
end

self.contents.dispose
ch = height - 32
if @item != nil
mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
ch = [ch, WLH * (mag + @item.compose_materials.size * mag)].max
end
self.contents = Bitmap.new(width - 32, ch)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
create_contents
self.contents.font.size = Font.default_size
case @mode
when MODE_MATERIAL
draw_material_list
when MODE_STATUS
super
end
end
#--------------------------------------------------------------------------
# ○ 素材リストを描画
#--------------------------------------------------------------------------
def draw_material_list
return if @item == nil

number = $game_party.item_number(@item)
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 200, WLH, Vocab::possession)
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 200, WLH, number, 2)

# 不明な素材を隠す
if $game_party.item_compose_material_mask?(@item)
self.contents.draw_text(4, WLH * 2, 200, WLH,
KGC::ComposeItem::UNKNOWN_RECIPE_MATERIAL, 1)
return
end

self.contents.font.size = 16 if KGC::ComposeItem::COMPACT_MATERIAL_LIST
mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
@item.compose_materials.each_with_index { |material, i|
y = WLH * (mag + i * mag)
draw_material_info(0, y, material)
}
end
#--------------------------------------------------------------------------
# ○ 素材情報を描画
#--------------------------------------------------------------------------
def draw_material_info(x, y, material)
m_item = material.item
return if m_item == nil
number = $game_party.item_number(m_item)
enabled = (number > 0 && number >= material.number)
draw_item_name(m_item, x, y, enabled)
if KGC::ComposeItem::COMPACT_MATERIAL_LIST
m_number = (material.number == 0 ? "-" : sprintf("%d", material.number))
self.contents.draw_text(x, y, width - 32, WLH,
sprintf("%s/%d", m_number, number), 2)
else
m_number = (material.number == 0 ? "-" : sprintf("%2d", material.number))
self.contents.draw_text(x, y + WLH, width - 32, WLH,
sprintf("%2s/%2d", m_number, number), 2)
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Map
#==============================================================================

class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● ショップ画面への切り替え
#--------------------------------------------------------------------------
alias call_shop_KGC_ComposeItem call_shop
def call_shop
# 合成画面を呼び出した場合
if $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH]
# 合成画面に移行
$game_temp.next_scene = nil
$game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH] = false
$scene = Scene_ComposeItem.new
else
call_shop_KGC_ComposeItem
end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# □ Scene_ComposeItem
#------------------------------------------------------------------------------
#  合成画面の処理を行うクラスです。(Scene_Shop を流用)
#==============================================================================

class Scene_ComposeItem < Scene_Shop
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
# コマンドウィンドウ非表示
if KGC::ComposeItem::HIDE_COMMAND_WINDOW
@command_window.visible = false
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.z = @status_window.z + 100
@gold_window.visible = !KGC::ComposeItem::HIDE_GOLD_WINDOW

@dummy_window.y = @command_window.y
@dummy_window.height += @command_window.height
end

# [Scene_Shop] 再利用のため、合成リストに @buy_window を使用
@buy_window.dispose
@buy_window = Window_ComposeItem.new(0, @dummy_window.y)
@buy_window.height = @dummy_window.height
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window

# その他のウィンドウを再構成
@number_window.dispose
@number_window = Window_ComposeNumber.new(0, @buy_window.y)
@number_window.height = @buy_window.height
@number_window.create_contents
@number_window.active = false
@number_window.visible = false

@status_window.dispose
@status_window = Window_ComposeStatus.new(@buy_window.width, @buy_window.y)
@status_window.height = @buy_window.height
@status_window.create_contents
@status_window.visible = false

# コマンドウィンドウ非表示の場合、合成ウィンドウに切り替え
if KGC::ComposeItem::HIDE_COMMAND_WINDOW
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.update_help
@status_window.visible = true
@status_window.item = @buy_window.item
end
end
#--------------------------------------------------------------------------
# ● コマンドウィンドウの作成
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::ComposeItem
s2 = Vocab::ShopSell
s3 = Vocab::ShopCancel
@command_window = Window_Command.new(384, [s1, s2, s3], 3)
@command_window.y = 56
if $game_temp.shop_purchase_only
@command_window.draw_item(1, false)
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
if KGC::ComposeItem::SWITCH_INFO_BUTTON != nil &&
Input.trigger?(KGC::ComposeItem::SWITCH_INFO_BUTTON)
Sound.play_cursor
@status_window.change_mode
end
end
#--------------------------------------------------------------------------
# ● 購入アイテム選択の更新
#--------------------------------------------------------------------------
def update_buy_selection
@number_window.sell_flag = false

# コマンドウィンドウ非表示で B ボタンが押された場合
if KGC::ComposeItem::HIDE_COMMAND_WINDOW && Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
return
end

@status_window.item = @buy_window.item
if Input.trigger?(Input::C)
@item = @buy_window.item
# アイテムが無効なら選択不可
if @item == nil
Sound.play_buzzer
return
end

# 合成不可能 or 限界数まで所持している場合は選択不可
number = $game_party.item_number(@item)
limit = ($imported["LimitBreak"] ? @item.number_limit : 99)
if !$game_party.item_can_compose?(@item) || number == limit
Sound.play_buzzer
return
end

# 個数入力に切り替え
Sound.play_decision
max = $game_party.number_of_composable(@item)
max = [max, limit - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.compose_cost)
@number_window.active = true
@number_window.visible = true
return
end

super
end
#--------------------------------------------------------------------------
# ● 売却アイテム選択の更新
#--------------------------------------------------------------------------
def update_sell_selection
@number_window.sell_flag = true
super
end
#--------------------------------------------------------------------------
# ● 個数入力の決定
#--------------------------------------------------------------------------
def decide_number_input
if @command_window.index != 0 # 「合成する」以外
super
return
end

Sound.play_shop
@number_window.active = false
@number_window.visible = false
# 合成処理
operation_compose
@gold_window.refresh
@buy_window.refresh
@status_window.refresh
@buy_window.active = true
@buy_window.visible = true
end
#--------------------------------------------------------------------------
# ○ 合成の処理
#--------------------------------------------------------------------------
def operation_compose
$game_party.lose_gold(@number_window.number * @item.compose_cost)
$game_party.gain_item(@item, @number_window.number)
# 素材を減らす
@item.compose_materials.each { |material|
$game_party.lose_item(material.item,
material.number * @number_window.number)
}
# 合成済みにする
$game_party.set_item_composed(@item)
end
end

No puse screenshots xq no encontre...


Deberias poner instrucciones `para saber como funciona vengo a pedir algo que si alguien lo encuentra pues e sun milagro
Nesesito un script lo mas parecido al sistema de batalla del juego chrono cross no tiene que ser en 3D solo que tenga parecido a ese juego gracias de antemano
 
Mensajes
551
Reacciones
2
Puntos
0
Ubicación
China
necesito algunos script

1 el script para tener un Pet (Mascota)
2 un scrpt para modificar el sistema de SAVE, hay muchos asi que mandenme el mas bueno

Edit: Uso el VX
 
Mensajes
35
Reacciones
0
Puntos
0
No puse instrucciones xq no tengo idea de como funciona!
Lo encontre en una pagina en japones o algo y decia Compose Item q se traduce como lo q conocemos como orfebreria por el final fantasy 9... lo unico q quiero es saber si alguien lo tiene en otro idioma mas facil de entender y q me explique como editarlo...
 
Mensajes
35
Reacciones
0
Puntos
0
Tambien si alguien tiene un script para vx que sirva para poner limits como en final fantasy 7
por favor subalo. Ami lo que me cuesta es editarlos asiq si alguien me puede explicar tmb le agradeceria...
 
Mensajes
57
Reacciones
0
Puntos
0
pues hola de nuevo e pos quiero pedir un solo scrip para que en una conversacion salga una ymagen de la persona que habla y la imagen este junto al texto
 
Mensajes
91
Reacciones
0
Puntos
0
Ubicación
En medio de la infección del "F-virus" 0.o
Primero que nada...
Lo quieres para el XP?
Sí es así, el UMS es el que tú buscas...
Checa la primera página de este tema...
Sí buscas para VX (con enfasis por que hay un montón de newbies que dicen XV, jajaja) pues ya trae integrada una función así, igual el 2k3...
 
Mensajes
21
Reacciones
0
Puntos
0
OLA: disculpen si ando perdido pero es q soy nuevo en esto creo q lo q busco es un script pero se muy poco del tema haci q porfavor ayudenme:
(EN EL VX)
lo q necesito es q se vean los personajes(ocea heroes /enemigos) a la hora de la battalla p q en el vx se ve como en primera persona
gracias
 
Última edición:
Mensajes
103
Reacciones
0
Puntos
0
primero que todo. Hola como estan xD no me e podido conectar muy seguido aver si los ayudo con los script denuevo xD.

Angar
1 el script para tener un Pet (Mascota)
2 un scrpt para modificar el sistema de SAVE, hay muchos asi que mandenme el mas bueno
Edit: Uso el VX
R: Aki te dejo Advanced Save/Load.
-Nombre Del Script: Advanced Save/Load
-Rpg Maker: VX

-Introducion: Este script hace un cambio en el Guardar y cargar, dejando más fresco, atractivo y divertido de usar.
-Caracteristicas:
1 Usted elige el número máximo de Guarda.
2 Captura de pantalla de El Tome el mapa del que se ha salvado!
-Demo: no hay.
-ScreenShot:
screenshotsuperscripthz0.png

-Script:Arreglado ya que antes tiraba error ^^ gracias a Angar por avisar xD
Código:
#-------------------------------------------------------
#                Advanced Save/Load 1.0                
#-------------------------------------------------------
=begin

Criado por GuiRPG - www.guirpg.vai.la

Esse Script Modifica Totalmente o Sistema de Salvar e de Carregar, 
tenho certeza que todos irão gostar^^

=end

module Vocab
  
   File  = "Arq." # Aqui tá bom, mas se quise mexer...
   
   end

module GuiRPG
  
  NUMERO_MAX_DE_SAVES = 3 # Número Máximo de Saves
  
  DIR_SAVES = "GuiRPG/" # Diretório dos Arquivos Salvos (Nunca Mude)
  
end


class Game_Temp
 attr_accessor :menu_bitmap              
 attr_accessor :sub_menu_bitmap          
 attr_accessor :save_bitmap            
 alias ini initialize
 def initialize
   ini
   @menu_bitmap = Bitmap.new(1, 1)
   @sub_menu_bitmap = Bitmap.new(1, 1)
   @save_bitmap = Bitmap.new(1, 1)
 end
end

  
  
class Window_SaveFile < Window_Base

 attr_reader   :filename                 
 attr_reader   :file_exist             

 def initialize(file_index, filename)
   super(176, 59, 304, 298)
   @file_index = file_index
   @filename = filename
   load_gamedata
   refresh(@file_index)
 end

 def load_gamedata
   @file_exist = FileTest.exist?(GuiRPG::DIR_SAVES + @filename)
   if @file_exist
     file = File.open(GuiRPG::DIR_SAVES + @filename, "r")
     begin
       @characters     = Marshal.load(file)
       @frame_count    = Marshal.load(file)
       @last_bgm       = Marshal.load(file)
       @last_bgs       = Marshal.load(file)
       @game_system    = Marshal.load(file)
       @game_message   = Marshal.load(file)
       @game_switches  = Marshal.load(file)
       @game_variables = Marshal.load(file)
       @total_sec = @frame_count / Graphics.frame_rate
     rescue
       @file_exist = false
     ensure
       file.close
     end
   end
 end

 
 def refresh(index)
   file_index = index
   self.contents.clear
   self.contents.font.color = normal_color
   if @file_exist
     self.contents.fill_rect(0, 0, 272,208+2, Color.new(0,0,64))
     if FileTest.exist?(GuiRPG::DIR_SAVES + @filename.split(/\./)[0] + ".png")
       self.contents.blur
       draw_save_bitmap(0,0)
     else
       self.contents.draw_text(0, 64, 304-32, 24, "inválido", 1)
     end
     draw_party_characters(108, 288-56)
     draw_playtime(0, 288+8-56, contents.width-4, 2)
   else
     self.contents.draw_text(0, 288-56, contents.width-4, 24, "Nenhum Arquivo Salvo", 1)
   end
 end

 
 def file_index=(file_index)
   @file_index = file_index
 end

def draw_party_characters(x, y)
   for i in [email protected]
     name = @characters[i][0]
     index = @characters[i][1]
     draw_character(name, index, x + i * 48, y)
   end
 end

def draw_save_bitmap(x, y)
   bitmap = Bitmap.new(GuiRPG::DIR_SAVES + @filename.split(/\./)[0] + ".png")
   rect = Rect.new(0, 0, 0, 0)
   rect.width = bitmap.width
   rect.height = bitmap.height
   self.contents.blt(x, y, bitmap, rect)
   bitmap.dispose
 end


 
 def draw_playtime(x, y, width, align)
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(x, y, width, WLH, time_string, 2)
 end
end

class Window_Menu_Command < Window_Selectable

 attr_reader   :commands               


 def initialize(width, commands, column_max = 16, row_max = 0, spacing = 8)
   if row_max == 0
     row_max = (commands.size + column_max - 1) / column_max
   end
   super(0, 416-54, width, row_max * WLH + 32, spacing)
   @commands = commands
   @item_max = commands.size
   @column_max = column_max
   self.index = 0
 end

 def refresh
   self.contents.clear
   for i in 0...@item_max
     draw_item(i)
   end
 end

def draw_item(index, enabled = true)
   rect = item_rect(index)
   rect.width -= 8
   self.contents.clear_rect(rect)
   self.contents.font.color = normal_color
   self.contents.font.color.alpha = enabled ? 255 : 128
 end

 def update_help
   text = $data_system.game_title
   if @commands[self.index] != nil
     text += ": " + @commands[self.index]
   end
   @help_window.set_text(text)
 end
end

class Scene_Base

 def create_menu_background
   @menuback_sprite = Sprite.new
   @menuback_sprite.bitmap = $game_temp.background_bitmap
   update_menu_background
 end

 def create_sub_menu_background
   @menuback_sprite = Sprite.new
   @menuback_sprite.bitmap = $game_temp.sub_menu_bitmap
   update_menu_background
 end

 def snapshot_for_save
   d_rect = Rect.new(0, 0, 272, 208)
   s_rect = Rect.new(0, 0, 544, 416)
   save_bitmap = Graphics.snap_to_bitmap
   $game_temp.save_bitmap.dispose
   $game_temp.save_bitmap = Bitmap.new(272, 208)
   $game_temp.save_bitmap.stretch_blt(d_rect, save_bitmap, s_rect)
 end
end

class Scene_Map < Scene_Base

 def terminate
   super
   snapshot_for_save                 
   if $scene.is_a?(Scene_Battle)     
     @spriteset.dispose_characters   
   end
   snapshot_for_background           
   snapshot_for_menu                 
   @spriteset.dispose
   @message_window.dispose
   if $scene.is_a?(Scene_Battle)     
     perform_battle_transition       
   end
 end

 def snapshot_for_menu
   $game_temp.menu_bitmap.dispose
   $game_temp.menu_bitmap = Graphics.snap_to_bitmap
 end

 def call_menu
   if $game_temp.menu_beep
     Sound.play_decision
     $game_temp.menu_beep = false
   end
   $game_temp.next_scene = nil
   $scene = Scene_Menu.new
 end
end

class Scene_Title < Scene_Base

 def check_continue
   @continue_enabled = (Dir.glob(GuiRPG::DIR_SAVES + 'Save*.rvdata').size > 0)
 end
end

class Scene_Status < Scene_Base

 def start
   super
   create_sub_menu_background
   @actor = $game_party.members[@actor_index]
   @status_window = Window_Status.new(@actor)
   @status_window.openness = 0
 end

 def post_start
   super
   open_status_window
 end

 def pre_terminate
   super
   close_status_window
 end

 def open_status_window
   @status_window.open
   begin
     @status_window.update
     Graphics.update
   end until @status_window.openness == 255
 end

 def close_status_window
   @status_window.close
   begin
     @status_window.update
     Graphics.update
   end until @status_window.openness == 0
 end
end

class Scene_File < Scene_Base


 def initialize(saving, from_title, from_event)
   @saving = saving
   @from_title = from_title
   @from_event = from_event
 end

 def start
   super
   @help_window = Window_Help.new
   unless $game_temp.sub_menu_bitmap.width == 1
     @help_window.opacity = 0
     create_sub_menu_background
   else
     create_title_graphic
   end
   create_command_window
   if @saving
     @index = $game_temp.last_file_index
     @help_window.set_text(Vocab::SaveMessage)
   else
     @index = self.latest_file_index
     @help_window.set_text(Vocab::LoadMessage)
   end
   @refresh_index = @command_window.index = @index
   @item_max = GuiRPG::NUMERO_MAX_DE_SAVES
   create_savefile_window
   @savefile_window.openness = 0
 end

 def terminate
   super
   dispose_menu_background
   @help_window.dispose
   dispose_item_windows
 end

 def return_scene
   if @from_title
     $scene = Scene_Title.new
   elsif @from_event
     $scene = Scene_Map.new
   else
     $scene = Scene_Menu.new(4)
   end
 end

 def update
   super
   update_menu_background
   @help_window.update
   update_savefile_windows
   update_savefile_selection
 end

 def post_start
   super
   open_savefile_window
 end

 def pre_terminate
   super
   close_savefile_window
 end

 def create_title_graphic
   @menuback_sprite = Sprite.new
   @menuback_sprite.bitmap = Cache.system("Title")
 end

 def create_command_window
   file_names = []
   for i in 0...GuiRPG::NUMERO_MAX_DE_SAVES
     id = sprintf("%02d", i+1)
     file_names.push(Vocab::File + "\s" + id)
   end
   @command_window = Window_Command.new(112, file_names)
   @command_window.height = 298
   @command_window.x = 64
   @command_window.y = 59
   @command_window.openness = 0
 end

 def create_savefile_window
   @savefile_window = Window_SaveFile.new(@command_window.index, make_filename(@command_window.index))
 end

 def dispose_item_windows
   @command_window.dispose
   @savefile_window.dispose
 end

 def open_savefile_window
   @command_window.open
   @savefile_window.open
   begin
     @command_window.update
     @savefile_window.update
     Graphics.update
   end until @savefile_window.openness == 255
 end

 def close_savefile_window
   @command_window.close
   @savefile_window.close
   begin
     @command_window.update
     @savefile_window.update
     Graphics.update
   end until @savefile_window.openness == 0
 end

 def update_savefile_windows
   @command_window.update
   @savefile_window.update
 end

 def update_savefile_selection
   if Input.trigger?(Input::C)
     determine_savefile
   end
   if Input.trigger?(Input::B)
     Sound.play_cancel
     return_scene
   end
   if @refresh_index != @command_window.index
     @refresh_index = @command_window.index
     @savefile_window.dispose
     create_savefile_window
     end
 end

 def determine_savefile
   if @saving
     Sound.play_save
     do_save
   else
     if @savefile_window.file_exist
       Sound.play_load
       do_load
     else
       Sound.play_buzzer
       return
     end
   end
   $game_temp.last_file_index = @index
 end

 
 def make_filename(file_index)
   return "Save#{file_index + 1}.rvdata"
 end

 def latest_file_index
   index = 0
   latest_time = Time.at(0) 
   for i in 0...GuiRPG::NUMERO_MAX_DE_SAVES
     file_name = make_filename(i)
     if FileTest.exist?(GuiRPG::DIR_SAVES + file_name)
       file = File.open(GuiRPG::DIR_SAVES + file_name, "r")
       if file.mtime > latest_time
         latest_time = file.mtime
         index = i
       end
     end
   end
   return index
 end

 def do_save
   file_name = make_filename(@command_window.index)
   $game_temp.save_bitmap.make_png(file_name.split(/\./)[0], GuiRPG::DIR_SAVES)
   file = File.open(GuiRPG::DIR_SAVES + file_name, "wb")
   write_save_data(file)
   file.close
   return_scene
 end

 def do_load
   file_name = make_filename(@command_window.index)
   file = File.open("GuiRPG/" + file_name, "rb")
   read_save_data(file)
   file.close
   $scene = Scene_Map.new
   RPG::BGM.fade(1500)
   Graphics.fadeout(60)
   Graphics.wait(40)
   @last_bgm.play
   @last_bgs.play
 end
end

module Zlib
 class Png_File < GzipWriter

   def make_png(bitmap_Fx)
     @bitmap_Fx = bitmap_Fx
     self.write(make_header)
     self.write(make_ihdr)
     self.write(make_idat)
     self.write(make_iend)
   end
   
   
   
   def make_header
     return [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a].pack("C*")
   end
   
   
   
   def make_ihdr
     ih_size = [13].pack("N")
     ih_sign = "IHDR"
     ih_width = [@bitmap_Fx.width].pack("N")
     ih_height = [@bitmap_Fx.height].pack("N")
     ih_bit_depth = [8].pack("C")
     ih_color_type = [6].pack("C")
     ih_compression_method = [0].pack("C")
     ih_filter_method = [0].pack("C")
     ih_interlace_method = [0].pack("C")
     string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
              ih_compression_method + ih_filter_method + ih_interlace_method
     ih_crc = [Zlib.crc32(string)].pack("N")
     return ih_size + string + ih_crc
   end
   
   
   
   def make_idat
     header = "\x49\x44\x41\x54"
     data = make_bitmap_data
     data = Zlib::Deflate.deflate(data, 8)
     crc = [Zlib.crc32(header + data)].pack("N")
     size = [data.length].pack("N")
     return size + header + data + crc
   end
   
   
   
   def make_bitmap_data
     gz = Zlib::GzipWriter.open('hoge.gz')
     t_Fx = 0
     w = @bitmap_Fx.width
     h = @bitmap_Fx.height
     data = []
     for y in 0...h
       data.push(0)
       for x in 0...w
         t_Fx += 1
         if t_Fx % 10000 == 0
           Graphics.update
         end
         if t_Fx % 100000 == 0
           s = data.pack("C*")
           gz.write(s)
           data.clear
         end
         color = @bitmap_Fx.get_pixel(x, y)
         red = color.red
         green = color.green
         blue = color.blue
         alpha = color.alpha
         data.push(red)
         data.push(green)
         data.push(blue)
         data.push(alpha)
       end
     end
     s = data.pack("C*")
     gz.write(s)
     gz.close    
     data.clear
     gz = Zlib::GzipReader.open('hoge.gz')
     data = gz.read
     gz.close
     File.delete('hoge.gz') 
     return data
   end
   
   
   
   def make_iend
     ie_size = [0].pack("N")
     ie_sign = "IEND"
     ie_crc = [Zlib.crc32(ie_sign)].pack("N")
     return ie_size + ie_sign + ie_crc
   end
 end
end
class Bitmap

 def make_png(name="Gui_Img_Save", path="",mode=0)
   make_dir(path) if path != ""
   Zlib::Png_File.open("temp.gz") {|gz|
     gz.make_png(self)
   }
   Zlib::GzipReader.open("temp.gz") {|gz|
     $read = gz.read
   }
   f = File.open(path + name + ".png","wb")
   f.write($read)
   f.close
   File.delete('temp.gz') 
   end

 def make_dir(path)
   dir = path.split("/")
   for i in 0...dir.size
     unless dir == "."
       add_dir = dir[0..i].join("/")
       begin
         Dir.mkdir(add_dir)
       rescue
       end
     end
   end
 end
end
-Instrucciones: solo copiar el script y pegar encima de main.
-Compatiblidad:es Baja :(
-Creditos:GuiRPG
frankyhiro
pues hola de nuevo e pos quiero pedir un solo scrip para que en una conversacion salga una ymagen de la persona que habla y la imagen este junto al texto
R: ps como dijo Buwaro deves decir que rpg maker usas el vx o xp pero para xp esta el UMS (esta en el inicio de la pag)

Bueno de hay nos bemos saludos ^^
 
Última edición:
Mensajes
21
Reacciones
0
Puntos
0
mira ocea :
en el xv cuando te topas con el mounstro y comienza la pelea se ve en primera persona ocea tu (ocea el heroe no se ve asi como en juegos como halo , balck etc) lo que yo quiero es q se vea en la batalla en un lado el mounstro y en el otro el heroe como en un final fantasy , golden sun ,etc ahora si me entiendes ?
 
Mensajes
91
Reacciones
0
Puntos
0
Ubicación
En medio de la infección del "F-virus" 0.o
mira o sea :
en el VX cuando te topas con el monstruo y comienza la pelea se ve en primera persona o sea tu (o sea el heroe no se ve asi como en juegos como halo , Black etc) lo que yo quiero es q se vea en la batalla en un lado el monstruo y en el otro el heroe como en un final fantasy , golden sun ,etc ahora si me entiendes ?

Eso se hace con un CBS (Custom Battle System), si encuento alguno lo posteo...
 
Mensajes
103
Reacciones
0
Puntos
0
Buwaro
Eso se hace con un CBS (Custom Battle System), si encuento alguno lo posteo...

xD te me adelantaste pero bueno xDbuscare los script que los demas piedieron aver si encuentro ahora.
Edit: no encontre los script que los demas pedian sorrys pero les dejo este que encontre saludos.

-Nombre Del Script:Menú estilo Castlevania
-Version Del Script:v2.0
-Rpg Maker:VX

-Introducion:Este es un remake de un menú de juego de la PS1 Castlevania.
-Caracteristicas:
Menú de un solo caracter.
Muestra el nombre, la dirección, el CV, el MP, el nivel y la condición del héroe.
Muestra el héroe de los atributos (fuerza, defensa, ...).
Muestra el equipo del héroe.
Muestra la ventana de tiempo y dinero.
-Demo: aka (no la subi yo)
-ScreenShot:
index.php

-Script:
Código:
#==============================================================================
# Menu Estilo Castlevânia v2.0
#------------------------------------------------------------------------------
# Criado por Bnezinho ([email protected])
#------------------------------------------------------------------------------
# *Bugs corridos:
#  - Bug da seleção
#  - Bug do dregadê
# Em caso de outros bugs ainda não corrigidos, favor me contactar. 
#==============================================================================
module Castlevania
  COR1 = Color.new(0,0,34) #Cor1 do Menu
  COR2 = Color.new(33,33,92) #Cor2
  #Fim da customização. Não modificar a partir daqui!
end
#==============================================================================
# Window_Castlevania
#------------------------------------------------------------------------------
# Classe que desenha os itens do menu
#==============================================================================
class Degrade < Window_Base
  def initialize
    super(5,5,540,410)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.gradient_fill_rect(0,0,510,380,Castlevania::COR1,Castlevania::COR2,Castlevania::COR2)
  end
end
class Window_Castlevania < Window_Base
  def initialize
    super(20,20,510,380)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 0
    refresh
  end
  def refresh
    self.contents.clear
    @actor = $game_party.members[0]
    draw_actor_face(@actor,0,20)
    draw_actor_name(@actor,140,20)
    draw_actor_hp(@actor,110,45)
    draw_actor_mp(@actor,110,65)
    draw_actor_state2(@actor, 300, 60, width = 96)
    draw_currency_value($game_party.gold, 0, 320, 150)
    draw_icon(147,20,320)  
    draw_icon(188,270,305)
    self.contents.font.color = system_color
    self.contents.draw_text(300,20,self.width - 40,WLH,"Nível:")
    self.contents.font.color = normal_color
    self.contents.draw_text(400,20,self.width - 40,WLH,$game_party.members[0].level)
    self.contents.font.color = system_color
    self.contents.draw_text(300,40,self.width - 40,WLH,"Estado:")
    self.contents.font.color = normal_color
    self.contents.font.color = system_color
    self.contents.draw_text(20,150,self.width - 40,WLH,"Ataque:")
    self.contents.font.color = normal_color
    self.contents.draw_text(120,150,self.width - 40,WLH,@actor.atk)
    self.contents.font.color = system_color
    self.contents.draw_text(20,170,self.width - 40,WLH,"Defesa:")
    self.contents.font.color = normal_color
    self.contents.draw_text(120,170,self.width - 40,WLH,@actor.def)
    self.contents.font.color = system_color
    self.contents.draw_text(20,190,self.width - 40,WLH,"Agilid:")
    self.contents.font.color = normal_color
    self.contents.draw_text(120,190,self.width - 40,WLH,@actor.agi)
    self.contents.font.color = system_color
    self.contents.draw_text(20,210,self.width - 40,WLH,"Intelig:")
    self.contents.font.color = normal_color
    self.contents.draw_text(120,210,self.width - 40,WLH,@actor.spi)
    self.contents.font.color = system_color
    self.contents.draw_text(20,250,self.width - 40,WLH,"Exp:")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,250,self.width - 40,WLH,@actor.exp_s)
    self.contents.font.color = system_color
    self.contents.draw_text(20,270,self.width - 40,WLH,"Próx:")
    self.contents.font.color = normal_color
    self.contents.draw_text(80,270,self.width - 40,WLH,@actor.next_rest_exp_s)
    self.contents.font.color = system_color
    self.contents.draw_text(20,300,self.width - 40,WLH,"Ouro:")
  
    self.contents.font.color = system_color
    self.contents.draw_text(300, 120, self.width - 40, WLH, Vocab::equip)
    for i in 0..4
      draw_item_name(@actor.equips[i], 285 + 16, 120 + WLH * (i + 1))
    end
  end
end

#==============================================================================
# Ajustamento da seleção
#==============================================================================
class Scene_Equip
  def return_scene
    $scene = Scene_Menu.new(0)
  end
end
class Scene_Skill
  def return_scene
    $scene = Scene_Menu.new(1)
  end
end
class Scene_Item
  def return_scene
    $scene = Scene_Menu.new(2)
  end
end
class Scene_File
  def return_scene
    $scene = Scene_Menu.new(3)
  end
end
class Scene_End
  def return_scene
    $scene = Scene_Menu.new(4)
  end
end

#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Classe de operações na tela do menu.
#==============================================================================
class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # Inicialização do processo
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  def start
   super
   create_command_window
   @degrade = Degrade.new
   @degrade.z = 0
   @menu = Window_Castlevania.new
   @menu.z = 1  
   @time = Window_Time.new(320,330)
   @time.opacity = 0
   @time.z = 2
 end
  #--------------------------------------------------------------------------
  # Fim do processo
  #--------------------------------------------------------------------------
  def terminate
   super
   @command_window.dispose
   @degrade.dispose
   @menu.dispose
   @time.dispose
  end
  #--------------------------------------------------------------------------
  # Atualização da tela
  #--------------------------------------------------------------------------
  def update
   super
   @command_window.update
   @degrade.update
   @menu.update
   @time.update
   if @command_window.active
    update_command_selection
   end
  end
  #--------------------------------------------------------------------------
  # Criação da janela de comandos
  #--------------------------------------------------------------------------
  def create_command_window
   s1 = "Equipar"
   s2 = "Magias"
   s3 = "Joiás"
   s4 = "Salvar"
   s5 = "Sair"
   @command_window = Window_Command.new(135, [s1,s2,s3,s4,s5])
   @command_window.x = 195
   @command_window.y = 160
   @command_window.back_opacity = 0
   @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 "Equipar"
      @command_window.draw_item(1, false)     # Desabilita "Magias"
      @command_window.draw_item(2, false)     # Desabilita "Itens"
    end
    if $game_system.save_disabled             # Se salvar for proibido
      @command_window.draw_item(3, 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
      case @command_window.index
      when 0      # Equipar
        $scene = Scene_Equip.new(0)
      when 1      # Magias
        $scene = Scene_Skill.new(0)
      when 2      # Itens
        $scene = Scene_Item.new
      when 3      # Salvar
        $scene = Scene_File.new(true, false, false)
      when 4      # Fim de Jogo
        $scene = Scene_End.new
      end
    end
  end
end

class Window_Time < Window_Base
  #--------------------------------------------------------------------------
  # Iniciar
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 184, WLH + 26)
    refresh
  end
  #--------------------------------------------------------------------------
  # Principal
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, -8, 200, 32, "Tempo:")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(69, -8, 200, 32, text)
  end
  #--------------------------------------------------------------------------
  # Atualizar
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end

class Window_Base
    #--------------------------------------------------------------------------
  # - Criar String de Status para Desenhar
  #
  #     actor       : Herói
  #     width       : Desenhar o comprimento
  #     need_normal : Quer seja, ou não [Normal], need= verdadeiro ou falso
  #--------------------------------------------------------------------------
  def make_battler_state_text(battler, width, need_normal)
    # Selecionar comrpimento dos Colchetes
    brackets_width = self.contents.text_size("[]").width
    # Criar um string de Status para texto
    text = ""
    for i in battler.states
      if $data_states[i].rating >= 1
        if text == ""
          text = $data_states[i].name
        else
          new_text = text + "/" + $data_states[i].name
          text_width = self.contents.text_size(new_text).width
          if text_width > width - brackets_width
            break
          end
          text = new_text
        end
      end
    end
    # Caso esteja vazio o string de texto, tornar isto Normal
    if text == ""
      if need_normal
        text = "[Normal]"
      end
    else
      # Anexar Colchetes
      text = "[" + text + "]"
    end
    # Retornar string de texto
    return text
  end
  #--------------------------------------------------------------------------
  # - Desenhar Status
  #
  #     actor : Herói
  #     x     : Desenhar a partir da coordenada x
  #     y     : Desenhar a partir da coordenada y
  #     width : Desenhar o comprimento
  #--------------------------------------------------------------------------
  def draw_actor_state2(actor, x, y, width = 120)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end
end
-Instrucciones:Si no hay mucho que configurar. El guión es Plug N 'Play (tener cuidado con otros scripts que cambiar el menú. Pueden causar incoherencia).
La mayoría de configuraciones se encuentran en el módulo. Cambiar el nombre de las opciones de la línea 173.
-Creditos: Bnezinho
 
Última edición:
Mensajes
21
Reacciones
0
Puntos
0
muchas gracias buwaro!!! jeje me has ayudado muxo gracias!

PORFAVOR YA NO SIRVE EL LINK DEL ABS EN TIEMPOR REAL (xp) VUELVANL O SUBIR PLEASE

TAMPOCO SIRVE EL RTH ABS XP
 
Última edición:
Mensajes
103
Reacciones
0
Puntos
0
legolas13 esta bueno tu aporte pero deviste ponerlo como decia el inicio de la pag es que desordenas ya que la gente no podra saver que trata los script (talves los espertos si pero los novatos no)

Bueno entodo caso es un buen aporte xD asi que gracias xDD (a y porsiacaso conbiene probar los demos antes de postearlos te lo dice una persona con esperiencia xD por que una ves postie uno que no probe y al final estaba mala la demo)
 
Mensajes
35
Reacciones
0
Puntos
0
Tiene razon Hinaro.
Aca les dejo la lista de todos los scripts q trae... La demo anda barbaro y sirve mucho.

▼ KGC Scripts ▼
======Core System======
KGC_InterfaceForWin32API
KGC_FileEncryption2
KGC_CompressSaveFile
KGC_ScreenCapture
KGC_HelpExtension
KGC_DrawFormatText
KGC_MapLightening
KGC_MathReinforce
KGC_LimitBreak
===================

======Menu System======
KCG_CustomMenuCommand
KGC_CursorAnimation
===================

====Skill & Item System====
KGC_CategorizeItem
KGC_AddEquipmentOptions
KGC_ExtendedEquipScene
KCG_EquipExtension
KGC_UsableEquipment
KGC_ComposeItem
KGC_CategorizeSkill
KCG_HiddenSkill
KGC_ReproduceFunctions
KGC_EquipLearnSkill
KGC_SkillCPSystem
KGC_PassiveSkill
KGC_OverDrive
KGC_Steal
KGC_MPCostAlter
KGC_SlipDamageExtension
KGC_TargetExtension
===================

====Customize Actors====
KGC_DistributeParameter
KGC_SetAttackElement
KGC_SeparationCommand
===================

==Map/Movement System===
KGC_DayNight
HH_WalkFormation
HH_LargeParty-Link
KGC_LargeParty
KGC_TilesetExtension
KGC_Dash_8DirMove
===================

=====Battle System======
KGC_BattleCount
KGC_ForceStopVictoryME
KGC_AdjustBattleWait
KGC_ExtraDropItem
KGC_OnScreenStatus
KGC_BattleDifficulty
KGC_VariableExpGold
===================
KGC_OldEventCommands

Creo q los nombres indican bien lo q hace cada script...
Aclaro q no tengo idea como usar cada scipt, lo digo para q no me empiecen a preguntar "como hago, como hago"
Les recomiendo q si no saben q hace un script lo peguen en su proyecto y se fijen q cambia.
Yo solamente encontre esta demo y la postee xq esta buena xq tiene muchas cosas...
Espero q les sirva.

P.D.: esta demo es para vx, para mi la mejor version de rpg maker... Tengo muchos scripts mas q ya voy a ir subiendo...
 
Mensajes
52
Reacciones
0
Puntos
0
Una cosa, cuando intento abrir el Script del MODE7 Para pillarle el script desde el RPG Maker VX, Me sale Que no se pueden cargar proyectos de versiones anteriores, es por que tengo el RPG Antiguo o nuevo?
 
Mensajes
103
Reacciones
0
Puntos
0
no eso significa que el demo esta con otra vesion (puede ser mas antigua o mas moderna) se como se puede areglar pero no soy muy bueno esplicandome espero que entiendas xD.

bueno aki boy...

1- abres la carpeta de tu proyecto
2- adentro deveria aver un archibo llamado Game (por lo menos en el rpg maker XP asi se llama en el vx nose)
3- ahora abres el rpg maker vx y creas un nuevo proyecto
4- bas a la carpeta de ese nuevo proyecto y buscas el archibo llamado Game y lo copias
5- luego bas a la carpeta de tu proyecto y pegas el Game (el archibo que copiaste) ensima del Game (que ba dentro de tu proyecto)

eso es todo espero que se aya entendido xD.
 
Estado
Cerrado para nuevas respuestas
Arriba Pie