|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Дублирование лога Гильдбанка (С++) |
Дублирование лога Гильдбанка |
Привет всем
Обнаружилась проблема: Заходим в ГБ -> Кладём предмет или голду -> видим лог что предмет или голда положена в ГБ -> OK Рестартуем сервер Заходим в ГБ -> Видим 2 одинаковых строки лога вместо одной В базе строка одна а в игре отображается 2 одинаковых Эксперементально выяснилось что проблема в void Guild::DisplayGuildBankLogs(WorldSession* session, uint8 TabId) а точнее: for (GuildBankEventLog::const_iterator itr = m_GuildBankEventLog_Item[TabId].begin(); itr != m_GuildBankEventLog_Item[TabId].end(); ++itr) { sLog.outError("Load Log 1"); <-------------------- эту строку я внёс дабы увидеть где происходит дублирование data << uint8(itr->LogEntry); data << uint64(MAKE_NEW_GUID(itr->PlayerGuid, 0, HIGHGUID_PLAYER)); data << uint32(itr->ItemOrMoney); data << uint8(itr->ItemStackCount); if (itr->LogEntry == GUILD_BANK_LOG_MOVE_ITEM || itr->LogEntry == GUILD_BANK_LOG_MOVE_ITEM2) data << uint8(itr->DestTabId); // moved tab data << uint32(time(NULL) - itr->TimeStamp); } Помогите кто-нибудь пожалуйста Я не могу понять где ошибка
Если помог, ставь плюсик в репу :)
Сообщение # 1 написано 30.05.2017 в 11:17
|
Без дебага так просто не скажу, но как поступить если только..
У тебя sLog.outError("Load Log 1"); <-------------------- эту строку я внёс дабы увидеть где происходит дублирование Это крутится и выводит в консоль два раза?(имею в виду если банк чистый был, ты положил туда итем, сделал рестарт и вот потом два раза выведет?) Если в описанном мною случае выводит два раза, то логично, стоит обратить внимание на эту строку, ведь в ней идёт загрузка данных в контейнер Допустим после этой строки, т.е после цикла загрузки добавь свой Код for (GuildBankEventLog::const_iterator itr = m_GuildBankEventLog_Item[TabId].begin(); itr != m_GuildBankEventLog_Item[TabId].end(); ++itr) { sLog.OutError("vivod...."); // vivod } Если у тебя выведет и тут два раза одно и тоже, то обрати внимание на процесс загрузки, что он загружает, сделай тоже выводи свои sLog и будет уже более наглядней
Сообщение # 2 написано 30.05.2017 в 11:35
|
Так не получится после строки которую ты указал добавить for (GuildBankEventLog::const_iterator itr = m_GuildBankEventLog_Item[TabId].begin(); itr != m_GuildBankEventLog_Item[TabId].end(); ++itr) не получится
Там TabId не определён Добавлено (30.05.2017, 11:57) Добавлено (30.05.2017, 12:03)
Если помог, ставь плюсик в репу :)
Сообщение # 3 написано 30.05.2017 в 12:03
|
А что мешает его собственно объявить? Если у тебя в бд нет ничего, то конечно не попадет, а если есть, то как же оно может не попасть, откуда в контейнере тогда данные есть, если после рестарта ничего не ложить(а положить до рестарта), в логе же что-то будет? Если будет, значит в контейнер попали данные, а значит они в том методе загружаются.(если по каким-то причинам они у тебя там не загружаются, значит загружаются в другом месте, по контейнеру ищи место загрузки, хотя это именно то место и есть. Ну понятно, что при каждом перемещении предмета создаются 2 лога, собственно обрати внимание на этот метод, именно здесь, как я понимаю, и идёт логирование( смотрю бегло, поэтому сильно не вникал что там и как). По типа таких штук в методе: Код pGuild->LogBankEvent(GUILD_BANK_LOG_MOVE_ITEM, BankTab, pl->GetGUIDLow(), pItemSrc->GetEntry(), pItemSrc->GetCount(), BankTabDst); pGuild->LogBankEvent(GUILD_BANK_LOG_MOVE_ITEM, BankTabDst, pl->GetGUIDLow(), pItemDst->GetEntry(), pItemDst->GetCount(), BankTab); Ну и на всё другое. Отслеживай изменение m_GuildBankEventLog_Item при помощи sLog и найдешь место, где идёт дублирование
Сообщение # 5 написано 31.05.2017 в 01:53
|
Для начала было бы не плохо ответить на мои вопросы)
Вполне вероятно что не то место, но явно это связано с указанным мною контейнером и я также указал на функцию, где идёт логирование предмета, возможно не в самой, а в её вызываемых методах, но не суть, суть была в методе поиска и в исправлении. Без дебага однозначно лично я определить не могу на средний взгляд, а так не за что
Сообщение # 7 написано 31.05.2017 в 21:57
|
| |||
| |||