Логин:
Пароль:
Настройки
http://lfforever.ru/design/black.css http://lfforever.ru/design/ds_dw.css http://lfforever.ru/design/xmas.css
Присоединяйся к каналу LFF в Discord!
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Фан Форум для LF'айтеров » Игрострой » Модострой LF2 » Neora 2.09 - (PDK + DLL)
Neora 2.09 - (PDK + DLL)
17.10.14 01:46 | #1

Репутация: 416
Постов: 8072

Alternative english version of topic on LFE
Alternative english version of topic on Official LF2 Forums


Название Neora было дано из Neo (новый) и Ra (от rarara.dll), это по сути проект состоящий из DLL-аддона для движка PDK, который нынче куда популярнее чистого старого dll на оригинал из-за своих крайне продвинутых фич типа поддержки png, загрузки перед боем и т.д.. Но чего-то от dll нам всё-таки не хватает. А я недавно сел заниматься модами. И мне приспичило. Такая история :)
Neora - Гибрид Alkarter's Exe и Silva's and folks DLL

Эта основа для мода совместима с уже существующими модами на PDK 1.2+, однако начиная с Neora 2.00+ некоторые атрибуты и тэги изменены или переименованы, поэтому если вы сидите не на старой версии - потребуется сделать несколько замен текста в коде.

Идеи и Пожелания находятся здесь!
















艾爾卡特 (Alkarter) - разработчик движка, который на LFF был именован как PDK
Drakken - Создание DLL-прототипа с патчингом в реальном времени
Lord Silva - модификация DLL под нужды LF2
Archer-Dante - адаптация DLL для работы в PDK и добавление новых функций
Surik - информационная поддержка по разработке



Neora 2.09  | Скачать | Download 



Прикрепленные файлы: 8845048.png (39.5 Kb) · 7262652.png (25.2 Kb) · 3681975.png (28.1 Kb) · 1940849.png (30.1 Kb) · 6812581.png (27.8 Kb)
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
03.11.14 21:27 | #21

Репутация: 416
Постов: 8072
Код
.386     
.model flat, stdcall     

option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\Shlwapi.lib

.data     
       MsgBoxCaption  db "blabla",0     
       MsgBoxText     db "Файл конфигурации сброшен",0     
       TweakName    db "tweak.cfg",0
       Overlap OVERLAPPED <NULL,NULL,0,NULL,NULL>

.data?
       hFile    dd ?
       hMemory    dd ?
       pMemory    dd ?
       SizeOfFile  DWORD ?
           
           
.code     

Main:     

            
        Invoke    CreateFile, ADDR TweakName,\ ;создание файла с именем из TweakName
          GENERIC_READ or GENERIC_WRITE ,\ ;разрешаем запись и считывание
             FILE_SHARE_READ or FILE_SHARE_WRITE,\ ;разрешаем доступ к файлу процессам
             NULL,OPEN_ALWAYS,\ ;создает файл, если такого ещё нету или открывает существующий
             FILE_FLAG_OVERLAPPED,\ ;разрешение на асинхронную работу с файлом
             NULL     
        mov hFile, eax ;записывает начальную область памяти в hFile, обычно это 64h (100)
     cmp eax, INVALID_HANDLE_VALUE ;но если там что-то вроде FFFFFFF (равно -1), то файл уже есть
        je exit ;тогда пропускаем запись в файл
            
        invoke GlobalAlloc,\ ; выделение памяти
         GMEM_MOVEABLE or GMEM_ZEROINIT,\ ;возвращает адрес где находится выделенная память     
         100 ;выделение 100 (64h) памяти.
        mov  hMemory,eax ; помещаем возвращаемое значение в hMemory
            
        invoke GlobalLock,hMemory ;создает указатель на hMemory область памяти
        mov  pMemory,eax ;помещает этот указатель в pMemory
            
        Invoke  MessageBoxA,\ ;Сообщение об успешном создании файла
          NULL, ADDR MsgBoxText,\ ;Текст сообщения
          ADDR MsgBoxCaption, MB_OK ;Заголовок окна сообщения
            
            
            
        invoke ReadFile,hFile,\ ;считывает файл
          pMemory,\ ;вставляем указатель, куда будет считываться
          10,\ ; максимальное чисто байтов для считывания
          ADDR SizeOfFile,\  ; указатель на переменную, которая будет использована для синхронных операций
          addr Overlap ;Указатель на конструкцию OVERLAPPED, для асинхронных операций.
              
     cmp dword ptr ds:[SizeOfFile],0 ;проверяем, что файл не пустой
     jnz exit ; Если там уже что-то есть - пропускаем запись туда чего-либо
         
     lea edx, dword ptr ds: [pMemory]; Извлекаем из указателя pMemory настоящий адрес - hMemory, пихаем его в EDX
     mov edx,dword ptr ds: [edx]; Берем значение из адреса  [edx]и помещаем в регистр edx уже само значение~
     mov dword ptr ds:[edx],10 ; записываем в адрес  [edx]значение 10 (0Ah) (ЗАЧЕМ?!)
         
     invoke WriteFile,hFile,\ ;над каким файлом паримся
       pMemory,\ ;указатель на область, где лежит инфа, которую пишем в файл
       10,\ ; количество байт, которое будет записано
       ADDR SizeOfFile,\ ; указатель на переменную, которая будет использована для синхронных операций
       addr Overlap ;Указатель на конструкцию OVERLAPPED, для асинхронных операций.

        jmp exit
            
