本帖最后由 九夜神尊 于 2012-8-29 17:30 编辑
1243852 发表于 2012-8-29 01:12
我没发现你一楼说明了个什么……………………太不详细了。
那我就给你诠释一下吧!
把两个工程考到一起,是为了数据都在一个地方。因为后缀不通,所以文件可以共存。
用VX打开属于VX的数据修改,用VA打开VA的数据修改。
然而在实际游戏运行的时候VA可以同时调用属于VA的和VX的文件。
$data_classes = load_data("Data/Classes.rvdata2") #载入VA的档案
$vx_data_classes = load_data("Data/Classes.rvdata") #载入VX的档案
这代码我相信你看得懂吧?
为什么我调用class的档案呢?
我们设计了一种特殊的装备,这些装备不分种类,不同的职业能使用不同的装备。没有任何规律。
这时候,只有XPVX的职业设置才能做到了,于是我想到了把VX的数据用到这里来。
这样做的意义在于,取XP VX VA的优点。
XP不是没有备注栏么?那么可以调用VX对应的备注呢?
VX不是没有地形标志么?用XP的可以吧!
XP不是有 666个动画数据库么?VA可以用上么??
地图图块设置上,XP有雾图形,战斗背景,远景呢!
虽然这些问题用脚本,哈希表,备注栏等等方法都能得到解决。但是可视化编辑不比翻来翻去填写ID方便的多么?
只是我没想到我的内容不那么好理解。
module VX_AND_VA
#--------------------------------------------------------------------------
# ● 转换名字
#--------------------------------------------------------------------------
def self .change_name ( a,b)
a.each_with_index do |oa,i|
next unless oa and b[ i]
oa.name =b[ i] .name
end
end
#--------------------------------------------------------------------------
# ● 转换名字
#--------------------------------------------------------------------------
def self .do_change ( data_name)
a = load_data( "Data/#{data_name}.rvdata" )
b = load_data( "Data/#{data_name}.rvdata2" )
VX_AND_VA.change_name ( a,b)
save_data( a,"Data/#{data_name}.rvdata" )
p "#{data_name}转换完毕"
end
end
#以下数组是全部需要转型的数据文件名
[ "Actors" ,"Classes" ,"Weapons" ,"Armors" ] .each do |name|
VX_AND_VA.do_change ( name)
end
#~ #★,以上被注释掉,若需要转型取消注释
module VX_AND_VA
#--------------------------------------------------------------------------
# ● 转换名字
#--------------------------------------------------------------------------
def self .change_name ( a,b)
a.each_with_index do |oa,i|
next unless oa and b[ i]
oa.name =b[ i] .name
end
end
#--------------------------------------------------------------------------
# ● 转换名字
#--------------------------------------------------------------------------
def self .do_change ( data_name)
a = load_data( "Data/#{data_name}.rvdata" )
b = load_data( "Data/#{data_name}.rvdata2" )
VX_AND_VA.change_name ( a,b)
save_data( a,"Data/#{data_name}.rvdata" )
p "#{data_name}转换完毕"
end
end
#以下数组是全部需要转型的数据文件名
[ "Actors" ,"Classes" ,"Weapons" ,"Armors" ] .each do |name|
VX_AND_VA.do_change ( name)
end
#~ #★,以上被注释掉,若需要转型取消注释
这样的脚本是用于随时合并VX VA两组数据库的名字的。
class RPG::Class < RPG::BaseItem
#--------------------------------------------------------------------------
# ● VA初始化别名
#--------------------------------------------------------------------------
alias va_initialize initialize
#--------------------------------------------------------------------------
# ● VX初始化别名
#--------------------------------------------------------------------------
def vx_initialize
@id = 0
@name = ""
@position = 0
@weapon_set = [ ]
@armor_set = [ ]
@element_ranks = Table.new ( 1 )
@state_ranks = Table.new ( 1 )
@learnings = [ ]
@skill_name_valid = false
@skill_name = ""
end
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
def initialize
va_initialize
vx_initialize
end
def exp_for_level( level)
lv = level.to_f
basis = @exp_params [ 0 ] .to_f
extra = @exp_params [ 1 ] .to_f
acc_a = @exp_params [ 2 ] .to_f
acc_b = @exp_params [ 3 ] .to_f
return ( basis*( ( lv-1 ) **( 0.9 +acc_a/250 ) ) *lv*( lv+1 ) /
( 6 +lv**2 /50 /acc_b) +( lv-1 ) *extra) .round .to_i
end
#--------VA-----------------
attr_accessor :exp_params
attr_accessor :params
attr_accessor :learnings
#-------------VX------------------------
attr_accessor :id
attr_accessor :name
attr_accessor :position
attr_accessor :weapon_set
attr_accessor :armor_set
attr_accessor :element_ranks
attr_accessor :state_ranks
#~ attr_accessor :learnings #因重复
attr_accessor :skill_name_valid
attr_accessor :skill_name
end
class RPG::Class < RPG::BaseItem
#--------------------------------------------------------------------------
# ● VA初始化别名
#--------------------------------------------------------------------------
alias va_initialize initialize
#--------------------------------------------------------------------------
# ● VX初始化别名
#--------------------------------------------------------------------------
def vx_initialize
@id = 0
@name = ""
@position = 0
@weapon_set = [ ]
@armor_set = [ ]
@element_ranks = Table.new ( 1 )
@state_ranks = Table.new ( 1 )
@learnings = [ ]
@skill_name_valid = false
@skill_name = ""
end
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
def initialize
va_initialize
vx_initialize
end
def exp_for_level( level)
lv = level.to_f
basis = @exp_params [ 0 ] .to_f
extra = @exp_params [ 1 ] .to_f
acc_a = @exp_params [ 2 ] .to_f
acc_b = @exp_params [ 3 ] .to_f
return ( basis*( ( lv-1 ) **( 0.9 +acc_a/250 ) ) *lv*( lv+1 ) /
( 6 +lv**2 /50 /acc_b) +( lv-1 ) *extra) .round .to_i
end
#--------VA-----------------
attr_accessor :exp_params
attr_accessor :params
attr_accessor :learnings
#-------------VX------------------------
attr_accessor :id
attr_accessor :name
attr_accessor :position
attr_accessor :weapon_set
attr_accessor :armor_set
attr_accessor :element_ranks
attr_accessor :state_ranks
#~ attr_accessor :learnings #因重复
attr_accessor :skill_name_valid
attr_accessor :skill_name
end
这是用于同时兼容VX VA的Class数据库的脚本。