RolePlay-S

RolePlay-S 0.4.7

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
Так.
Ради совместимости с Ultra Mod Manager
Пришлось все усложнить нафиг:
Ruby:
class Text
    
    alias_method :alias_load_file_Orig, :load_file unless method_defined?(:alias_load_file_Orig)

    def load_file(arg1=nil, arg2=nil)
        if arg2 == nil
            umm_run = false
        else
            umm_run = true
        end
        if !umm_run
            return load_file_no_umm_Corsys(arg1)
        else
            return load_file_umm_Corsys(arg1, arg2)
        end
    
    end
    
    
    
    def load_file_no_umm_Corsys(file)
        mod_file = File.exists?("#{$corsys_modFolder}/#{@base_folder}/#{file}.txt")
        orig_file = File.exists?("#{@base_folder}/#{file}.txt")

        if mod_file && orig_file
            hashh = alias_load_file_Orig(file).merge(load_file_mod_Corsys_no_umm(file))
        elsif mod_file
            hashh = load_file_mod_Corsys_no_umm(file)
        else
            hashh = alias_load_file_Orig(file)
        end
        
        return hashh
    end
    
    def load_file_mod_Corsys_no_umm(file)
        begin
            sth=File.read("#{$corsys_modFolder}/#{@base_folder}/#{file}.txt")
            return parse(sth.to_s.encode("utf-8"))
        rescue => ex
            msgbox "ERROR: missing translation file #{$corsys_modFolder}/#{@base_folder}/#{file}.txt"
            return Hash.new
        end
    end

    
    
    
    def load_file_umm_Corsys(part = nil, file)
        mod_file = File.exists?("#{$corsys_modFolder}/#{@parts[part]}/#{file}.txt")
        orig_file = File.exists?("#{@parts[part]}/#{file}.txt")

        if mod_file && orig_file
            hashh = alias_load_file_Orig(part, file).merge(load_file_mod_Corsys_umm(file))
        elsif mod_file
            hashh = load_file_mod_Corsys_umm(part, file)
        else
            hashh = alias_load_file_Orig(part, file)
        end
        
        return hashh
    end
    
    def load_file_mod_Corsys_umm(part = nil, file)
        begin
            sth=File.read("#{$corsys_modFolder}/#{@parts[part]}/#{file}.txt")
            return parse(sth.to_s.encode("utf-8"))
        rescue => ex
            msgbox "ERROR: missing translation file #{$corsys_modFolder}/#{@parts[part]}/#{file}.txt"
            return Hash.new
        end
    end
    

end
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Я использую твой первый вариант (ну то есть второй), он работает, так что все нормально.))
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
А потом посыпятся жалобы что вылазят ошибки из-за того что конфликт с Ultra Mod Manager.
И да…
Вышла 0.9.4.0
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
бе-бе-бе не моя проблема!!))) Скажу я
Я просто положу это тут.
Да.
Это было жоско. И так как я в Ruby не знаю всяких особых методов, делал костылями.
В общем, ловите.
Чисто инструментальный мод. Позволяет листать поле черт. Постранично.
(Там три файла кода. Один с кучей букаф где все сложно, другой просто импротирует данные, и третий - и с двумя функциями которые позволят засунуть черту в то или иное место. Всей книги черт.)
Пока что бета-версия. Потому что каждое листание хавает одно очко черт. Я устал, потом подумаю где и как его вертать обратно. И поработать над тем, чтоб выход из игры, и загрузка на другое сохранение ничего не ломало.
Ну, короче, вот. (Может перекинешь какому-нибудь профи в Руби, пусть поглядит что тут можно улучшить. Потому что мой способ - это движение горы к Магомеду. Я там массив превратил в строку, разобрал на запчасти, и собрал в другой массив. И все ради того, чтоб если что-то происходит с новым массивом, это никак не влияло на первый (где хранятся страницы книги черт). Потому что ни .clone ни .dup нифига не помогло.)
Вернуть очки черт это дело не сложное. А вот как сделать чтоб цель кода выполнялась не через жоп…
 

Вложения

Dynamic Trait.zip
7,9 KB · Просмотры: 0