exit:

     Invoke  ExitProcess, NULL
            
end Main


Вашу ж дивизию. Чтобы хоть какой-то сдвиг в своем ступоре и понимании WinAPI сделать, пришлось достать старый код Сильвы от Read-Write, рыться в MSDN Микрострафа, и разбирая адские дебри по справочникам, комментировать каждую строчку кода, чтобы хоть как-то понять что происходит в этом кругу преисподнии.

Игра:
Угадай по коду, какой фигней страдает Арчи~

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
03.11.14 23:26 | #22

Репутация: 165
Постов: 672
Archer-Dante, вытаскиваешь ресурсы?
03.11.14 23:36 | #23

Репутация: 416
Постов: 8072
Это правда похоже на вытаскивание ресурсов? ;D

ЗЫ. Я думаю, что следующая версия будет не сразу, но будет более глобальная. Т.к. 0.04 стабильная в работе, торопиться некуда.
Пытаюсь сделать CFG-управление длл-кой. То есть конфигурировать игру без ковыряния самой длл. Что из этого получится - увидим. Хотя бы управление размером окна точно надо в этот файл вынести.
Это чтобы даже совсем новичок в ЛФ-модинге и полный ноль в АСМе мог пользоваться возможностями DLL, настраивать без использования компиляторов, получать удобный инструментарий. Максимум что потребуется - почитать инструкцию к конфигу.

Но это всё в процессе. Я почти весь день убил на изучение WinAPI работы в среде MASM и его функций. До сих пор метаюсь в разных догадках и заморочках~

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
03.11.14 23:59 | #24

Репутация: 122
Постов: 854
Цитата Archer-Dante ()
Игра:
Угадай по коду, какой фигней страдает Арчи~

лимит объектов

04.11.14 00:10 | #25

Репутация: 487
Постов: 3434
Цитата zapashok ()
лимит объектов
Да не. Скорее всего подгрузка параметров для длл из текстового файла.

04.11.14 11:02 | #26

Репутация: 416
Постов: 8072
Функция записи работает исправно в общем-то.
А вот над считыванием+парсингом голову поломать неплохо приходится.
Расписал план работы программы, чтобы не растеряться


[ Маленький Фриз говорит: это сообщение было отредактировано!]
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
06.11.14 21:56 | #27

Репутация: 416
Постов: 8072
Всем привет, ребята~
Всю тему с тем, что нашел с ассемблерном коде PDK 1.2 я перенес в таблицу. А именно Гугло-таблицу. Теперь все новые находки буду вводить сразу же туда, а старую тему удалил.
Если то-то найдете сами - сообщайте, тоже внесу в таблицу.
Пока там немного данных, всё будет на 1-й странице. Если накопится чего - раскидаю на несколько.

Там сейчас всё на английском, но комментариев не так уж и много. Поэтому если будут проблемы с английским - могу накидать русскоязычные комментарии.
Ну и там можно ещё свои комментарии оставлять - правый клик на ячейку - комментировать.

Таблица "Листинга и Реверсинга Ассемблера" для LF2~PDK
- Клац Google Tables

Приятного пользования. beer

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
07.11.14 13:37 | #28

Репутация: 165
Постов: 672
Пожелание: убрать погрешность в координатах при призыве в режиме стадий.
07.11.14 15:41 | #29

Репутация: 487
Постов: 3434
Пожелание: иметь возможность регулировать громкость музыки.
08.11.14 22:00 | #30

Репутация: 416
Постов: 8072

Прикрепленные файлы: 4245019.jpg (26.4 Kb)
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
22.11.14 11:52 | #31

Репутация: 487
Постов: 3434
В ПДК есть одна хрень, которая порой бесит.
Когда прыгаешь влево/вправо, разворачиваешься в прыжке и после приземления делаешь дэш (при этом жмёшь только клавишу прыжка, без стрелок), то в ПДК дэш делается в ту сторону, куда смотрит персонаж. В оригинале же дэш по дефолту идёт в сторону предыдущего прыжка!
То есть в ПДК нельзя просто так взять и сделать деш спиной.
Так вот, Archer-Dante, в Неорке эту особенность можно устранить?

22.11.14 12:19 | #32

Репутация: 416
Постов: 8072
Устранить и поменять можно всё, если знаешь список адресов, где это происходит всё. Рассчеты, вычисления и чтение\запись дампа. Без адресов это пальцем в небо.
Даже файлы дат подгружаются целиком и полностью в дамп. По этой причине оригинальный лф2 сначала все дат файлы, а потом с ними работал, а на эвенте запашка нашли баг с вылетом при трансформации Louis в Louis EX, т.к. загрузка уже не целиком происходит

