Project1
标题:
还是读档问题……
[打印本页]
作者:
a5396982
时间:
2008-11-8 21:35
标题:
还是读档问题……
那个…我用上装备组合脚本就出错
[LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
越前リョーマ
时间:
2008-11-8 21:36
S写的?
因为和存档类脚本有牵涉,
所以可能跟某些跟存档有关的脚本会冲突。比如自动存档……
作者:
a5396982
时间:
2008-11-8 21:37
# 组合装备脚本 Written by SLICK
module RPG
class Weapon
attr_accessor :combine
def description
return @description.split(/,/)[0].to_s
end
def combine
ccc = @description.split(/,/)[1].to_i
return ccc = nil ? 0 : ccc
end
end
class Armor
attr_accessor :combine
def description
return @description.split(/,/)[0].to_s
end
def combine
ccc = @description.split(/,/)[1].to_i
return ccc = nil ? 0 : ccc
end
end
end
class Scene_Title
alias etech_main main
def main
etech_main
$data_weapons[1000] = $data_weapons[0]
$data_armors[1000] = $data_armors[0]
end
end
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# ● 写入存档数据
# file : 写入用文件对像 (已经打开)
#--------------------------------------------------------------------------
def write_save_data(file)
# 生成描绘存档文件用的角色图形
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# 写入描绘存档文件用的角色数据
Marshal.dump(characters, file)
# 写入测量游戏时间用画面计数
Marshal.dump(Graphics.frame_count, file)
# 增加 1 次存档次数
$game_system.save_count += 1
# 保存魔法编号
# (将编辑器保存的值以随机值替换)
$game_system.magic_number = $data_system.magic_number
# 写入各种游戏对像
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($data_weapons.size, file)
for iii in 1000...$data_weapons.size
Marshal.dump($data_weapons[iii], file)
end
Marshal.dump($data_armors.size, file)
for iii in 1000...$data_armors.size
Marshal.dump($data_armors[iii], file)
end
end
end
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● 读取存档数据
# file : 读取用文件对像 (已经打开)
#--------------------------------------------------------------------------
def read_save_data(file)
# 读取描绘存档文件用的角色数据
characters = Marshal.load(file)
# 读取测量游戏时间用画面计数
Graphics.frame_count = Marshal.load(file)
# 读取各种游戏对像
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$data_weapons = []
$data_armors = []
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
iii = Marshal.load(file)
for jjj in 1000...iii
$data_weapons[jjj]= Marshal.load(file)
end
iii = Marshal.load(file)
for jjj in 1000...iii
$data_armors[jjj] = Marshal.load(file)
end
# 魔法编号与保存时有差异的情况下
# (加入编辑器的编辑过的数据)
if $game_system.magic_number != $data_system.magic_number
# 重新装载地图
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# 刷新同伴成员
$game_party.refresh
end
end
#==============================================================================
# ■ Scene_Combine
#------------------------------------------------------------------------------
# 处理合成画面的类。
#==============================================================================
class Scene_Combine
#--------------------------------------------------------------------------
# ● 初始化对像
# actor_index : 角色索引
# equip_index : 装备索引
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
@actor_index = actor_index
end
def main
@help_window = Window_Help.new
@name_window = Window_NNName.new($game_party.actors[@actor_index])
@combine_window = Window_Material.new
@combine_window.help_window = @help_window
@equip_window = Window_CombineRight.new($game_party.actors[@actor_index])
@equip_window.help_window = @help_window
@ccconfirm_window = Window_CCConfirm.new
@combine_window.visible = true
@combine_window.active = false
@equip_window.visible = true
@equip_window.active = true
@ccconfirm_window.visible = false
@ccconfirm_window.active = false
# 执行过度
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换就中断循环
if $scene != self
break
end
end
# 装备过渡
Graphics.freeze
# 释放窗口
@help_window.dispose
@combine_window.dispose
@equip_window.dispose
@name_window.dispose
@ccconfirm_window.dispose
end
def update
@help_window.update
@combine_window.update
@equip_window.update
@ccconfirm_window.update
if @combine_window.active
update_combine
return
end
if @equip_window.active
update_equip
return
end
if @ccconfirm_window.active
update_ccconfirm
return
end
end
def update_ccconfirm
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@epro_window.dispose
@ccconfirm_window.active = false
@ccconfirm_window.visible = false
@equip_window.active = true
return
end
if Input.trigger?(Input::C)
case @ccconfirm_window.index
when 0
$game_system.se_play($data_system.decision_se)
iiitem = @combine_window.item
case @equip_window.index
when 0
make_new_equip($data_weapons[$game_party.actors[@actor_index].weapon_id], iiitem)
when 1
make_new_equip($data_armors[$game_party.actors[@actor_index].armor1_id], iiitem)
when 2
make_new_equip($data_armors[$game_party.actors[@actor_index].armor2_id], iiitem)
when 3
make_new_equip($data_armors[$game_party.actors[@actor_index].armor3_id], iiitem)
when 4
make_new_equip($data_armors[$game_party.actors[@actor_index].armor4_id], iiitem)
end
when 1
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@epro_window.dispose
@ccconfirm_window.active = false
@ccconfirm_window.visible = false
@equip_window.active = true
end
return
end
if Input.trigger?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@ccconfirm_window.index = 0
return
end
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@ccconfirm_window.index = 1
return
end
end
def make_new_equip(combine1, combine2)
$game_switches[49] = true
result = rand(100).to_i
if result >= $game_variables[50]
$game_party.actors[@actor_index].equip(@equip_window.index, 0, 1)
$game_variables[49] = 1
else
if @equip_window.index == 0
iii = $data_weapons.size
kkk = $game_party.actors[@actor_index].weapon_id
$data_weapons[iii] = $data_weapons[kkk].clone
$data_weapons[iii].id = iii
if $new_extra != nil
$data_weapons[iii].name = ( $data_weapons[kkk].name)
end
if $new_element_plus != nil
$data_weapons[iii].name = ( $data_weapons[kkk].name)
end
$data_weapons[iii].description = ($data_weapons[kkk].description + "," + [$data_weapons[kkk].combine - 1].to_s)
$data_weapons[iii].atk = $data_weapons[kkk].atk + ($atk_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].pdef = $data_weapons[kkk].pdef + ($pdef_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].mdef = $data_weapons[kkk].mdef + ($mdef_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].str_plus = $data_weapons[kkk].str_plus + ($str_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].dex_plus = $data_weapons[kkk].dex_plus + ($dex_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].agi_plus = $data_weapons[kkk].agi_plus + ($agi_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].int_plus = $data_weapons[kkk].int_plus + ($int_plus2 * (80 + rand(41)) / 100).to_i
$data_weapons[iii].element_set = $element_plus2
$game_party.gain_weapon(iii, 1)
for jjj in 1...$data_classes.size
if $data_classes[jjj].weapon_set.include?(kkk)
$data_classes[jjj].weapon_set.push(iii)
end
end
else
iii = $data_armors.size
case @equip_window.index
when 1
kkk = $game_party.actors[@actor_index].armor1_id
when 2
kkk = $game_party.actors[@actor_index].armor2_id
when 3
kkk = $game_party.actors[@actor_index].armor3_id
when 4
kkk = $game_party.actors[@actor_index].armor4_id
end
$data_armors[iii] = $data_armors[kkk].clone
$data_armors[iii].id = iii
if $new_extra != nil
$data_armors[iii].name = ( $data_armors[kkk].name)
end
if $new_element_plus != nil
$data_armors[iii].name = ( $data_armors[kkk].name)
end
$data_armors[iii].description = ($data_armors[kkk].description + "," + [$data_armors[kkk].combine - 1].to_s)
$data_armors[iii].eva = $data_armors[kkk].eva + ($eva_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].pdef = $data_armors[kkk].pdef + ($pdef_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].mdef = $data_armors[kkk].mdef + ($mdef_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].str_plus = $data_armors[kkk].str_plus + ($str_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].dex_plus = $data_armors[kkk].dex_plus + ($dex_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].agi_plus = $data_armors[kkk].agi_plus + ($agi_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].int_plus = $data_armors[kkk].int_plus + ($int_plus2 * (80 + rand(41)) / 100).to_i
$data_armors[iii].guard_element_set = $element_plus2
$game_party.gain_armor(iii, 1)
for jjj in 1...$data_classes.size
if $data_classes[jjj].armor_set.include?(kkk)
$data_classes[jjj].armor_set.push(iii)
end
end
end
$game_party.actors[@actor_index].equip(@equip_window.index, iii, 1)
$game_variables[49] = 0
end
$game_party.lose_item(combine2.id, 1)
@epro_window.dispose
$scene = Scene_Map.new
end
def update_combine
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
@combine_window.active = false
@equip_window.active = true
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@combine_window.active = false
@combine2 = @combine_window.item
@epro_window = Window_EPro.new(@combine1, @combine2)
@epro_window.visible = true
@epro_window.active = false
@ccconfirm_window.active = true
@ccconfirm_window.visible = true
end
end
def update_equip
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$game_switches[49] = true
$game_variables[49] = 2
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
case @equip_window.index
when 0
@combine1 = $data_weapons[$game_party.actors[@actor_index].weapon_id]
when 1
@combine1 = $data_armors[$game_party.actors[@actor_index].armor1_id]
when 2
@combine1 = $data_armors[$game_party.actors[@actor_index].armor2_id]
when 3
@combine1 = $data_armors[$game_party.actors[@actor_index].armor3_id]
when 4
@combine1 = $data_armors[$game_party.actors[@actor_index].armor4_id]
end
$game_system.se_play($data_system.decision_se)
if @combine1 == nil
return
end
if @combine1.combine <= 0
return
end
@combine_window.active = true
@equip_window.active = false
return
end
# 按下 R 键的情况下
if Input.trigger?(Input::R)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至下一位角色
@actor_index += 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Combine.new(@actor_index)
return
end
# 按下 L 键的情况下
if Input.trigger?(Input::L)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至上一位角色
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Combine.new(@actor_index)
return
end
end
end
#==============================================================================
# ■ Window_Material
#------------------------------------------------------------------------------
# 材料窗口。
#==============================================================================
class Window_Material < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 64, 320, 416)
@column_max = 1
refresh
self.index = 0
# 战斗中的情况下将窗口移至中央并将其半透明化
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 添加报务
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
if $data_items[i].element_set.include?(31)
@data.push($data_items[i])
end
end
end
# 如果项目数不是 0 就生成位图、重新描绘全部项目
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.color = normal_color
x = 4
y = index * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ■ Window_EquipRight
#------------------------------------------------------------------------------
# 装备画面、显示角色现在装备的物品的窗口。
#==============================================================================
class Window_NNName < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(actor)
super(320, 64, 320, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.draw_text(4, 0, 256, 32, actor.name, 0)
end
end
class Window_CombineRight < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(actor)
super(320, 128, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(4, 32 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
def update_help
if self.item != nil
ssstring = self.item.description
case self.index
when 0
ssstring += " 还可以组合" + $data_weapons[@actor.weapon_id].combine.to_s + "次"
when 1
ssstring += " 还可以组合" + $data_armors[@actor.armor1_id].combine.to_s + "次"
when 2
ssstring += " 还可以组合" + $data_armors[@actor.armor2_id].combine.to_s + "次"
when 3
ssstring += " 还可以组合" + $data_armors[@actor.armor3_id].combine.to_s + "次"
when 4
ssstring += " 还可以组合" + $data_armors[@actor.armor4_id].combine.to_s + "次"
end
end
@help_window.set_text(self.item == nil ? "" : ssstring)
end
end
#==============================================================================
# ■ Window_EPro
#------------------------------------------------------------------------------
# 装备合成界面中的组装前后比较窗口。
#==============================================================================
class Window_EPro < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#
#--------------------------------------------------------------------------
def initialize(combine1, combine2)
super(0, 0, 384, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@combine1 = combine1
@combine2 = combine2
refresh
self.z = 300
end
def refresh
self.contents.clear
if @combine1.is_a?(RPG::Weapon)
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 192, 32, "欲组装的武器:", 0)
self.contents.font.color = normal_color
self.contents.draw_text(164, 0, 192, 32, @combine1.name.to_s, 0)
self.contents.font.color = system_color
self.contents.draw_text(128, 32, 80, 32, "组装前", 0)
self.contents.draw_text(256, 32, 80, 32, "组装后", 0)
self.contents.draw_text(4, 64, 80, 32, "攻击力", 0)
self.contents.draw_text(4, 96, 80, 32, "物理防", 0)
self.contents.draw_text(4, 128, 80, 32, "魔法防", 0)
self.contents.draw_text(4, 160, 80, 32, "加力量", 0)
self.contents.draw_text(4, 192, 80, 32, "加灵巧", 0)
self.contents.draw_text(4, 224, 80, 32, "加速度", 0)
self.contents.draw_text(4, 256, 80, 32, "加魔力", 0)
self.contents.draw_text(4, 288, 80, 32, "属性", 0)
self.contents.font.color = normal_color
self.contents.draw_text(128, 64, 80, 32, @combine1.atk.to_s, 0)
self.contents.draw_text(128, 96, 80, 32, @combine1.pdef.to_s, 0)
self.contents.draw_text(128, 128, 80, 32, @combine1.mdef.to_s, 0)
self.contents.draw_text(128, 160, 80, 32, @combine1.str_plus.to_s, 0)
self.contents.draw_text(128, 192, 80, 32, @combine1.dex_plus.to_s, 0)
self.contents.draw_text(128, 224, 80, 32, @combine1.agi_plus.to_s, 0)
self.contents.draw_text(128, 256, 80, 32, @combine1.int_plus.to_s, 0)
$str_plus2 = 0
$dex_plus2 = 0
$agi_plus2 = 0
$int_plus2 = 0
$atk_plus2 = 0
$new_extra = nil
case @combine2.parameter_type
when 1
$atk_plus2 = @combine2.parameter_points
$new_extra = ""
when 3
$str_plus2 = @combine2.parameter_points
$new_extra = ""
when 4
$dex_plus2 = @combine2.parameter_points
$new_extra = "敏"
when 5
$agi_plus2 = @combine2.parameter_points
$new_extra = "疾"
when 6
$int_plus2 = @combine2.parameter_points
$new_extra = "灵"
end
if $new_extra == nil and @combine2.pdef_f != 0
$new_extra = "坚"
end
if $new_extra == nil and @combine2.mdef_f != 0
$new_extra = "圣"
end
$pdef_plus2 = @combine2.pdef_f
$mdef_plus2 = @combine2.mdef_f
self.contents.draw_text(256, 64, 80, 32, $atk_plus2.to_s, 0)
self.contents.draw_text(256, 96, 80, 32, $pdef_plus2.to_s, 0)
self.contents.draw_text(256, 128, 80, 32, $mdef_plus2.to_s, 0)
self.contents.draw_text(256, 160, 80, 32, $str_plus2.to_s, 0)
self.contents.draw_text(256, 192, 80, 32, $dex_plus2.to_s, 0)
self.contents.draw_text(256, 224, 80, 32, $agi_plus2.to_s, 0)
self.contents.draw_text(256, 256, 80, 32, $int_plus2.to_s, 0)
jjj = 288
for iii in 1..16
if @combine1.element_set.include?(iii)
self.contents.draw_text(128, jjj, 80, 32, $data_system.elements[iii], 0)
jjj += 32
end
end
$element_plus2 = []
$new_element_plus = nil
for iii in 1..16
if @combine1.element_set.include?(iii)
$element_plus2.push(iii)
end
if @combine2.element_set.include?(iii)
if $new_element_plus == nil
$new_element_plus = $data_system.elements[iii].to_s
end
$element_plus2.push(iii)
end
end
jjj = 288
for iii in 1..16
if $element_plus2.include?(iii)
self.contents.draw_text(256, jjj, 80, 32, $data_system.elements[iii], 0)
jjj += 32
end
end
else
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 192, 32, "欲组装的防具:", 0)
self.contents.font.color = normal_color
self.contents.draw_text(164, 0, 192, 32, @combine1.name.to_s, 0)
self.contents.font.color = system_color
self.contents.draw_text(128, 32, 80, 32, "组装前", 0)
self.contents.draw_text(256, 32, 80, 32, "组装后", 0)
self.contents.draw_text(4, 64, 80, 32, "物理防", 0)
self.contents.draw_text(4, 96, 80, 32, "魔法防", 0)
self.contents.draw_text(4, 128, 80, 32, "加回避", 0)
self.contents.draw_text(4, 160, 80, 32, "加力量", 0)
self.contents.draw_text(4, 192, 80, 32, "加灵巧", 0)
self.contents.draw_text(4, 224, 80, 32, "加速度", 0)
self.contents.draw_text(4, 256, 80, 32, "加魔力", 0)
self.contents.draw_text(4, 288, 80, 32, "属性防御", 0)
self.contents.font.color = normal_color
self.contents.draw_text(128, 64, 80, 32, @combine1.pdef.to_s, 0)
self.contents.draw_text(128, 96, 80, 32, @combine1.mdef.to_s, 0)
self.contents.draw_text(128, 128, 80, 32, @combine1.eva.to_s, 0)
self.contents.draw_text(128, 160, 80, 32, @combine1.str_plus.to_s, 0)
self.contents.draw_text(128, 192, 80, 32, @combine1.dex_plus.to_s, 0)
self.contents.draw_text(128, 224, 80, 32, @combine1.agi_plus.to_s, 0)
self.contents.draw_text(128, 256, 80, 32, @combine1.int_plus.to_s, 0)
$str_plus2 = 0
$dex_plus2 = 0
$agi_plus2 = 0
$int_plus2 = 0
$eva_plus2 = 0
$new_extra = nil
case @combine2.parameter_type
when 1
$new_extra = "刚"
$eva_plus2 = @combine2.parameter_points
when 3
$new_extra = "劲"
$str_plus2 = @combine2.parameter_points
when 4
$new_extra = "敏"
$dex_plus2 = @combine2.parameter_points
when 5
$new_extra = "疾"
$agi_plus2 = @combine2.parameter_points
when 6
$new_extra = "灵"
$int_plus2 = @combine2.parameter_points
end
if $new_extra == nil and @combine2.pdef_f != 0
$new_extra = "坚"
end
if $new_extra == nil and @combine2.mdef_f != 0
$new_extra = "圣"
end
$pdef_plus2 = @combine2.pdef_f
$mdef_plus2 = @combine2.mdef_f
self.contents.draw_text(256, 64, 80, 32, $pdef_plus2.to_s, 0)
self.contents.draw_text(256, 96, 80, 32, $mdef_plus2.to_s, 0)
self.contents.draw_text(256, 128, 80, 32, $eva_plus2.to_s, 0)
self.contents.draw_text(256, 160, 80, 32, $str_plus2.to_s, 0)
self.contents.draw_text(256, 192, 80, 32, $dex_plus2.to_s, 0)
self.contents.draw_text(256, 224, 80, 32, $agi_plus2.to_s, 0)
self.contents.draw_text(256, 256, 80, 32, $int_plus2.to_s, 0)
jjj = 288
for iii in 1..16
if @combine1.guard_element_set.include?(iii)
self.contents.draw_text(128, jjj, 80, 32, $data_system.elements[iii], 0)
jjj += 32
end
end
$element_plus2 = []
$new_element_plus = nil
for iii in 1..16
if @combine1.guard_element_set.include?(iii)
$element_plus2.push(iii)
end
if @combine2.element_set.include?(iii)
if $new_element_plus == nil
$new_element_plus = $data_system.elements[iii].to_s
end
$element_plus2.push(iii)
end
end
jjj = 288
for iii in 1..16
if $element_plus2.include?(iii)
self.contents.draw_text(256, jjj, 80, 32, $data_system.elements[iii], 0)
jjj += 32
end
end
end
self.contents.draw_text(224, 64, 80, 32, "+", 0)
self.contents.draw_text(224, 96, 80, 32, "+", 0)
self.contents.draw_text(224, 128, 80, 32, "+", 0)
self.contents.draw_text(224, 160, 80, 32, "+", 0)
self.contents.draw_text(224, 192, 80, 32, "+", 0)
self.contents.draw_text(224, 224, 80, 32, "+", 0)
self.contents.draw_text(224, 256, 80, 32, "+", 0)
self.contents.draw_text(224, 288, 80, 32, "+", 0)
self.contents.draw_text(0, 384, 352, 32, "数值的增加只能表示大概,实际组成", 0)
self.contents.draw_text(0, 416, 352, 32, "会上下浮动20%,确定要组合吗?", 0)
end
def update
refresh
end
end
class Window_CCConfirm < Window_Selectable
def initialize
super(384, 384, 128, 96)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
@column_max = 1
@item_max = 2
self.index = 0
self.z = 300
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 64, 32, "好的", 0)
self.contents.draw_text(0, 32, 64, 32, "不好", 0)
end
def update
refresh
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 变更装备
# equip_type : 装备类型
# id : 武器 or 防具 ID (0 为解除装备)
#--------------------------------------------------------------------------
def equip(equip_type, id, loseit = 0)
case equip_type
when 0 # 武器
if id == 0 or $game_party.weapon_number(id) > 0
if loseit == 0
$game_party.gain_weapon(@weapon_id, 1)
end
@weapon_id = id
$game_party.lose_weapon(id, 1)
end
when 1 # 盾
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor1_id], $data_armors[id])
if loseit == 0
$game_party.gain_armor(@armor1_id, 1)
end
@armor1_id = id
$game_party.lose_armor(id, 1)
end
when 2 # 头
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor2_id], $data_armors[id])
if loseit == 0
$game_party.gain_armor(@armor2_id, 1)
end
@armor2_id = id
$game_party.lose_armor(id, 1)
end
when 3 # 身体
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor3_id], $data_armors[id])
if loseit == 0
$game_party.gain_armor(@armor3_id, 1)
end
@armor3_id = id
$game_party.lose_armor(id, 1)
end
when 4 # 装饰品
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor4_id], $data_armors[id])
if loseit == 0
$game_party.gain_armor(@armor4_id, 1)
end
@armor4_id = id
$game_party.lose_armor(id, 1)
end
end
end
end
#==============================================================================
# ■ Window_EquipLeft
复制代码
作者:
a5396982
时间:
2008-11-8 21:37
接上
#------------------------------------------------------------------------------
# 装备画面的、显示角色能力值变化的窗口。
#==============================================================================
class Window_EquipLeft < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 64, 272, 416)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)
draw_actor_level(@actor, 4, 32)
draw_actor_parameter(@actor, 4, 64, 0)
draw_actor_parameter(@actor, 4, 96, 1)
draw_actor_parameter(@actor, 4, 128, 2)
draw_actor_parameter(@actor, 4, 160, 7)
draw_actor_parameter(@actor, 4, 192, 3)
draw_actor_parameter(@actor, 4, 224, 4)
draw_actor_parameter(@actor, 4, 256, 5)
draw_actor_parameter(@actor, 4, 288, 6)
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 64, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
end
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 96, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2)
end
if @new_mdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 128, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2)
end
if @new_eva != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 160, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 160, 36, 32, @new_eva.to_s, 2)
end
if @new_str != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 192, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 192, 36, 32, @new_str.to_s, 2)
end
if @new_dex != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 224, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 224, 36, 32, @new_dex.to_s, 2)
end
if @new_agi != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 256, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 256, 36, 32, @new_agi.to_s, 2)
end
if @new_int != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 288, 40, 32, "→", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 288, 36, 32, @new_int.to_s, 2)
end
end
#--------------------------------------------------------------------------
# ● 变更装备后的能力值设置
# new_atk : 变更装备后的攻击力
# new_pdef : 变更装备后的物理防御
# new_mdef : 变更装备后的魔法防御
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_eva, new_str, new_dex, new_agi, new_int)
if @new_atk != new_atk or
@new_pdef != new_pdef or
@new_mdef != new_mdef or
@new_eva != new_eva or
@new_str != new_str or
@new_dex != new_dex or
@new_agi != new_agi or
@new_int != new_int
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_eva = new_eva
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
refresh
end
end
end
#==============================================================================
# ■ Window_EquipItem
#------------------------------------------------------------------------------
# 装备画面、显示浏览变更装备的候补物品的窗口。
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
# equip_type : 装备部位 (0~3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
super(272, 256, 368, 224)
@actor = actor
@equip_type = equip_type
@column_max = 1
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 添加可以装备的武器
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# 添加可以装备的防具
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# 添加空白
@data.push(nil)
# 生成位图、描绘全部项目
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 项目的描绘
# index : 项目符号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4
y = index * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
class Scene_Equip
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
# 设置物品窗口的可视状态
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# 获取当前装备中的物品
item1 = @right_window.item
# 设置当前的物品窗口到 @item_window
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
# 右窗口被激活的情况下
if @right_window.active
# 删除变更装备后的能力
@left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil)
end
# 物品窗口被激活的情况下
if @item_window.active
# 获取现在选中的物品
item2 = @item_window.item
# 变更装备
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
# 获取变更装备后的能力值
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_eva = @actor.eva
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
# 返回到装备
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# 描画左窗口
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_eva, new_str, new_dex, new_agi, new_int)
end
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 描绘能力值
# actor : 角色
# x : 描画目标 X 坐标
# y : 描画目标 Y 坐标
# type : 能力值种类 (0~6)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
when 7
parameter_name = $data_system.words.int
parameter_value = actor.eva
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
end
end
复制代码
作者:
a5396982
时间:
2008-11-8 21:38
就是上面的脚本 一用上就出错能不能帮我完善一下
作者:
越前リョーマ
时间:
2008-11-8 21:40
以下引用
a5396982于2008-11-8 13:38:45
的发言:
就是上面的脚本 一用上就出错能不能帮我完善一下
你还加了什么脚本?
作者:
a5396982
时间:
2008-11-8 21:43
还有仙剑的菜单 远景 自动提示 进大远小
作者:
天圣的马甲
时间:
2008-11-9 00:20
= =所以我说你给我上工程……
http://rpg.blue/viewthread.php?tid=69666
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1