Jump to content
Sign in to follow this  
cutuzoff

На каком этапе формируеться квестлут с мобов?

Recommended Posts

Как формируется лут с мобов, и квестлут в частности?У меня есть несколько предположений.1. Лут формируется при убийстве моба, квест лут тоже.2. Лут формируеться, когда в мертвого моба заглянет первый игрок, имеющий права его лутать, квестлут аналогично.3. Лут формируется, когда моб умирает, а квестлут - когда в него заглянет игрок с квестом.Я больше склоняюсь к 2 или 3 варианту, потому как сегодня специально проводил тесты - бил по квесту айтемы. Они падают чуть ли не со 100% шансом. Когда остался 1 квестайтем, собирал огромный пак квестовых мобов. Так вот, с них постоянно падал всего 1 айтем, сколько б не было этих мобов.Просьба администрации, или других знающих людей, ответить на вопрос, желательно с фрагментами кода, отвечающего за формирование лута и квестлута. Спасибо:rolleyes:

Share this post


Link to post
Share on other sites

Лут генерируется при спавне моба. Инфа 100%. ВоВВики не подтверждает, но я где-то на офф-форумах видел это, когда еще старые были.

Share this post


Link to post
Share on other sites

Соглашусь с Игнимортисом, мне тож кажется что лут генерируется при спавне, просто потому что нафиг генерировать что-то два раза если можно сделать это один раз. По поводу квест лута, возможно он так же генерируется вместе с обычным лутом просто имеет какую-то пометку в базе данных, на которую идет проверка когда игрок со взятым квестом лутит моба и если у игрока взят квест, то лут отображается. Логический пруф - если двое игроков убивают квестового моба, при этом у одного игрока квест взят а у другого нет, то один игрок увидит квестовый айтем в окне лута, а второй нет. Но вообще эт только мои предположения, как реально работает не знаю =/

Edited by Kjukecke

Share this post


Link to post
Share on other sites

Когда вы лутаете моба, шлется пакет серверу CMSG_LOOT