Поэтому нужно искать всё с максимальной точностью. Иначе мы наделаем багов больше, чем сам Алькартер допустил, потому что, например, посчитал какие-то куски кода странными и ненужными, а теперь вот геймеры находят эти изменения как баги (с одной стороны, а с другой это ведь просто изменения механики).
И процедура довольно непростая. Скорее всего нужно сохранение изначального направления в дамп, чтобы игра смогла его использовать для дэша потом.
Из-за этого нужно адреса искать не только на ПДК, но и оригинал, чтобы найти отличия в методах.

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
26.11.14 22:59 | #33

Репутация: 487
Постов: 3434
Мда, искать такое - как иголку в стоге сена.
Хоть и такой дэш непривычен, но есть свой плюс: с таким изменением игра требует более осознанной игры.

И новое пожелание:: чтобы после start game курсор не скрывался, а был виден как в оригинале.
Вполне можно понять, для чего Алик его стал скрывать, но всё-таки есть в этом некий пользовательский дискомфорт.
Надеюсь, это не так закопано, как направление дэша.

26.11.14 23:19 | #34

Репутация: 416
Постов: 8072
А зачем курсор после Start Game, если дальше управление с клавы идет?
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
26.11.14 23:24 | #35

Репутация: 487
Постов: 3434
На крестик родимый кликнуть :'(
27.11.14 02:28 | #36

Репутация: 416
Постов: 8072
Хардкорное выключение: Alt+F4

p.s.
учту эти пожелания, конечно, но искать вряд ли буду, скорее просто обращу особое внимание, если наткнусь на что-то из списка. Но найти специально многие вещи не представляется простым делом. Всё равно часто натыкаешься на что-то интересное, что даже не искал~

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
09.12.14 14:44 | #37

Репутация: 416
Постов: 8072
Версия 0.05

- Переписан код для управления регенерациями Здоровья (HP) и Маны (MP) с привязкой к ID. Демонстрационно-увеличенные значения применены к ID 55.
- (FIX!) Исправлено отсутствие удвоенной регенерации MP у Julian и Firzen от PDK!


Кроме того расширенное окно LF2 по умолчанию выключено. Можно включить это по желанию.
Функция регенерации HP сделана Espada_55, добавлен в титры!
За указание на баг PDK с регенерацией маны у боссов спасибо daedr

Приятного пользования!

Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
10.12.14 02:56 | #38

Репутация: 416
Постов: 8072
Научно-фантастическая минутка, заметки из моего журнала



Тэг "объекта защиты" в PDK. Если объект умирает - стадия проигрывается.
Он был объявлен Алькартером.



Тэг "прозрачности". Кажется, именно про него была речь, когда Алькартер рассказывал про возможность сделать прозрачный спрайты на уровне движка, если используется PNG.

А теперь горяченькое!



Тэг "Join_reserve:". Нигде не упоминался, но догадаться для чего он не трудно.





3 тэга, о которых нигде ничего не сказано, но они есть.
"movie" , "riddle" и "choose"
Интересно, для чего они, и работают ли в действительности?

PDK таит в себе много возможностей, о которых нигде не говорилось, эти тайны зарыты очень глубоко, что даже черный властелин позавидует этой глубине! >:3

Но одну маленькую тайну я всё же могу поведать: эти 3 тэга являются частью для Stage.dat файлов :3

И на сладенькое:


Атрибуты Poison, Weak, Manacle

Прикрепленные файлы: 6750788.png (12.0 Kb) · 7733644.png (11.3 Kb) · 7405516.png (21.5 Kb) · 8361220.png (14.0 Kb) · 8438369.png (15.5 Kb)
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
11.12.14 03:48 | #39

Репутация: 416
Постов: 8072
Ещё пачка всего


Прикрепленные файлы: 0516711.png (16.9 Kb) · 5078733.png (14.0 Kb) · 4998061.png (11.4 Kb) · 0627122.png (19.8 Kb) · 5616709.png (26.4 Kb) · 6194968.png (25.4 Kb) · 2439186.png (25.4 Kb) · 6338905.png (32.0 Kb) · 8267003.png (37.3 Kb) · 0232323.png (24.8 Kb)
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
11.12.14 03:56 | #40

Репутация: 416
Постов: 8072
И ещё


Прикрепленные файлы: 1257620.png (12.5 Kb) · 3880397.png (10.4 Kb) · 7800173.png (11.4 Kb) · 1254316.png (27.5 Kb) · 3499603.png (7.2 Kb)
Coding in Assembly requires a mix of:
80% of brain, passion, intuition, creativity
10% of programming skills
10% of tan levels in your blood.
Фан Форум для LF'айтеров » Игрострой » Модострой LF2 » Neora 2.09 - (PDK + DLL)
Поиск: