Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Модификации ядра (http://mangos.ytdb.ru/forumdisplay.php?f=51)
-   -   Археология и всё что с ней связано (http://mangos.ytdb.ru/showthread.php?t=7238)

Dubstep 20.07.2013 00:17

Археология и всё что с ней связано
 
Доброго времени суток. Ребята кто нибудь копался в данном направлении? Удалось пока найти 2 опкода которые каким то образом связаны :) и пару дбц. Пока интересно как оно отображает на карте точки.

зы. что то тут вообще у вас скучно :(

ZGN 20.07.2013 00:36

Можно снифануть!)

Amaru 20.07.2013 18:24

Клиент 4.3.4?

Код:

enum ArchaeologyBranches
{
    ARCHAEOLOGY_BRANCH_DWARF        = 1,
    ARCHAEOLOGY_BRANCH_DRAENEI      = 2,
    ARCHAEOLOGY_BRANCH_FOSSIL      = 3,
    ARCHAEOLOGY_BRANCH_NIGHT_ELF    = 4,
    ARCHAEOLOGY_BRANCH_NERUBIAN    = 5,
    ARCHAEOLOGY_BRANCH_ORC          = 6,
    ARCHAEOLOGY_BRANCH_TOLVIR      = 7,
    ARCHAEOLOGY_BRANCH_TROLL        = 8,
    ARCHAEOLOGY_BRANCH_VRYKUL      = 27,
    ARCHAEOLOGY_BRANCH_OTHER        = 29,
};

struct ResearchBranchEntry
{
    uint32      ID;                                        // 0
    DBCString  name;                                      // 1
    //uint32    FieldID;                                    // 2
    uint32      currency;                                  // 3
    //char*    icon;                                      // 4
    uint32      specItemId;                                // 5
};

struct ResearchProjectEntry
{
    uint32      ID;                                        // 0
    DBCString  name;                                      // 1
    DBCString  description;                                // 2
    uint32      rare;                                      // 3
    uint32      branchId;                                  // 4
    uint32      spellId;                                    // 5
    uint32      Complexity;                                // 6
    //char*    iconPath;                                  // 7
    uint32      req_currency_amt;                          // 8

    bool IsVaid() const
    {
        return branchId != ARCHAEOLOGY_BRANCH_OTHER;
    }
};

struct ResearchSiteEntry
{
    uint32 ID;                                              // 0
    uint32 mapId;                                          // 1
    uint32 POIid;                                          // 2
    DBCString areaName;                                    // 3
    //uint32 flags;                                        // 4 all entries have same flags

    bool IsValid() const
    {
        return ID != 140 && // template
            ID != 142 &&    // template
            ID != 161 &&    // template
            ID != 471 &&    // vashj'ir
            ID != 473 &&    // vashj'ir
            ID != 475;      // vashj'ir
    }
};

PLAYER_FIELD_RESEARCHING_1 - сюда кладутся текущие исследуемые проекты, значение - ID из ResearchProject.dbc, размер - 2 байта. Размер 4 * 8 = 32 байта, т.е. 16 проектов, но реально используется только 9 - количество используемых бранчей из ResearchBranch.dbc, отображает прокты в интерфейсе

PLAYER_FIELD_RESERACH_SITE_1 - места текущих раскопок, 2 байта, значение из ResearchSite.dbc. Длина 32 байта, все используются. Отображает на карте точки.

CMSG_REQUEST_RESEARCH_HISTORY - 0x3306
пустой пакет

SMSG_RESEARCH_SETUP_HISTORY - 0x10B6
ответ сервера на предыдущий опкод, содержит информацию о завершенных исследованиях - количество каждого из собранных артифактов и дату последней сборки

SMSG_RESEARCH_COMPLETE - 0x35A6
три 4-байтовых числа, одно из них - бранч, остальные - неизвестно

Dubstep 21.07.2013 13:23

да, 4.3.4. спасибо за информацию. По какому принципу бранчи должны активироваться?

Amaru 21.07.2013 16:04

Может ты имел в виду, по какому принципу места раскопок генерируются?
Рандомно, в зависимости от скилла, по 4 на материк.
Аутленд с 300, Нортренд с 375, Ульдум, Хиджал, Сумеречное Нагорье с 450.

Dubstep 21.07.2013 16:10

Может не так написал. Сами иконки(Тролли, Дварфы и тп).
Сейчас их так активировал: SetUInt32Value(PLAYER_FIELD_RESEARCHING_1 + 5, 215);
Как я понимаю зависит от скилла активация их

За точки пока не берусь, не сильно представляю как там взаимодействовать.

Цитата:

Сообщение от Dubstep (Сообщение 31668)
Может не так написал. Сами иконки(Тролли, Дварфы и тп).
Сейчас их так активировал: SetUInt32Value(PLAYER_FIELD_RESEARCHING_1 + 5, 215);
Как я понимаю зависит от скилла активация их

За точки пока не берусь, не сильно представляю как там взаимодействовать.

с этим вроде разобрался, открываются новые расы при повышении скила.

Что происходит с проектом когда учишь его? К примеру открываю троллей, собрал его, на месте его появится опять случайный?

Amaru 21.07.2013 20:53

Цитата:

Сообщение от Dubstep (Сообщение 31670)
с этим вроде разобрался, открываются новые расы при повышении скила.

Что происходит с проектом когда учишь его? К примеру открываю троллей, собрал его, на месте его появится опять случайный?

Да. Но нужно учитывать, что "редкие" артефакты можно собрать только 1 раз.

Добавлено через 4 минуты
Цитата:

Сообщение от Dubstep (Сообщение 31668)
Может не так написал. Сами иконки(Тролли, Дварфы и тп).
Сейчас их так активировал: SetUInt32Value(PLAYER_FIELD_RESEARCHING_1 + 5, 215);
Как я понимаю зависит от скилла активация их

За точки пока не берусь, не сильно представляю как там взаимодействовать.

Иконки активируются если в PLAYER_FIELD_RESEARCHING_1 есть соответствующий расе проект, на офе проект добавляется когда первый раз "копнули" место раскопок.

PLAYER_FIELD_RESEARCHING_1 - последовательность по 2 байта, с ними нужно работать так:
Код:

for (uint32 i = 0; i < MAX_RESEARCH_PROJECTS; ++i)
    SetUInt16Value(PLAYER_FIELD_RESEARCHING_1 + i / 2, i % 2, projectId);


Dubstep 21.07.2013 21:19

Как я понимаю хранить историю для SMSG_RESEARCH_SETUP_HISTORY нужно в табличках?
SMSG_RESEARCH_COMPLETE после раскопок или после сбора артефакта отправляется?

буду благодарен если скажите ещё для них сабы :)

