Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать dll библиотеку по готовому коду. 
:(
    Опции темы
kenet95
  Дата 30.8.2019, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Кто-нибудь может мне помочь? Нужно сделать dll библиотеку, но я совсем не разбираюсь в С++. Я пробовал сделать сам, но у меня не получилось.  smile 

Код

static BOOL DEMO_PRV_TakeItemFromInventory(D2Game* pGame, D2Unit* pUnit, D2Unit* pItem)
{
    D2Inventory* hInventory;
    if ((hInventory = pUnit->hInventory) == NULL)
        return FALSE;
    
    if (!UNIT_IS_ITEM(pItem) || pItem->eMode != ITEMMODE_INVENTORY)
        return FALSE;
    
    D2ItemData* pItemData;
    ASSERT(pItemData = pItem->pItemData);
    BYTE ePage = pItemData->ePage;
    
    ASSERT(D2RemoveItemFromInventory(hInventory, pItem) == pItem);

    if (ePage == INVENTORY_PAGE_PLAYER_INVENTORY)
        SITEM_AddOrRemoveBookCharges(pUnit, pItem, FALSE, TRUE);

    SITEM_RemoveItemStatsFromUnit(pUnit, pItem, FALSE, TRUE);
    if (ITEMS_CanActivateCharm(pItem, pUnit))
        SITEM_UpdateEquipment(pGame, pUnit, FALSE);

    pItemData->ePreviousPage = ePage;
    pItemData->ePage = INVENTORY_PAGE_NONE;
    pItem->dwUnitFlags &= ~UNITFLAG_SELECTABLE;
    UNITS_SetMode(pItem, ITEMMODE_CURSOR);
    
    pItemData->dwItemFlags |= ITEMFLAG_REMOVED;
                    
    if (SITEM_DoSocketsHaveContent(pItem))
        pItemData->dwItemFlags |= ITEMFLAG_RELOAD;
    
    pItemData->dwItemFlags &= ~ITEMFLAG_DISABLED;
    pItemData->dwCMDFlags |= ITEMCMD_INVENTORY_TAKE_ITEM;
    D2AddItemToInventoryUpdateList(hInventory, pItem);
    D2SetInventoryUpdateMessage(pUnit, TRUE);
    return TRUE;
}


Код

static void DEMO_PRV_MoveEntireInventoryToStash(D2Game* pGame, D2Unit* pPlayer)
{
    D2ItemData* pItemData;
    D2Unit* pItem = INV_INL_GetItemListByGrid(pPlayer->hInventory, INVENTORY_GRID_DEFAULT);
    
    while (pItemData = ITEMS_INL_GetIterator(pItem))
    {
        D2Unit* pNext = pItemData->pNextItemInPage;
        
        int nX;
        int nY;
        
        if (INV_INL_GetPosForItem(pPlayer->hInventory, pItem, INV_GetInventoryType(pPlayer, INVENTORY_PAGE_PLAYER_STASH, pGame->bExpansion), INVENTORY_PAGE_PLAYER_STASH, nX, nY))
        {
            if (DEMO_PRV_TakeItemFromInventory(pGame, pPlayer, pItem))
                ASSERT(SITEM_PutItemInInventory(pGame, pPlayer, pItem->dwID, INVENTORY_PAGE_PLAYER_STASH, nX, nY, FALSE, TRUE, NULL, NULL));
        }
        
        pItem = pNext;
    }
}

PM MAIL   Вверх
xvr
Дата 30.8.2019, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Это не 'готовый код', это какие то ошмётки без начала и конца  smile 

Цитата(kenet95 @  30.8.2019,  00:41 Найти цитируемый пост)
Кто-нибудь может мне помочь?

На этом уровне - только в Центре Помощи

PM MAIL   Вверх
kenet95
  Дата 30.8.2019, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Цитата(xvr @  30.8.2019,  14:29 Найти цитируемый пост)
Это не 'готовый код', это какие то ошмётки без начала и конца


Я не разбираюсь в С++, этот код мне нужен для одной игры, т.к. я немного занимаюсь моддингом. Неужели, из него так сложно сделать dll? Я думал, может нужно дописать пару команд вначале/в конце и готово. Или это очень всё сложно и никто не будет этим заниматься, и мне нет смысла просить о помощи?   smile 
PM MAIL   Вверх
xvr
Дата 30.8.2019, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Этого кода мало. В нём используются внешние определения, которых нет. 
Цитата(kenet95 @  30.8.2019,  17:59 Найти цитируемый пост)
этот код мне нужен для одной игры,

Судя по всему нужен SDK для создания плагинов от этой игры

Цитата(kenet95 @  30.8.2019,  17:59 Найти цитируемый пост)
 Или это очень всё сложно 

Это не сложно, просто этих кусков кода недостаточно.

PM MAIL   Вверх
kenet95
  Дата 30.8.2019, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Цитата(xvr @  30.8.2019,  18:34 Найти цитируемый пост)
Судя по всему нужен SDK для создания плагинов от этой игры


Что такое SDK я не знаю, если честно, но я нашел на форуме этой игры тему, где автор написал какие-то текстовики и заявлял, что это должно помочь в написании плагинов. Папка называется src. Это может помочь? (Это всё в прикрепленном архиве)

И еще всё, что я могу понять из кода, это D2Game, скорее всего это запрос к библиотеке D2Game.dll, которая нужна для запуска игры. На этом мои полномочия всё... Этого достаточно, чтобы сделать dll библиотеку по коду?

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  D2Template.zip 16,96 Kb
PM MAIL   Вверх
kenet95
  Дата 1.9.2019, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Такое еще нашел на форуме:

Цитата

Цитата

Also how did you make these plugins if the sdk requires private access which you don't have

You don't need the SDK for making new plugins. I've just studied how D2Mod loads the existing plugins and created my plugins from that. But I think the D2Mod SDK was created for use with the programming language C, but I have used HLA for creating all the plugins.


Не знаю, может это поможет кому-то сделать dll для меня smile 
PM MAIL   Вверх
kenet95
  Дата 2.9.2019, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



xvr, куда Вы пропали?.. Я без Вас точно не справлюсь  smile 

Это сообщение отредактировал(а) kenet95 - 3.9.2019, 14:48
PM MAIL   Вверх
xvr
Дата 2.9.2019, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kenet95 @  30.8.2019,  20:19 Найти цитируемый пост)
Что такое SDK я не знаю, если честно, но я нашел на форуме этой игры тему, где автор написал какие-то текстовики и заявлял, что это должно помочь в написании плагинов.

