Current time: 27.11.2024, 06:50 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Авторам плагинов
» Заметки по ERA API
Author Message
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #8

(19.11.2020 23:20)Berserker Wrote:  То, как работает HD (через двойной указатель) — гораздо безопаснее. И HD-мод не расширяет структуру. Ему не нужен RedirectMemoryBlock.

Ну HD-мод видит перемещённые структуры от hota.dll, где много чего наменяли, и перемещённые данные воговского кода независимо от версии вога, в общем это вполне универсальное решение. Ну а мне откуда знать, что автор плагина сделал RedirectMemoryBlock? Авторов ведь палкой не заставишь делать в коде RedirectMemoryBlock (программисты в основном одни лентяи).



(19.11.2020 23:20)Berserker Wrote:  Если я берусь использовать в коде таблицу, то считаю, что навыки/монстров/тексты/героев кто-то наверняка можешь расширить. Или правильнее было бы использовать фиксированные адреса и писать, что у людей просто нерабочие плагины? Spiteful

Вот работало бы без перекомпиляции плагинов - другое дело. Вот если например завтра появится плагин на новые типы местности с RedirectMemoryBlock, что ж делать с плагинами, авторы которых и в самых страшных снах не могли представить, что кто-то увеличит в игре количество почв и что там надо было ставить GetAddress, когда ещё никто об этом не знал? Исходники давно утеряны или автору давно пофигу на моддинг. Устаревший плагин так и останется устаревшим и не будет работать.


(19.11.2020 23:29)Berserker Wrote:  А теперь представьте, что вы написали 10 плагинов и ушли на пенсию. Чтобы сделать с ними совместимость, мне достаточно в пару мест добавить GetRealAddr в ранее неучтённых указателях. Как и в любом актуальном коде. Но если ваши плагины сами никогда не уведомляют о расширенных структурах и не пользуются GetRealAddr, то беда.

Если так сильно нужен GetRealAddr в UN:C например, то определение адресов структур можно добавить в саму ЭРУ, не перекладывая это на плечи плагинописцев. Можно даже сделать отдельным плагином, который укажет ЭРЕ о всех перемещённых структурах.

(19.11.2020 23:29)Berserker Wrote:  Такой подход я применяю пока для определения лимита существ, но стоит какому-нибудь majaczek пропатчить код по данному адресу…Вы поняли. То, о чём извещено явно, можно явно же и узнать.

Бинарные патчи хороши для одного глобального мода типа MoP и являются абсолютным злом на платформе ERA (Тифон 3.хх тоже грешен небольшим количеством бинарных патчей, скопированных с MoP, которые было просто лень преобразовывать в отдельные функции). Никто не застрахован и от перекрывающих друг друга хуков, а если их накапливается 100500 штук на era.exe, то любой программист в них утонет и никакая база уже не поможет.

(19.11.2020 23:29)Berserker Wrote:  Вариант HD-мода тоже неплох, но требует искать всегда такие неизменные участки кода (которые часто не выравнены) и надеяться, что там никто команду не пропатчил с полной заменой логики. У каждого разработчика будет свой участок кода, из которого он будет считывать указатель, что повышает хрупкость всей системы.

Да, только так. Это в MoP сильно изменён код игры, что ни HD-мод, ни ERA никогда там не смогут запуститься (и с каждой новой версией MoP тамошний код мутирует ещё сильнее). В ERA ж - только отслеживать чужой код и делать соответствующие правки у себя в плагине. И больше использовать события эры, где это возможно.

Да и самих плагинов, расширяющих структуры, очень мало. У меня специально скомпилировано всё в одной dll, чтобы не мучится с адресацией перенесённых структур на разных dll. Для поддержки новых героев, например, придётся поглотить плагин Dwellings.dll, как раз из-за проблемы с адресацией. И т.д.
20.11.2020 00:58
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Авторам плагинов - Berserker - 19.11.2020, 17:39
RE: Авторам плагинов - XEPOMAHT - 19.11.2020, 18:40
RE: Авторам плагинов - Berserker - 19.11.2020, 19:12
RE: Авторам плагинов - XEPOMAHT - 19.11.2020, 20:38
RE: Авторам плагинов - feanor - 19.11.2020, 22:58
RE: Авторам плагинов - Berserker - 19.11.2020, 23:20
RE: Авторам плагинов - Berserker - 19.11.2020, 23:29
RE: Авторам плагинов - XEPOMAHT - 20.11.2020 00:58
RE: Авторам плагинов - Berserker - 20.11.2020, 01:15
RE: Авторам плагинов - feanor - 20.11.2020, 01:54
RE: Авторам плагинов - Berserker - 20.11.2020, 02:41
RE: Авторам плагинов - feanor - 20.11.2020, 13:04
RE: Авторам плагинов - XEPOMAHT - 20.11.2020, 13:21
RE: Авторам плагинов - Berserker - 20.11.2020, 17:39

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group