Последнее редактирование:

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Я просто положу это тут.
Да.
Это было жоско. И так как я в Ruby не знаю всяких особых методов, делал костылями.
В общем, ловите.
Чисто инструментальный мод. Позволяет листать поле черт. Постранично.
(Там три файла кода. Один с кучей букаф где все сложно, другой просто импротирует данные, и третий - и с двумя функциями которые позволят засунуть черту в то или иное место. Всей книги черт.)
Пока что бета-версия. Потому что каждое листание хавает одно очко черт. Я устал, потом подумаю где и как его вертать обратно. И поработать над тем, чтоб выход из игры, и загрузка на другое сохранение ничего не ломало.
Ну, короче, вот. (Может перекинешь какому-нибудь профи в Руби, пусть поглядит что тут можно улучшить. Потому что мой способ - это движение горы к Магомеду. Я там массив превратил в строку, разобрал на запчасти, и собрал в другой массив. И все ради того, чтоб если что-то происходит с новым массивом, это никак не влияло на первый (где хранятся страницы книги черт). Потому что ни .clone ни .dup нифига не помогло.)
Вернуть очки черт это дело не сложное. А вот как сделать чтоб цель кода выполнялась не через жоп…
Листание?) Вроде звучит прикольно. Когда-то я так хотел поле черт расширять... но сейчас... Лишние мучения? не, спасибо.)))
Дискорд ведь заблокировали, так что я там не появлялся с месяц. Но там и правда есть несколько крутых программистов, самый крутой из них - Медь.))
А как работает листание обычного текста (квесты, записки, описание скиллов)? Разве там так сложно и сделано через массив?
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
Листание?) Вроде звучит прикольно. Когда-то я так хотел поле черт расширять... но сейчас... Лишние мучения? не, спасибо.)))
Дискорд ведь заблокировали, так что я там не появлялся с месяц. Но там и правда есть несколько крутых программистов, самый крутой из них - Медь.))
А как работает листание обычного текста (квесты, записки, описание скиллов)? Разве там так сложно и сделано через массив?
Черты существующие ведь записаны в массив. В этом проблема.
И код когда мы записываем данные из игры в массив черт - руби делает так, что данные в массиве - это те же переменные что и были сохранены. Называются по разному, но по сути это одно и то же.
И значит, записав новое поле черт, у нас в сохраненном списке черт тоде все поменяется. Поле черт одни переменные. И вот после этого мы еще раз меняем страницу, и упс… Изменив поле черт, мы черт возьми изменили и его копию и первая страница станет как вторая. И как тогда вернуться? Если данные о том, какой была первая страница - утеряны.
И чтоб этого избежать мне пришлось разобрать весь массив, превратить в строку, разделить строку на части, и из частей собрать новый массив заново. И каждый раз когда делается переход из сохранения в поле черт - повторять операцию, чтоб разрывать связь вуду между переменными. В руби - работает магия вуду!
Хотя, я подозреваю, что есть какой-то более простой способ. Но гугл и его рецепты не помогли.
Идея была проста. Взять стори статс, сделать его массивом, в котором каждая ячейка - поле черт 8х8 или 8х9, итд. Записать в 0 - текущее поле черт, и перезаписать текущее поле черт ячейкой под номером 1 из стори статс. Но перезапись поля черт данными из ячейки 1 стори статса, колдунским образом - не только перезаписывало поле черт, но еще и ячейку стори статса 0 (которая вообще в формулах этой функции не упоминалась там участвовало только поле черт и ячейка 1 а не 0… Но ее задело магией) куда я ранее сохранял поле черт изначальное. И в итог ячейка сори статса 0 становилась такой же как и 1 и как поле черт.
Вуду! Реальная магия вуду!
На выходных попробую пошаманить с хешем... Может получиться без разборки-сборки…
 
Последнее редактирование:

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
Листание?) Вроде звучит прикольно. Когда-то я так хотел поле черт расширять... но сейчас... Лишние мучения? не, спасибо.)))
Дискорд ведь заблокировали, так что я там не появлялся с месяц. Но там и правда есть несколько крутых программистов, самый крутой из них - Медь.))
А как работает листание обычного текста (квесты, записки, описание скиллов)? Разве там так сложно и сделано через массив?
Кстати… У тебя же в моде черты «Суккуб», «Лилит», «Демон Спермы», «Мазохизм», «Эксгибиционизм» - не переименованы? Я имею ввиду, не перевод, а названия внутри кода.
И они все еще есть на поле черт? Пусть и в других местах?
Я так, заранее прикидываю совместимость моих модов с твоим.
(И пжста, не трогай ячейки 00 и 08… Я листания как раз и изучаю заранее, чтоб организовать в будущем совместимость с модами, которые сожрут все поле черт…)
1730496452173.png

1730496468304.png

Не обращая внимание, на второй странице появились черты из Magic System, потому что в том моде сделано так, чтоб они проверяли свое наличие, и при отсутствии втыкались на свободное место поближе к родному месту. Страница поменялась, они увидели что в текущем поле черт их нету, и самовоткнулись на свои места. Потом будет пофикшено… И мое листание переедет в моды. И будет учитываться.
Ну если листание понадобится. Занять все поле черт - задача нетривиальная. Но ты может и справишься…
Так что да ячейки 00 и 08 не трогай.
Листание сделано как типа черта (две черты), в будущем бесплатная, взятие которой меняет страницу.
 
Последнее редактирование:

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Кстати… У тебя же в моде черты «Суккуб», «Лилит», «Демон Спермы», «Мазохизм», «Эксгибиционизм» - не переименованы? Я имею ввиду, не перевод, а названия внутри кода.
И они все еще есть на поле черт? Пусть и в других местах?
Я так, заранее прикидываю совместимость моих модов с твоим.
(И пжста, не трогай ячейки 00 и 08… Я листания как раз и изучаю заранее, чтоб организовать в будущем совместимость с модами, которые сожрут все поле черт…)
1730496452173.png

1730496468304.png

Не обращая внимание, на второй странице появились черты из Magic System, потому что в том моде сделано так, чтоб они проверяли свое наличие, и при отсутствии втыкались на свободное место поближе к родному месту. Страница поменялась, они увидели что в текущем поле черт их нету, и самовоткнулись на свои места. Потом будет пофикшено… И мое листание переедет в моды. И будет учитываться.
Ну если листание понадобится. Занять все поле черт - задача нетривиальная. Но ты может и справишься…
Так что да ячейки 00 и 08 не трогай.
Листание сделано как типа черта (две черты), в будущем бесплатная, взятие которой меняет страницу.
хм... на сколько я помню, названия ванильных черт Лоны я не менял в принципе, потому что, на них есть ссылки в коде из всяких других мест. Не хочу ничего сломать.
И да, мне все еще кажется, можно сделать все это гораздо проще -___-
Просто расширить LIST влево или вправо, так что он будет уходить за край экрана, а к кнопкам привязать координаты блока. Или вроде того.
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
хм... на сколько я помню, названия ванильных черт Лоны я не менял в принципе, потому что, на них есть ссылки в коде из всяких других мест. Не хочу ничего сломать.
И да, мне все еще кажется, можно сделать все это гораздо проще -___-
Просто расширить LIST влево или вправо, так что он будет уходить за край экрана, а к кнопкам привязать координаты блока. Или вроде того.
Может и можно. Но это потребует большего вмешательства. А это потенциально конфликтно. Я же пытаюсь обойтись функционалом добавления черт, и возможностью назначать черты или убирать их. А остальное - математика и работа с базовыми объектами руби. Строки, массивы, цифры. Чтоб было быстро и не тормозило.
А еще я хочу чтоб мое листание по итогу могло одинаковым кодом листать поле черт любого размера. То есть кто бы его как бы ни менял, его все равно будет листать. Чтобы оно могло листать и твое поле черт и обычное, или любое иное. А если я вмешаюсь в основу… Будет утеряна модульность и похерена совместимость.
У меня в модах дофига кода. Но def которые были перезаписаны - единицы. Все остальное - цепляется до или после игровых def, их вообще не меняя. И добавляет те или иные действия и события. Я даже черты в поле черт проставляю не путем добавления изменения самой загрузки TRAIT:LIST, а путем анализа его ячеек, и втыкания черт туда где есть место, в середине игры. Где бы это место ни было. Выбирается ближайшее к точке назначения, в идеале - сама точка назначения, но если там занято, то будет выбрана соседняя, если и там занято то другая соседняя, и так будет проверено все поле черт. Если осталось единственное свободное место где-то в углу, то черта встанет там. То есть, чтоб помешать моим чертам появиться в поле черт - нужно заполнить все поле черт. Все ради гибкости. Чтоб мод встал в одной сборке с любым другим модом, даже если их будет сотня. И будет работать и не мешать другим (если они не косячные и сделаны не хреново, и если, конечно, они не делают буквально противоположные вещи). (Ну……… это идеал. А он недостижим… Но я пытаюсь.)
 
