Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Хм…
Посмотрим. Вроде должно быть норм.
Но у него обязательно должна быть запись item_name. Я же еще добавил проверку, чтоб если на файл с таким же названием ссылается стата или скилл - то тоже шла перезапись, даже если нет name item_name и id. Как например с файлами статов. Так чтоб их было достаточно скопировать из оригинальной директории, и не указывать лишнего. Просто оставить название файла оригинальным.
Но приёмчики я погляжу. Есть варианты, как упростить мой код. Хотя я и сам мог через case, но мне было лениво...
Хм…
Посмотрим. Вроде должно быть норм.
Но у него обязательно должна быть запись item_name. Я же еще добавил проверку, чтоб если на файл с таким же названием ссылается стата или скилл - то тоже шла перезапись, даже если нет name item_name и id. Как например с файлами статов. Так чтоб их было достаточно скопировать из оригинальной директории, и не указывать лишнего. Просто оставить название файла оригинальным.
Но приёмчики я погляжу. Есть варианты, как упростить мой код. Хотя я и сам мог через case, но мне было лениво...
А, чем проще, тем лучше, иначе я просто запутаюсь... А case я просто люблю, не смотря даже на то, что не люблю программирование в целом.)) Ну, да, у меня там тоже проверка - есть - переписать, нету - добавить новый. Изначально, у меня были отдельные папки - для перезаписываемых и для новых, теперь одна для тех и других.
У меня, в планах, хотелось, чтоб, взять файлы из effects, нужные, перенести в папку мода, и править что там записано. Но многие файлы не содержат ни id ни name ни item_name. В самой игре записан путь до них, вручную автором игры, в записи eff_cfg. И там не полные данные, а обрывки, кусочки.
Вот… переделал… (Если в json указать «"id": num,», то оно принудительно встанет на место того или иного навыка/статы/предмета, даже если item_name и name будут отличаться. Если указано id, то оно имеет приоритет. И если названия будут отличаться, то у статы станет два названия, по которым ее можно вызвать.)
Ruby:
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}"
arpgSkills = FileGetter.load_skill_from_json("#{modFolder}/Data/Effects/Skill/")
$data_arpgskills = $data_arpgskills.merge(arpgSkills)
types = ["Skill", "States", "Items", "Weapons", "Armors" ]
types.each{|type|
FileGetter.getFileList("#{modFolder}/Data/Effects/#{type}/*.json").each{|file|
add_new_smth(file, type)
}
}
end
def self.add_new_smth(path, type) #Если хотите использовать для полной перезаписи существующей статы, то в json файле должно быть «id» «name» и «item_name» как в оригинальном. С учетом скрытых в rvdata2 данных статы. А если хотите, чтоб стата была новой, то не указывайте id, а name и item_name берите уникальные. Если укажите id - то произойдет перезапись.
case type
when "States"
data = $data_states
data_name = $data_StateName
when "Skill"
data = $data_skills
data_name = $data_SkillName
when "Items"
data = $data_items
data_name = $data_ItemName
when "Weapons"
data = $data_weapons
data_name = $data_ItemName
when "Armors"
data = $data_armors
data_name = $data_ItemName
else
return
end
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"]
data[tmpid].load_additional_data(path)
return
elsif temp_hash["name"] != nil && data_name[temp_hash["name"]] != nil
data_name[temp_hash["name"]].load_additional_data(path)
return
elsif temp_hash["item_name"] != nil && data_name[temp_hash["item_name"]] != nil
data_name[temp_hash["item_name"]].load_additional_data(path)
return
end
if type == "Skill" && temp_hash["name"] == nil #arpgSkill
return
end
tmpid = data.length
case type
when "States"
data << RPG::State.new
when "Skill"
data << RPG::Skill.new
when "Items"
data << RPG::Item.new
when "Weapons"
data << RPG::Weapon.new
when "Armors"
data << RPG::Armor.new
end
data.last.id = tmpid
data.last.load_additional_data(path)
end
end
ПС. Меня начало раздражать, что папка в игре называется Skill, а не Skills.
Все остальные во множественном числе, а эта - в единственном. Немного ОКР…
Вот… переделал… (Если в json указать «"id": num,», то оно принудительно встанет на место того или иного навыка/статы/предмета, даже если item_name и name будут отличаться. Если указано id, то оно имеет приоритет. И если названия будут отличаться, то у статы станет два названия, по которым ее можно вызвать.)
Ruby:
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}"
arpgSkills = FileGetter.load_skill_from_json("#{modFolder}/Data/Effects/Skill/")
$data_arpgskills = $data_arpgskills.merge(arpgSkills)
types = ["Skill", "States", "Items", "Weapons", "Armors" ]
types.each{|type|
FileGetter.getFileList("#{modFolder}/Data/Effects/#{type}/*.json").each{|file|
add_new_smth(file, type)
}
}
end
def self.add_new_smth(path, type) #Если хотите использовать для полной перезаписи существующей статы, то в json файле должно быть «id» «name» и «item_name» как в оригинальном. С учетом скрытых в rvdata2 данных статы. А если хотите, чтоб стата была новой, то не указывайте id, а name и item_name берите уникальные. Если укажите id - то произойдет перезапись.
case type
when "States"
data = $data_states
data_name = $data_StateName
when "Skill"
data = $data_skills
data_name = $data_SkillName
when "Items"
data = $data_items
data_name = $data_ItemName
when "Weapons"
data = $data_weapons
data_name = $data_ItemName
when "Armors"
data = $data_armors
data_name = $data_ItemName
else
return
end
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"]
data[tmpid].load_additional_data(path)
return
elsif temp_hash["name"] != nil && data_name[temp_hash["name"]] != nil
data_name[temp_hash["name"]].load_additional_data(path)
return
elsif temp_hash["item_name"] != nil && data_name[temp_hash["item_name"]] != nil
data_name[temp_hash["item_name"]].load_additional_data(path)
return
end
if type == "Skill" && temp_hash["name"] == nil #arpgSkill
return
end
tmpid = data.length
case type
when "States"
data << RPG::State.new
when "Skill"
data << RPG::Skill.new
when "Items"
data << RPG::Item.new
when "Weapons"
data << RPG::Weapon.new
when "Armors"
data << RPG::Armor.new
end
data.last.id = tmpid
data.last.load_additional_data(path)
end
end
ПС. Меня начало раздражать, что папка в игре называется Skill, а не Skills.
Все остальные во множественном числе, а эта - в единственном. Немного ОКР…
Видел я только что выложил фиксик один… Думается мне, что это должен был сделать еще автор игры… Но он почему-то забил.
—
И так… Понял момент еще один. (Это пока только идея. Может не сработать.)
Можно и параметры статов и навыков - сделать динамическими, и хранить их изменения в сейв-файле.
Любая штука по типу: $game_player.actor.stat["Что годно!!!"] = Что угодно
Попадает в сохранение. И туда можно записывать текущее состояние всего $data_skills или _states… Или состояние отдельного навыка или статы.
А потом просто $data_SkillName["Навык"] = $game_player.actor.stat["Навык Фулл Дейт"] в те или иные моменты.
И можно добавить в функцию загрузки сохранения, как сделано для LIST черт…
И тогда, можно делать так, чтоб по мере прокачки менялось всякое разное в навыках. В том числе даже описание. Или требования, или стоимость… И все это попадало в сохранение, и подгружалось оттуда во время загрузки.
Но целиком сохранять дата скилл нейм или дата стейт нейм, думаю, не стоит. Мало ли, другой мод там что-то меняет, и его установили позже. Лучше так делать для отдельных записей.
Похоже не судьба мне с этим модом поиграть. Решил даж переустановить лону и на неё поставить мод, но так тож не вышло. версия игры 0.9.3.0.
Насколько знаю это ж последняя версия? замену сделал вручную, ибо я слишком туп и не знаю можно ли как то по другому сделать. при запуске выдало 4 маленькие ошибки, а когда в обучении решил пройтись, то у меня вылезла одна ошибка на полэкрана и игра крякнулась
Похоже не судьба мне с этим модом поиграть. Решил даж переустановить лону и на неё поставить мод, но так тож не вышло. версия игры 0.9.3.0.
Насколько знаю это ж последняя версия? замену сделал вручную, ибо я слишком туп и не знаю можно ли как то по другому сделать. при запуске выдало 4 маленькие ошибки, а когда в обучении решил пройтись, то у меня вылезла одна ошибка на полэкрана и игра крякнулась
Мы используем основные cookies для обеспечения работы этого сайта, а также дополнительные cookies для обеспечения максимального удобства пользователя. Предоставляя нам персональные данные, вы соглашаетесь на их обработку в соответствии с этой политикой.