Amaru 21.07.2013 22:45

Цитата:

Сообщение от Dubstep (Сообщение 31673)
Как я понимаю хранить историю для SMSG_RESEARCH_SETUP_HISTORY нужно в табличках?

да
Цитата:

SMSG_RESEARCH_COMPLETE после раскопок или после сбора артефакта отправляется?
после сбора
Цитата:

буду благодарен если скажите ещё для них сабы :)
CMSG_REQUEST_RESEARCH_HISTORY - 0x3306
6704A0

SMSG_RESEARCH_SETUP_HISTORY - 0x10B6
9F7A00 6E9370

SMSG_RESEARCH_COMPLETE - 0x35A6
9F7A70 6AD080

Dubstep 23.07.2013 21:53

Опять добрался до запила :)

Вообщем так получается:
Учу профу, она мне генерирует точки и тут сразу вопрос:
Она мне генерит только в калимдоре и восточном королевстве? Или только в калимдоре или в восточном королевстве.

Далее сами точки, прилетаю на место, и вот тут вопрос, координаты точек где то хранятся? чтобы можно было прибор ставить с красным, жёлтым или зелёным индикатором
И как отсеить места где можно капнуть только 1 раз, т.е. может где то в дбц есть эти значения. Неужели всё это надо хранить в базе?

Amaru 24.07.2013 10:04

Цитата:

Сообщение от Dubstep (Сообщение 31675)
Опять добрался до запила :)

Вообщем так получается:
Учу профу, она мне генерирует точки и тут сразу вопрос:
Она мне генерит только в калимдоре и восточном королевстве? Или только в калимдоре или в восточном королевстве.

Далее сами точки, прилетаю на место, и вот тут вопрос, координаты точек где то хранятся? чтобы можно было прибор ставить с красным, жёлтым или зелёным индикатором
И как отсеить места где можно капнуть только 1 раз, т.е. может где то в дбц есть эти значения. Неужели всё это надо хранить в базе?

