module DataManager
class << self
alias_method :load_mod_database_UNIQUE_CODENAME, :load_mod_database
end
def self.load_mod_database
load_mod_database_UNIQUE_CODENAME
mod_name = "MOD FOLDER NAME"
modFolder = "ModScripts/_Mods/#{mod_name}"
FileGetter.getFileList("#{modFolder}/Data/Effects/Skill/*.json").each{|file|
add_new_smth(file, "skill")}
FileGetter.getFileList("#{modFolder}/Data/Effects/States/*.json").each{|file|
add_new_smth(file, "state")}
FileGetter.getFileList("#{modFolder}/Data/Effects/Armors/*.json").each{|file|
add_new_smth(file, "armor")}
FileGetter.getFileList("#{modFolder}/Data/Effects/Items/*.json").each{|file|
add_new_smth(file, "item")}
FileGetter.getFileList("#{modFolder}/Data/Effects/Weapons/*.json").each{|file|
add_new_smth(file, "weapon")}
end
def self.add_new_smth(path, type) #Если хотите использовать для полной перезаписи существующей статы, то в json файле должно быть «id» «name» и «item_name» как в оригинальном. С учетом скрытых в rvdata2 данных статы. А если хотите, чтоб стата была новой, то не указывайте id, а name и item_name берите уникальные. Если укажите id - то произойдет перезапись.
if type == "state"
data = $data_states
data_name = $data_StateName
elsif type == "skill"
data = $data_skills
data_name = $data_SkillName
elsif type == "item"
data = $data_items
data_name = $data_ItemName
elsif type == "weapon"
data = $data_weapons
data_name = $data_ItemName
elsif type == "armor"
data = $data_armors
data_name = $data_ItemName
else
return
end
tmpid = data.length
temp_hash = nil
begin; temp_hash = JSON.decode(open(path).read); rescue msgbox("Error in Json == [[ #{path} ]] :: def self.add_new_smth"); end
return if temp_hash == nil
if temp_hash["name"] == nil && temp_hash["item_name"] == nil && temp_hash["id"] == nil
file_name = path.split('/').last
data_name.each{|wut,state|
next if state.addData == nil
next if state.addData["eff_cfg"] == nil
if state.addData["eff_cfg"].include?("#{file_name}")
data_name[wut].load_additional_data(path)
end
}
return
elsif temp_hash["id"] != nil
tmpid = temp_hash["id"]
elsif temp_hash["name"] != nil && data_name[temp_hash["name"]] != nil
data_name[temp_hash["name"]].load_additional_data(path)
return
end
if type == "state"
data << RPG::State.new
data[tmpid].id = tmpid
data[tmpid].load_additional_data(path)
elsif type == "skill"
data << RPG::Skill.new
data[tmpid].id = tmpid
data[tmpid].load_additional_data(path)
elsif type == "item"
data << RPG::Item.new
data[tmpid].id = tmpid
data[tmpid].load_additional_data(path)
elsif type == "weapon"
data << RPG::Weapon.new
data[tmpid].id = tmpid
data[tmpid].load_additional_data(path)
elsif type == "armor"
data << RPG::Armor.new
data[tmpid].id = tmpid
data[tmpid].load_additional_data(path)
end
end
end
module FileGetter
class << self
alias_method :load_skill_from_json_UNIQUE_CODENAME, :load_skill_from_json
end
#Перезапись существующих «arpg» навыков и установка новых из папки Data/Effects/Skill/. Предупрждаю. Файлы должны быть полными. Работает в том числе с навыками, у которых не указано name, и которые в игре невидимы для игрока.
def self.load_skill_from_json(target="Data/Effects/Skill/")
mod_name = "MOD FOLDER NAME"
modFolder = "ModScripts/_Mods/#{mod_name}"
skills1 = load_skill_from_json_UNIQUE_CODENAME(target)
skills2 = load_skill_from_json_UNIQUE_CODENAME("#{modFolder}/#{target}")
skills = skills1.merge(skills2)
return skills
end
end