Может ему (автору) это и поможет, но в написании плагинов с нуля это точно не поможет.
Ищите подробные инструкции (с полным кодом, а не кусочками) по написанию плагинов

Цитата(kenet95 @  30.8.2019,  20:19 Найти цитируемый пост)
 Этого достаточно, чтобы сделать dll библиотеку по коду? 

Нет, увы

PM MAIL   Вверх
kenet95
  Дата 3.9.2019, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



xvr, Я пробовал спрашивать в дискорде, но мне не особо хотят объяснять, ведь я полный нуб в C++ (да и английский знаю посредственно). (Я написал, что Вы готовы помочь, но вам не хватает информации для создания dll).

Цитата
if he knows c ++ I think he should talk with us here not you
because he has basic knowledge about coding


Все, что я сам смог найти это такой гайд, но вряд ли даже его будет достаточно. Так же меня уверяли, что такая штука, как SDK не нужна.
P.S. Порой мне кажется, что для написания кастомных длл для этой игры нужны все знания в мире (и даже чуть больше).

Видимо, не судьба. В любом случае, спасибо Вам за попытку помочь.

Это сообщение отредактировал(а) kenet95 - 3.9.2019, 15:03

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Advanced_Code_Editing_Tutorial___Running_a_custom_external_DLL.doc 53,50 Kb
PM MAIL   Вверх
xvr
Дата 3.9.2019, 17:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Судя по коду и доке у вас там собрались хакеры, которые не имея оффициального SDK (видимо его или вообще нет, или можно получить только за отдельные деньги и по договорённости с производителем) методом грубого хака разломали потроха игры и выложили тулзу, которая позволяет их  (потроха) модифицировать. Такую мелочь, как структуры данных, с которыми эти самые модифицируемые потроха должны работать они не приложили (не хакерское это дело).

Цитата(kenet95 @  3.9.2019,  14:47 Найти цитируемый пост)
Так же меня уверяли, что такая штука, как SDK не нужна.

Если она есть, то весь этот сайт (где вас уверяли) не нужен.

Цитата(kenet95 @  3.9.2019,  14:47 Найти цитируемый пост)
но мне не особо хотят объяснять, ведь я полный нуб в C++ (да и английский знаю посредственно)

Боюсь, что бы воспользоваться этим всем нужны знания не только в С++, но и гораздо глубже

PM MAIL   Вверх
kenet95
  Дата 3.9.2019, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Цитата(xvr @  3.9.2019,  17:44 Найти цитируемый пост)
Если она есть, то весь этот сайт (где вас уверяли) не нужен.


Может быть я не так понял их. Мне написали такое:

Цитата

You need the D2ModSDK to properly make plugins for it. Its easier to just make a standalone Dll and have D2Mod or PlugY load it


Что такое D2Mod и PlugY я знаю (и как подключить к ним готовый dll). Может, можно как-то сделать этот самый standalone Dll без особых заморочек? Может из-за этих плагинов и не нужен SDK и все будет работать без него?