Она генерит по 4 точки на каждом континенте. Если скила для континента не хватает, то не генерит.

На офе для каждого места раскопок фиксированное количество мест, где лежат артефакты, но не менее 3, в к клиенте они нигде не прописаны. В каждом месте за раз находится 3 артефакта.

Amaru 24.07.2013 10:20

Точки можно спарсить с вовхеда, то в игре их нужно отсеять на предмет принадлежания к месту раскопок. По хорошему когда игрок начинает копать надо тоже проверять где он находиться.
Это можно сделать с помощью алгоритма проверки принадлежания точки многоугольнику. Каждое место раскопок - многоугольник, его айди - POIid из ResearchSite.dbc. Координаты точек лежат в QuestPOIPoint.dbc.

blackmanos 24.07.2013 18:04

А кто-нибудь знает в пандах ничего не менялось со структурой данных в
PLAYER_FIELD_RESEARCHING_1
PLAYER_FIELD_RESERACH_SITE_1

Amaru 24.07.2013 18:26

PLAYER_FIELD_RESERACH_SITE_1
этого в пандах нет

blackmanos 24.07.2013 21:50

Похоже в динамик перекинули, спс.

Amaru 25.07.2013 20:41

оно теперь в PLAYER_DYNAMIC_FIELD_RESEARCH_SITES

blackmanos 30.07.2013 10:20

а данные каким образом теперь отравляются? Вернее номера точек для раскопок

SeT 28.03.2014 03:10

Кто-нибудь разобрался с показом точек в Пандах?
Решение в лоб
Код:

for (uint32 count = 0; count < 16; ++count)
    SetDynamicUInt32Value(PLAYER_DYNAMIC_FIELD_RESEARCH_SITES, count, id);