Последнее редактирование:

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Может и можно. Но это потребует большего вмешательства. А это потенциально конфликтно. Я же пытаюсь обойтись функционалом добавления черт, и возможностью назначать черты или убирать их. А остальное - математика и работа с базовыми объектами руби. Строки, массивы, цифры. Чтоб было быстро и не тормозило.
А еще я хочу чтоб мое листание по итогу могло одинаковым кодом листать поле черт любого размера. То есть кто бы его как бы ни менял, его все равно будет листать. Чтобы оно могло листать и твое поле черт и обычное, или любое иное. А если я вмешаюсь в основу… Будет утеряна модульность и похерена совместимость.
У меня в модах дофига кода. Но def которые были перезаписаны - единицы. Все остальное - цепляется до или после игровых def, их вообще не меняя. И добавляет те или иные действия и события. Я даже черты в поле черт проставляю не путем добавления изменения самой загрузки TRAIT:LIST, а путем анализа его ячеек, и втыкания черт туда где есть место, в середине игры. Где бы это место ни было. Выбирается ближайшее к точке назначения, в идеале - сама точка назначения, но если там занято, то будет выбрана соседняя, если и там занято то другая соседняя, и так будет проверено все поле черт. Если осталось единственное свободное место где-то в углу, то черта встанет там. То есть, чтоб помешать моим чертам появиться в поле черт - нужно заполнить все поле черт. Все ради гибкости. Чтоб мод встал в одной сборке с любым другим модом, даже если их будет сотня. И будет работать и не мешать другим (если они не косячные и сделаны не хреново, и если, конечно, они не делают буквально противоположные вещи). (Ну……… это идеал. А он недостижим… Но я пытаюсь.)
Привет! Пытаюсь код написать, хочу упростить загрузку скриптов. Вот исходный:
Ruby:
$mod_load_script["Data/Batch/Action_CHSH_Masturbation.rb"]    = "ModScripts/_Mods/RolePlayS/Batch/Action_CHSH_Masturbation.rb"
$mod_load_script["Data/Batch/Command_Bath.rb"]                = "ModScripts/_Mods/RolePlayS/Batch/Command_Bath.rb"
$mod_load_script["Data/Batch/cuming_control.rb"]            = "ModScripts/_Mods/RolePlayS/Batch/cuming_control.rb"
$mod_load_script["Data/Batch/overcuming_control.rb"]        = "ModScripts/_Mods/RolePlayS/Batch/overcuming_control.rb"

но строк будет сотни, и я пытаюсь понять, как мне сканируя папку отделать имена файлов? Вроде делал что-то похожее уже но все равно не понимаю -___-

а, да, я помню про твой метод с загрузкой текста, но не хочу его использовать, во-первых потому половину не понимаю, и во-вторых, потому что ты его потом же вроде расширял на 3 страницы.))
 
Последнее редактирование:

AT_Sagor

Известный пользователь
Журналист
Автор модов
Регистрация
24.08.2019
Темы
102
Сообщения
383
Реакции
212
Возраст
35
AleDerXan AleDerXan, кончено, понимаю твою логику, но по-хорошему вообще бы перерисовать HUD и выделить там место для категорий или листать, как хотел.

Lazi Ness Lazi Ness, идея интересная, такое проворачивал на JS и PHP, скрипт для сканирования и автоматического добавления кода на основе результата, не то чтобы бы сложная задача, думаю даже для Ruby.

Вот читаю вас, даже порой появляется какое-то некое желание вернуться к программированию, но искра уже потухла. Даже не знай, стар что ли стал для всего этого, просто упиваюсь постным существованием в последние годы и медленно растекаюсь чёрной и липкой жижей. Чёрт побери, я же ни строчки кода уже более года не писал!
 
Сверху Снизу