Edit: Нашел еще один Туториал, но этот еще и текстовиками (как в D2Template архиве) но уже с каким-то кодом. Может, по примеру получится сделать?

Это сообщение отредактировал(а) kenet95 - 3.9.2019, 18:20

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Sir_General_Tutorial.zip 49,88 Kb
PM MAIL   Вверх
xvr
Дата 4.9.2019, 13:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Они же вам написали чистым английским языком:

Цитата

You need the D2ModSDK to properly make plugins for it.


Перевожу - Вам нужен D2ModSDK что бы должным образом сделать плагин для него Вот этот самый SDK (D2ModSDK) вам и нужен

По поводу
Цитата

Its easier to just make a standalone Dll and have D2Mod or PlugY load it
 - тут говорится, что проще сделать отдельную dll и загрузить её через D2Mod or PlugY, но не говорится, что эту самую 'отдельную dll' можно сделать без D2ModSDK - он по прежнему нужен

Добавлено через 5 минут и 26 секунд
Посмотрел код - небольшой набор хаков для подключения к нескольким функциям в Diablo. Содержит очень небольшой кусочек SDK (скорее всего полученный методом реверс инжинеринга, по простому - хаком кода)

Добавлено через 7 минут и 10 секунд
Цитата(kenet95 @  3.9.2019,  17:52 Найти цитируемый пост)
Может из-за этих плагинов и не нужен SDK

SDK - это как раз та штука, с помощью которой делают dll плагинов. Для загрузки самих плагинов он конечно не нужен.

PM MAIL   Вверх
kenet95
  Дата 5.9.2019, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



xvr, хорошо, я понял. Больше не буду спорить по этому поводу.

Я по прежнему не знаю, что такое SDK (но я написал на всех известных мне форумах, что нужна такая штука, мб кто и поделится).

Но я тут еще нашел 2 таблицы, в которых куча какой-то информации (так же там внизу еще вкладки можно переключать). Все, что я знаю, это то, что 1.10f - это нужная мне версия игры.  smile  Эти таблицы не помогут?

И еще, я не совсем понимаю, что значит это сообщение. (Это из топика, где другой пользователь выложил несколько своих плагинов)

-Also how did you make these plugins if the sdk requires private access which you don't have?

-You don't need the SDK for making new plugins. I've just studied how D2Mod loads the existing plugins and created my plugins from that. But I think the D2Mod SDK was created for use with the programming language C, but I have used HLA for creating all the plugins.

(В особенности, что такое HLA)

Это сообщение отредактировал(а) kenet95 - 5.9.2019, 12:06

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Tables.zip 577,79 Kb
PM MAIL   Вверх
xvr
Дата 5.9.2019, 15:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kenet95 @  5.9.2019,  05:18 Найти цитируемый пост)
Я по прежнему не знаю, что такое SDK

Software Development Kit - набор для разработки программ (в вашем случае плагинов) под какую то систему. Обычно состоит из заголовочных файлов (*.h) и документации (а возможно и каких то исходных файлов с кусочками программ). Всё это загоняется в какую нибудь среду разработки (типа VS), добавляются ваши исходные коды, компилируется - получается dll

Цитата(kenet95 @  5.9.2019,  05:18 Найти цитируемый пост)
I've just studied how D2Mod loads the existing plugins and created my plugins from that.

Он разломал (с помощью дебагера, насколько я могу судить) как грузятся уже собранные плагины, и на основании этой информации написал свой SDK (если это можно так назвать)

Цитата(kenet95 @  5.9.2019,  05:18 Найти цитируемый пост)
(В особенности, что такое HLA)

Это надо  у него спросить (возможно Ассемблер с какими нибудь макросами - High Level Assembler).

Добавлено через 8 минут и 21 секунду
Цитата(kenet95 @  5.9.2019,  05:18 Найти цитируемый пост)
Но я тут еще нашел 2 таблицы, в которых куча какой-то информации 

В принципе это большая часть того, что нужно. Там структуры данных и процедуры. Их в принципе можно в нормальный вид перевести (в С заголовочные файлы)
Осталось описание того, какие функции что делают

PM MAIL   Вверх
kenet95
  Дата 6.9.2019, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.8.2019

Репутация: нет
Всего: нет



Невероятными усилиями я еще смог и такое откопать... Даже если это не поможет, то мои полномочия точно всё smile 

Все, что я понял из тех файлов и папок:
Samples
BooksOfLore, CustomTBL, ExtLvl, MercMod, StatFix и Utility - это, возможно, исходники уже готовых плагинов. (По крайней мере я использую часть из них в виде dll)
MyMod - не уверен, возможно заготовка для нового плагина.

Source
Там названия папок идентичны названию dll, которые нужны для запуска самой игры.


Это сообщение отредактировал(а) kenet95 - 6.9.2019, 02:53

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  D2ModSDK.rar 189,47 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1866 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.