Не работает =(

Amaru 28.03.2014 08:52

Цитата:

Сообщение от SeT (Сообщение 32609)
Кто-нибудь разобрался с показом точек в Пандах?
Решение в лоб
Код:

for (uint32 count = 0; count < 16; ++count)
    SetDynamicUInt32Value(PLAYER_DYNAMIC_FIELD_RESEARCH_SITES, count, id);

Не работает =(

Значит динамик филды неправильно реализованы

SeT 28.03.2014 15:18

Цитата:

Сообщение от Amaru (Сообщение 32610)
Значит динамик филды неправильно реализованы

Для итемов ITEM_DYNAMIC_FIELD_MODIFIERS нормально работает (показывает когда предмет перекован). Может значение PLAYER_DYNAMIC_FIELD_RESEARCH_SITES не правильное? Там нужно брать PLAYER_END или нет? Во всех дампах вижу что учитывается либо UNIT_END либо PLAYER_END.

Amaru 28.03.2014 16:30

в 5.4.1 так
Код:

enum EObjectDynamicFields
{
    OBJECT_DYNAMIC_END                              = 0x0,
};

enum EUnitDynamicFields
{
    UNIT_DYNAMIC_PASSIVE_SPELLS                      = OBJECT_DYNAMIC_END + 0x0, // Size: 0x1
    UNIT_DYNAMIC_WORLD_EFFECTS                      = OBJECT_DYNAMIC_END + 0x1, // Size: 0x1
    UNIT_DYNAMIC_END                                = OBJECT_DYNAMIC_END + 0x2,
};

enum EPlayerDynamicFields
{
    PLAYER_DYNAMIC_RESEARCH_SITES                    = UNIT_DYNAMIC_END + 0x0, // Size: 0x1
    PLAYER_DYNAMIC_RESEARCH_SITE_PROGRESS            = UNIT_DYNAMIC_END + 0x1, // Size: 0x1
    PLAYER_DYNAMIC_DAILY_QUESTS_COMPLETED            = UNIT_DYNAMIC_END + 0x2, // Size: 0x1
    PLAYER_DYNAMIC_END                              = UNIT_DYNAMIC_END + 0x3
};

enum EItemDynamicFields
{
    ITEM_DYNAMIC_MODIFIERS                          = OBJECT_DYNAMIC_END + 0x0, // Size: 0x1
    ITEM_DYNAMIC_END                                = OBJECT_DYNAMIC_END + 0x1
};


SeT 28.03.2014 17:35

Видимо динамик филды действительно не правильно реализованы =(

SeT 28.03.2014 19:53

https://github.com/Neket007/TrinityC...bject.cpp#L923

Подсмотрел тут, как посылаются Dynamic Fields.
У предметов перековка отображается, а игроку никак не хотят показываться, ни PLAYER_DYNAMIC_RESEARCH_SITES, ни PLAYER_DYNAMIC_RESEARCH_SITE_PROGRESS. PLAYER_DYNAMIC_RESEARCH_SITES ставил с номерами точек из ResearchSite. PLAYER_DYNAMIC_RESEARCH_SITE_PROGRESS просто значения 1-3 как я понял.

Amaru 30.03.2014 03:11

Цитата:

Сообщение от SeT (Сообщение 32614)
https://github.com/Neket007/TrinityC...bject.cpp#L923

Подсмотрел тут, как посылаются Dynamic Fields.
У предметов перековка отображается, а игроку никак не хотят показываться, ни PLAYER_DYNAMIC_RESEARCH_SITES, ни PLAYER_DYNAMIC_RESEARCH_SITE_PROGRESS. PLAYER_DYNAMIC_RESEARCH_SITES ставил с номерами точек из ResearchSite. PLAYER_DYNAMIC_RESEARCH_SITE_PROGRESS просто значения 1-3 как я понял.

Бери снифай тогда и проверяй, получаешь ли их вообще

SeT 31.03.2014 23:47

Цитата:

Сообщение от Amaru (Сообщение 32620)
Бери снифай тогда и проверяй, получаешь ли их вообще

Проснифал, получаю =(

Код:

...
                       
| 0x1FD1 | 00 00 01 (есть динамик поля) 04 (маска изменённых полей) 00 00 00 01 (есть изменённые значения) FF (маска изменённых значений, 8) 00 00 00 0C (первая точка исследований, 12) 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x1FE1 | 14 00 00 00 A7 00 00 00 D3 00 00 00 DF 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x1FF1 | 17 01 00 00 2F 01 00 00 3D 01 00 00            | . . . . / . . . = . . .        |

http://paste2.org/yFZtf4gA

Amaru 01.04.2014 00:27

Цитата:

Сообщение от SeT (Сообщение 32629)
Проснифал, получаю =(

Код:

...
                       
| 0x1FD1 | 00 00 01 (есть динамик поля) 04 (маска изменённых полей) 00 00 00 01 (есть изменённые значения) FF (маска изменённых значений, 8) 00 00 00 0C (первая точка исследований, 12) 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x1FE1 | 14 00 00 00 A7 00 00 00 D3 00 00 00 DF 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x1FF1 | 17 01 00 00 2F 01 00 00 3D 01 00 00            | . . . . / . . . = . . .        |

http://paste2.org/yFZtf4gA

На карте стоит галка - отмечать точки раскопок? :D

SeT 01.04.2014 00:36

Цитата:

Сообщение от Amaru (Сообщение 32630)
На карте стоит галка - отмечать точки раскопок? :D

Стоит) убирал, ставил, толку нет... Может в 5.0.х по другому это все было, но тогда бы на итемах тоже не показывалось.
Пойду попробую на старт аккаунте проснифать на оффе.

SeT 01.04.2014 01:38

Качаться лень, археология только с 20 уровня, исправил так. Проблема была в кривой маске изменённых полей.

moJIto 18.09.2014 17:28

Вложений: 1
Цитата:

Сообщение от SeT (Сообщение 32632)
Качаться лень, археология только с 20 уровня, исправил так. Проблема была в кривой маске изменённых полей.

а не подскажешь как это всё таки выглядит ? что сейчас кладётся в первое и второе поле ?

SeT 19.09.2014 01:27

Все доступные раскопки по очереди кладутся в PLAYER_DYNAMIC_RESEARCH_SITES. У вас на скрине постоянно идёт запись в 0 позицию, а должно быть 0 1 2 3 4 и т.д.

moJIto 19.09.2014 04:15

окей, понял) нашел ещё косяк во флагах полей...

moJIto 21.09.2014 00:35

копался копался, но до сих пор не выходит... появилось 2 вопроса:
PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS что отправляется в этом поле?
и PLAYER_FIELD_RESEARCHING - используется ли это поле?

SeT 21.09.2014 14:08

PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS - прогресс и отправляет, сколько раз уже было выкопано.

PLAYER_FIELD_RESEARCHING используется


Текущее время: 05:37. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS