|
Модификации ядра Пересмотр и обсуждение текущего кода, реализация новых или отсутствующих возможностей ядра |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
20.07.2013, 00:17 | #1 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Археология и всё что с ней связано
Доброго времени суток. Ребята кто нибудь копался в данном направлении? Удалось пока найти 2 опкода которые каким то образом связаны и пару дбц. Пока интересно как оно отображает на карте точки.
зы. что то тут вообще у вас скучно |
20.07.2013, 00:36 | #2 |
Новичок
Регистрация: 01.10.2011
Сообщений: 23
Сказал(а) спасибо: 4
Поблагодарили 15 раз(а) в 10 сообщениях
|
Можно снифануть!)
|
20.07.2013, 18:24 | #3 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Клиент 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_RESERACH_SITE_1 - места текущих раскопок, 2 байта, значение из ResearchSite.dbc. Длина 32 байта, все используются. Отображает на карте точки. CMSG_REQUEST_RESEARCH_HISTORY - 0x3306 пустой пакет SMSG_RESEARCH_SETUP_HISTORY - 0x10B6 ответ сервера на предыдущий опкод, содержит информацию о завершенных исследованиях - количество каждого из собранных артифактов и дату последней сборки SMSG_RESEARCH_COMPLETE - 0x35A6 три 4-байтовых числа, одно из них - бранч, остальные - неизвестно |
Пользователь сказал cпасибо: | Dubstep (21.07.2013) |
21.07.2013, 13:23 | #4 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
да, 4.3.4. спасибо за информацию. По какому принципу бранчи должны активироваться?
|
21.07.2013, 16:04 | #5 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Может ты имел в виду, по какому принципу места раскопок генерируются?
Рандомно, в зависимости от скилла, по 4 на материк. Аутленд с 300, Нортренд с 375, Ульдум, Хиджал, Сумеречное Нагорье с 450. |
Пользователь сказал cпасибо: | Dubstep (21.07.2013) |
21.07.2013, 16:10 | #6 | |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Может не так написал. Сами иконки(Тролли, Дварфы и тп).
Сейчас их так активировал: SetUInt32Value(PLAYER_FIELD_RESEARCHING_1 + 5, 215); Как я понимаю зависит от скилла активация их За точки пока не берусь, не сильно представляю как там взаимодействовать. Цитата:
Что происходит с проектом когда учишь его? К примеру открываю троллей, собрал его, на месте его появится опять случайный? Последний раз редактировалось NeatElves; 23.07.2013 в 23:17. |
|
21.07.2013, 20:53 | #7 | ||
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
Добавлено через 4 минуты Цитата:
PLAYER_FIELD_RESEARCHING_1 - последовательность по 2 байта, с ними нужно работать так: Код:
for (uint32 i = 0; i < MAX_RESEARCH_PROJECTS; ++i) SetUInt16Value(PLAYER_FIELD_RESEARCHING_1 + i / 2, i % 2, projectId); Последний раз редактировалось Amaru; 21.07.2013 в 20:58. |
||
Пользователь сказал cпасибо: | Dubstep (21.07.2013) |
21.07.2013, 21:19 | #8 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Как я понимаю хранить историю для SMSG_RESEARCH_SETUP_HISTORY нужно в табличках?
SMSG_RESEARCH_COMPLETE после раскопок или после сбора артефакта отправляется? буду благодарен если скажите ещё для них сабы |
21.07.2013, 22:45 | #9 | |||
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
Цитата:
Цитата:
6704A0 SMSG_RESEARCH_SETUP_HISTORY - 0x10B6 9F7A00 6E9370 SMSG_RESEARCH_COMPLETE - 0x35A6 9F7A70 6AD080 |
|||
Пользователь сказал cпасибо: | Dubstep (23.07.2013) |
23.07.2013, 21:53 | #10 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Опять добрался до запила
Вообщем так получается: Учу профу, она мне генерирует точки и тут сразу вопрос: Она мне генерит только в калимдоре и восточном королевстве? Или только в калимдоре или в восточном королевстве. Далее сами точки, прилетаю на место, и вот тут вопрос, координаты точек где то хранятся? чтобы можно было прибор ставить с красным, жёлтым или зелёным индикатором И как отсеить места где можно капнуть только 1 раз, т.е. может где то в дбц есть эти значения. Неужели всё это надо хранить в базе? |
24.07.2013, 10:04 | #11 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
На офе для каждого места раскопок фиксированное количество мест, где лежат артефакты, но не менее 3, в к клиенте они нигде не прописаны. В каждом месте за раз находится 3 артефакта. |
|
24.07.2013, 10:20 | #12 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Точки можно спарсить с вовхеда, то в игре их нужно отсеять на предмет принадлежания к месту раскопок. По хорошему когда игрок начинает копать надо тоже проверять где он находиться.
Это можно сделать с помощью алгоритма проверки принадлежания точки многоугольнику. Каждое место раскопок - многоугольник, его айди - POIid из ResearchSite.dbc. Координаты точек лежат в QuestPOIPoint.dbc. |
24.07.2013, 18:04 | #13 |
Новичок
Регистрация: 22.03.2010
Сообщений: 11
Сказал(а) спасибо: 19
Поблагодарили 0 раз(а) в 0 сообщениях
|
А кто-нибудь знает в пандах ничего не менялось со структурой данных в
PLAYER_FIELD_RESEARCHING_1 PLAYER_FIELD_RESERACH_SITE_1 |
24.07.2013, 18:26 | #14 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
PLAYER_FIELD_RESERACH_SITE_1
этого в пандах нет |
2 пользователя(ей) сказали cпасибо: | blackmanos (24.07.2013), SeT (28.03.2014) |
24.07.2013, 21:50 | #15 |
Новичок
Регистрация: 22.03.2010
Сообщений: 11
Сказал(а) спасибо: 19
Поблагодарили 0 раз(а) в 0 сообщениях
|
Похоже в динамик перекинули, спс.
Последний раз редактировалось blackmanos; 25.07.2013 в 19:48. |
30.07.2013, 10:20 | #17 |
Новичок
Регистрация: 22.03.2010
Сообщений: 11
Сказал(а) спасибо: 19
Поблагодарили 0 раз(а) в 0 сообщениях
|
а данные каким образом теперь отравляются? Вернее номера точек для раскопок
|
28.03.2014, 03:10 | #18 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Кто-нибудь разобрался с показом точек в Пандах?
Решение в лоб Код:
for (uint32 count = 0; count < 16; ++count) SetDynamicUInt32Value(PLAYER_DYNAMIC_FIELD_RESEARCH_SITES, count, id); |
28.03.2014, 08:52 | #19 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
|
28.03.2014, 15:18 | #20 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Для итемов ITEM_DYNAMIC_FIELD_MODIFIERS нормально работает (показывает когда предмет перекован). Может значение PLAYER_DYNAMIC_FIELD_RESEARCH_SITES не правильное? Там нужно брать PLAYER_END или нет? Во всех дампах вижу что учитывается либо UNIT_END либо PLAYER_END.
Последний раз редактировалось SeT; 28.03.2014 в 15:21. |
28.03.2014, 16:30 | #21 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
в 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 }; |
Пользователь сказал cпасибо: | SeT (28.03.2014) |
19.09.2014, 04:15 | #22 |
Новичок
Регистрация: 29.08.2014
Сообщений: 29
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
|
окей, понял) нашел ещё косяк во флагах полей...
|
28.03.2014, 17:35 | #23 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Видимо динамик филды действительно не правильно реализованы
|
28.03.2014, 19:53 | #24 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
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 как я понял. |
30.03.2014, 03:11 | #25 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
|
|
Пользователь сказал cпасибо: | SeT (01.04.2014) |
31.03.2014, 23:47 | #26 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Проснифал, получаю
Код:
... | 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 | . . . . / . . . = . . . | |
01.04.2014, 00:27 | #27 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
|
|
Пользователь сказал cпасибо: | SeT (01.04.2014) |
01.04.2014, 00:36 | #28 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
|
01.04.2014, 01:38 | #29 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Качаться лень, археология только с 20 уровня, исправил так. Проблема была в кривой маске изменённых полей.
|
18.09.2014, 17:28 | #30 |
Новичок
Регистрация: 29.08.2014
Сообщений: 29
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
|
а не подскажешь как это всё таки выглядит ? что сейчас кладётся в первое и второе поле ?
|
19.09.2014, 01:27 | #31 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Все доступные раскопки по очереди кладутся в PLAYER_DYNAMIC_RESEARCH_SITES. У вас на скрине постоянно идёт запись в 0 позицию, а должно быть 0 1 2 3 4 и т.д.
|
Пользователь сказал cпасибо: | moJIto (19.09.2014) |
21.09.2014, 00:35 | #32 |
Новичок
Регистрация: 29.08.2014
Сообщений: 29
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
|
копался копался, но до сих пор не выходит... появилось 2 вопроса:
PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS что отправляется в этом поле? и PLAYER_FIELD_RESEARCHING - используется ли это поле? |
21.09.2014, 14:08 | #33 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS - прогресс и отправляет, сколько раз уже было выкопано.
PLAYER_FIELD_RESEARCHING используется |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Археология - ранние версии Warcraft | tempura | Флудильня | 7 | 23.05.2010 04:50 |