Хм…
Посмотрим. Вроде должно быть норм.
Но у него обязательно должна быть запись 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:
moduleDataManagerclass<<self
alias_method :load_mod_database_UNIQUE_CODENAME,:load_mod_databaseenddefself.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)}}enddefself.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_StateNamewhen"Skill"
data =$data_skills
data_name =$data_SkillNamewhen"Items"
data =$data_items
data_name =$data_ItemNamewhen"Weapons"
data =$data_weapons
data_name =$data_ItemNamewhen"Armors"
data =$data_armors
data_name =$data_ItemNameelsereturnend
temp_hash =nilbegin; temp_hash =JSON.decode(open(path).read);rescue msgbox("Error in Json == [[ #{path} ]] :: def self.add_new_smth");endreturnif temp_hash ==nilif temp_hash["name"]==nil&& temp_hash["item_name"]==nil&& temp_hash["id"]==nil
file_name = path.split('/').last
data_name.each{|wut,state|nextif state.addData ==nilnextif state.addData["eff_cfg"]==nilif state.addData["eff_cfg"].include?("#{file_name}")
data_name[wut].load_additional_data(path)end}returnelsif temp_hash["id"]!=nil
tmpid = temp_hash["id"]
data[tmpid].load_additional_data(path)returnelsif temp_hash["name"]!=nil&& data_name[temp_hash["name"]]!=nil
data_name[temp_hash["name"]].load_additional_data(path)returnelsif temp_hash["item_name"]!=nil&& data_name[temp_hash["item_name"]]!=nil
data_name[temp_hash["item_name"]].load_additional_data(path)returnendif type =="Skill"&& temp_hash["name"]==nil#arpgSkillreturnend
tmpid = data.length
case type
when"States"
data <<RPG::State.newwhen"Skill"
data <<RPG::Skill.newwhen"Items"
data <<RPG::Item.newwhen"Weapons"
data <<RPG::Weapon.newwhen"Armors"
data <<RPG::Armor.newend
data.last.id = tmpid
data.last.load_additional_data(path)endend
ПС. Меня начало раздражать, что папка в игре называется Skill, а не Skills.
Все остальные во множественном числе, а эта - в единственном. Немного ОКР…
Вот… переделал… (Если в json указать «"id": num,», то оно принудительно встанет на место того или иного навыка/статы/предмета, даже если item_name и name будут отличаться. Если указано id, то оно имеет приоритет. И если названия будут отличаться, то у статы станет два названия, по которым ее можно вызвать.)
Ruby:
moduleDataManagerclass<<self
alias_method :load_mod_database_UNIQUE_CODENAME,:load_mod_databaseenddefself.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)}}enddefself.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_StateNamewhen"Skill"
data =$data_skills
data_name =$data_SkillNamewhen"Items"
data =$data_items
data_name =$data_ItemNamewhen"Weapons"
data =$data_weapons
data_name =$data_ItemNamewhen"Armors"
data =$data_armors
data_name =$data_ItemNameelsereturnend
temp_hash =nilbegin; temp_hash =JSON.decode(open(path).read);rescue msgbox("Error in Json == [[ #{path} ]] :: def self.add_new_smth");endreturnif temp_hash ==nilif temp_hash["name"]==nil&& temp_hash["item_name"]==nil&& temp_hash["id"]==nil
file_name = path.split('/').last
data_name.each{|wut,state|nextif state.addData ==nilnextif state.addData["eff_cfg"]==nilif state.addData["eff_cfg"].include?("#{file_name}")
data_name[wut].load_additional_data(path)end}returnelsif temp_hash["id"]!=nil
tmpid = temp_hash["id"]
data[tmpid].load_additional_data(path)returnelsif temp_hash["name"]!=nil&& data_name[temp_hash["name"]]!=nil
data_name[temp_hash["name"]].load_additional_data(path)returnelsif temp_hash["item_name"]!=nil&& data_name[temp_hash["item_name"]]!=nil
data_name[temp_hash["item_name"]].load_additional_data(path)returnendif type =="Skill"&& temp_hash["name"]==nil#arpgSkillreturnend
tmpid = data.length
case type
when"States"
data <<RPG::State.newwhen"Skill"
data <<RPG::Skill.newwhen"Items"
data <<RPG::Item.newwhen"Weapons"
data <<RPG::Weapon.newwhen"Armors"
data <<RPG::Armor.newend
data.last.id = tmpid
data.last.load_additional_data(path)endend
ПС. Меня начало раздражать, что папка в игре называется 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 для обеспечения максимального удобства пользователя. Предоставляя нам персональные данные, вы соглашаетесь на их обработку в соответствии с этой политикой.