void WorldSession::HandleLootOpcode( WorldPacket & recv_data ){    DEBUG_LOG("WORLD: CMSG_LOOT");    ObjectGuid guid;    recv_data >> guid;    // Check possible cheat    if (!_player->isAlive())        return;    GetPlayer()->SendLoot(guid, LOOT_CORPSE);}

SendLoot функция огромна, там ГО лут, рыбный, скинлут и т.д, но при луте моба - заходит сюда

                if (!creature->lootForBody)                {                    creature->lootForBody = true;                    loot->clear();                    if (uint32 lootid = creature->GetCreatureInfo()->lootid)                        loot->FillLoot(lootid, LootTemplates_Creature, recipient, false);                    loot->generateMoneyLoot(creature->GetCreatureInfo()->mingold,creature->GetCreatureInfo()->maxgold);...........

создается пустой обьект loot, потом он чистится на всякий(loot->clear()), потом по lootid выполняется собственно заполнение FillLoot

    items.reserve(MAX_NR_LOOT_ITEMS);    m_questItems.reserve(MAX_NR_QUEST_ITEMS);    tab->Process(*this, store,store.IsRatesAllowed (), 0, dynamicLoot, lootCount);     // Processing is done there, callback via Loot::AddItem()    // Setting access rights for group loot case    Group * pGroup=loot_owner->GetGroup();    if(!personal && pGroup)    {        for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())            if(Player* pl = itr->getSource())                FillNotNormalLootFor(pl);    }    // ... for personal loot    else        FillNotNormalLootFor(loot_owner);

reserve - выделяем массив для заполнения обычных предметов и квестовых, tab->Process - ключевая функция, генерящая таблицу общего лута, включая квестовой, где то в баг-трекере или на форуме я обьяснял что внутри и как формируется лут

функция - FillNotNormalLootFor заполняет особые листы лута, как я посмотрел в отладке, эти листы используются уже при непосредственном лутинге, когда вы ткнули на итем в окне лута, это всякие проверки на разрешение лутать + блокировки предмета при лутинге

void Loot::FillNotNormalLootFor(Player* pl){    uint32 plguid = pl->GetGUIDLow();    QuestItemMap::const_iterator qmapitr = m_playerQuestItems.find(plguid);    if (qmapitr == m_playerQuestItems.end())        FillQuestLoot(pl);    qmapitr = m_playerFFAItems.find(plguid);    if (qmapitr == m_playerFFAItems.end())        FillFFALoot(pl);    qmapitr = m_playerNonQuestNonFFAConditionalItems.find(plguid);    if (qmapitr == m_playerNonQuestNonFFAConditionalItems.end())        FillNonQuestNonFFAConditionalLoot(pl);}

Вот собственно и все, а ну и конченый пакет отображающий вам лут

    WorldPacket data(SMSG_LOOT_RESPONSE, (9+50));           // we guess size    data << ObjectGuid(guid);    data << uint8(loot_type);    data << LootView(*loot, this, permission);    SendDirectMessage(&data);

Share this post


Link to post
Share on other sites

Возникает вопрос: возможно ли создание аддона "Loot helper", дабы мобы, с нужным лутом выделялись цветом и не нужно было бы их громить пачками?

Share this post


Link to post
Share on other sites

Нуб не знает про базу данных. ФУУУУУ

Share this post


Link to post
Share on other sites

Нуб не знает про базу данных. ФУУУУУ

Да вообще все пичально, через неделю экзамен по дистрибутивным системам (WoW - дистрибутивная система), а я нифига не знаю...Ну зато хоть новую инфу почерпнул из поста Axona ^_^

Share this post


Link to post
Share on other sites

Значит, официальная система несколько отличается от нашей. Фишка в чем была на оффе - иногда можно было заметить моба с другим оружием, чем у прочих, и с него падало именно оно.

Share this post


Link to post
Share on other sites

Не слышал о таком, и не наблюдал на офе, по крайней мере лич и катаклизм, в большинстве случаев экипировка мобов не имеет прототипов реальных предметов, что можно полутать

Share this post


Link to post
Share on other sites

Не слышал о таком, и не наблюдал на офе, по крайней мере лич и катаклизм, в большинстве случаев экипировка мобов не имеет прототипов реальных предметов, что можно полутать

Вовхед иногда с ПТР выносит серые айтемы, которые одеты на мобах для внешнего вида. Но я лично видел таких мобов где-то в старом мире - у всех стаффы, у одного меч (один и тот же моб по сути) - и с того, который с мечом, падает таки меч (причем с той же моделью).Нам бы редактор ВоВ, который у Близзард стоит. Я уверен, что таковой существует - или все-таки там все-все делают ручками без готовых темплейтов и GUI?

Share this post


Link to post
Share on other sites

Нуб не знает про базу данных. ФУУУУУ

При чём тут база данных. Имелось ввиду, что аддон укажет именно на того моба, в котором гарантированно содержится рецепт, если лут формируется в момент спауна моба. Ну и при входе в инст чтобы аддон сразу отображал, что с каких мобов упадёт.Если же лут формируется в момент смерти моба или просмотра его тела, то чтобы аддон показывал некое подобие Energy Ticker, со шкалой, чтобы было понятно в какое время нужно угробить моба, чтобы упал нужный лут. Как-то так в общем.Аксон, что скажешь? Можно ли синхронизировать генератор случайных чисел на разных компьютерах посредством аддона?

Share this post


Link to post
Share on other sites

Когда вы лутаете моба, шлется пакет серверу CMSG_LOOT

Кэп намекает, что дальнейший код выполняется в момент лута моба.

Share this post


Link to post
Share on other sites

При чём тут база данных. Имелось ввиду, что аддон укажет именно на того моба, в котором гарантированно содержится рецепт, если лут формируется в момент спауна моба. Ну и при входе в инст чтобы аддон сразу отображал, что с каких мобов упадёт.Если же лут формируется в момент смерти моба или просмотра его тела, то чтобы аддон показывал некое подобие Energy Ticker, со шкалой, чтобы было понятно в какое время нужно угробить моба, чтобы упал нужный лут. Как-то так в общем.Аксон, что скажешь? Можно ли синхронизировать генератор случайных чисел на разных компьютерах посредством аддона?

Чистый бред, лут как выше было сказано, формируется, когда вы лутаете собственно моба, т.е подошли и ткнули мышью и открылось окно лута, так вот между тыком и появлением окна лут и формируется. Никаких аддонов невозможно создать, да и я забанил бы за такую "автоматизацию", даже в катаклизме такую бредню создать невозможноГенератор случайных чисел на сервере, ему тихо плевать на игроков, и на их компьютеры, он сам по себе работает....и зафига его синхронизировать? чтобы точно определять упадет ли с моба тот или иной итем? ага щас...я бы никогда такое тут не допустил, даже будь это возможным, но это еще к тому же и невозможно, к моей радости

Share this post


Link to post
Share on other sites

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

Ну просто поинтересовался, мало ли. Никаких намёков на читерство я даже не пытался делать. Нет так нет.

Share this post


Link to post
Share on other sites

мефодий твои аватарки пугают))) ты куришь что ли? пьешь?

Share this post


Link to post
Share on other sites

мефодий твои аватарки пугают))) ты куришь что ли? пьешь?

В Мир Варкрафта играю. У меня суммарно больше месяца игрового времени. И результат, как говорится, на лице.

Share this post


Link to post
Share on other sites

Upper Blackrock Spire - Goraluck Anvilcrack носит меч 100% как одноручный меч (2.70 или 2.90 скорости) 14 ранга у альянса :)

Edited by Ankar

Share this post


Link to post
Share on other sites

Гонево. Специально сходил в УБРС и проверил оружие мобов. В т.ч. Горалука. Ты бы сходил туда, что ли, освежил впечатления. Там и патрулям проскриптовано движение здорово наконец-то.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Аксон всё доступно и эмоционально объяснил и аддон, показывающий в какой момент надо лутнуть моба, чтобы получить рарность откритиковал и назвал невозможным. Надеюсь оно так и есть на самом деле.Возникает второй вопрос, близкий к теме - обворованный моб, не до конца лутнутый цветок, руда и тд - восстановят ли они с течением времени своё содержимое?

Share this post


Link to post
Share on other sites

Возникает второй вопрос, близкий к теме - обворованный моб, не до конца лутнутый цветок, руда и тд - восстановят ли они с течением времени своё содержимое?

Забыл самое важное... сундуки XD

Share this post


Link to post
Share on other sites

Восстановят - когда приходит время респауна, обьект удаляется из мира и ставится новый, типа обновление, для игроков это незаметно, а пока время респа не пройдет, обьект так и будет стоять недолутнутый. На оффе 100 раз такое встречал, когда в руде одни камни остаются и т.д, а потом все восстанавливалось через пару-тройку часов

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×