XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Вам нужны новые native-функции?
Ура! wc3c наконец-то вышел из недельного дауна, и я сумел-таки скачать часть кода, о котором мне поведал Toadcoap (там было два архива – второй во время падения потерялся). Думаю, недостающие cpp-файлы я сумею восстановить самостоятельно.
Так вот: там описано, как можно добавлять к движку War’а свои собственные native-функции! Т.е., фактически, клепать к движку War’а свои плагины. Теперь все те доп. функции, о которых давно мечтали JASS’еры, можно реализовать в самом движке! Правда, помимо добавления самого плагина придётся ещё и модифицировать common.j (дополнив его именами+описаниями новых нативок и засовывая его модифицированную версию в MPQ), иначе тупой WorldEditor будет вылетать при проверке синтаксиса JASS-кода. И, конечно, всякие синтаксические проверки в сторонних JASS-редакторах (вроде JassShopPro) тоже перестанут работать.
А теперь решайте: есть ли смысл разбираться в этом коде? Если есть, то какие функции вы хотели бы видеть в таком плагине? Если вам это действительно нужно, то я постараюсь восстановить код и напишу соответствующий плагин (добавляющий указанные вами native-API).
Старый 06.12.2006, 13:15
p01nTT

offline
Опыт: 11,160
Активность:
Алексей смысл есть и очень большой. А вот насчёт функций даже не знаю... попробуй функцию изменения Base Damage у юнита в игре. Или HP в игре без добавления абилок. Хорошо бы было создать какой нибудь exeшник, где можно было самому добавлять native, то есть что ты делаешь,только как-нибудь по-проще
Старый 06.12.2006, 13:24
NETRAT

offline
Опыт: 83,712
Активность:
Ты сначала проверь насколько это возможно.
в JSP можно подключить левые коммоны
Если создать опрос, то 95% будут за

NETRAT добавил:
Ха, ха, даешь инвентарь одной функцией =)
Старый 06.12.2006, 13:38
J
expert
offline
Опыт: 48,447
Активность:
а почему не 100%?:):
Старый 06.12.2006, 13:38
NETRAT

offline
Опыт: 83,712
Активность:
Встречаются "доброжелатели" и критиканы

NETRAT добавил:
Вообще если так подумать, то можно сделать лоадер для вара / редактора, который будет делать все что нужно для работы таких плагинов - аттачить mpq с коммоном и добавлять куда нада функции. Я себе, правда, вообще не представляю как ты туда функции добавлять будешь - через dll или каким-нить хитровы* внедрением в память?
Старый 06.12.2006, 13:47
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
NETRAT: Подгрузкой DLL. War содержит спец. таблицу прототипов функций и их адресов. Туда вполне добавляются функции из сторонних DLL'ок - если, конечно, есть спец. загрузчик.
Старый 06.12.2006, 13:59
NETRAT

offline
Опыт: 83,712
Активность:
Так и подумал...
А что там за недостаточность кода?

NETRAT добавил:
Вообще, давно надо было это сделать =)
Старый 06.12.2006, 14:07
dk

offline
Опыт: 60,293
Активность:
Функции одназначно нужны! Непомешало бы расширить возможности невидимости, например сделать несколько ее уровней.
Старый 06.12.2006, 14:18
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Ммм... фукции нужны спору нет... но всем свои...Было бы лучше выложить SDK с описанием как это реализовать собственными руками...
ЗЫ. Наконец-то мать вашу... =)
Старый 06.12.2006, 15:28
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
exploder: Хорошо. Как только кончится эта неделя (и, соответственно, появится больше свободного времени), я разберусь с кодом и выложу что-то вроде описания (с примерами) как создавать собственные Native API. Как представлены разные объекты в памяти Warcraft'а, что передаётся вашим новым функциям в качестве аргументов (например, если тип аргумента - unit) и пр.
Вот только все примеры будут на C++ или ASM.
.
NETRAT: Система состоит из двух частей: загрузчик и сам dll-плагин. Так вот, ссылка на код загрузчика битая - работает только ссылка на код плагина. В принципе, этого вполне достаточно, т.к. сам exe загрузчика доступен и довольно мал по объёму. Можно пользоваться готовым загрузчиком, а можно (что я и сделаю) декомпилировать его.
Старый 06.12.2006, 16:08
NETRAT

offline
Опыт: 83,712
Активность:
Хотелось бы на C ибо более читаемо и удобно (да и потом, кто ж в асме шарит? - пару человек)
Еще можно написать письмо автору и спросить у него
Старый 06.12.2006, 16:15
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
Вот только все примеры будут на C++ или ASM.

Желательней на Си...

exploder добавил:
Ахахаха! Простые джассеры станут богами =)
Старый 06.12.2006, 17:02
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Автору уже написал. Кроме того, оставил соответствующий пост на форуме - теперь остаётся лишь дождаться ответа.
Старый 06.12.2006, 17:12
NETRAT

offline
Опыт: 83,712
Активность:
А простые кодеры?
Старый 06.12.2006, 17:19
DioD

offline
Опыт: 45,134
Активность:
эх я про это говорил очень давно, проблема в том, что измения среду вара мы добровольно прощаемся с мультиплеером и батлнетом
Старый 06.12.2006, 18:40
NECros88

offline
Опыт: 16,351
Активность:
Конечно надо =)
DioD верно подметил. Это нужно только для тех, кто не играет в сети. Но есть выход: ставить два вара - один нормальный, другой этот... как бы лучше его назвать... хм... ну короче ладно, в принципе смысл этого поста я думаю всем понятен =)
Старый 06.12.2006, 20:02
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Как вы думаете, за что я не люблю C++?
Смотрите:
Код:
#define ExtractTransferAddressPtr(base, offset) (void *)((unsigned char *)base + *(long *)((unsigned char *)base + offset) + offset + 4)
Я потратил почти 2 минуты, прежде чем понял, что делает этот макрос (который используется в коде примера для «извлечения» указателей на внутренние объекты движка War’а – юниты, строки, декорации и пр.).
И это ещё не самая сложная сишная конструкция ;).
Вот почему мне не нравится Си – программы на нём выглядят как-то некрасиво.
Старый 06.12.2006, 20:14
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
мультиплеером

А мультиплеер тут при чем? Он чо перестанет пахать?
Старый 06.12.2006, 20:21
DioD

offline
Опыт: 45,134
Активность:
десинк при парсе кода при подключении к игре
надо по мимо библиотек будет еще движок править
Старый 06.12.2006, 20:33
NETRAT

offline
Опыт: 83,712
Активность:
Алексей ничего страшного в этом макросе не увидел... явные приведения типов - эту проверку вообще можно отключить, но тогда за типами придется самому следить. Хотя, впрочем, автор макроса страдает определенной склонностью к мазохизму ...

NETRAT добавил:
Некрасиво? Однозначно и при этом (парадокс) гибко
Старый 07.12.2006, 01:02
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:22.