Axon
Player-
Content count
314 -
Joined
-
Last visited
Everything posted by Axon
-
На каком этапе формируеться квестлут с мобов?
Axon replied to cutuzoff's topic in Классовая механика
Не слышал о таком, и не наблюдал на офе, по крайней мере лич и катаклизм, в большинстве случаев экипировка мобов не имеет прототипов реальных предметов, что можно полутать -
На каком этапе формируеться квестлут с мобов?
Axon replied to cutuzoff's topic in Классовая механика
Когда вы лутаете моба, шлется пакет серверу 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); -
Рискуете влететь на клевету в адрес администрации за такие "предположения" и "возможно совпадение". Если бы администрация хотела кому-то подыгрывать, вы бы никогда этого не увидели И какого черта мы флудим в баг-трекере и к чему вообще тема? Что за бред, предупреждение за создание оффтопа в багтрекереПС : не в баг-трекере, ошибся Но в разделе ошибок, что сути не меняет
-
Грац друга, напарника по кодингу и просто Сида Желаю (default набор : удачу, счастье, любовь, достаток) && (все-таки мы допилим лаунчер, луа, или даже эмуль(!!!)) && (ну и конечно словится бы не помешало ). Ненулевых указателей я тебе уже пожелал, это намек С ДНЕМ РОЖДЕНИЯ!!
-
Оффтоп Не путаем статическую геометрию(геодата они же вмапс), и динамическую, это когда двери, колонны и некоторые ГО должны вести себя так же, как обьекты статической геометрии. Геодата работала и будет работать, а вот динамическая требует особых алгоритмов и глубочайших познаний в математике и геометрии карт клиента. Были попытки реализовать простейшую дверь в БВЛ, это потребовало нехилое кол-во кода и в целом закончилось неудачей.Вприницпе если математически описать обьект, то возможно его впихнуть в обработку вмапс, как будто это реально существующий кусок статической геометрии, но вот только я такого не пробовал и с геометрией не очень)
-
Оффтоп Спамером слишком легко и ты кое-где назвал чисто мужские вариации, обидел девушек
-
Мы не дизайнеры, мы суровые программисты накатаю калькулятор талантов на ассемблере ага, только кроме меня его никто не оценит
-
Почему бы не использовать Talent.dbc/TalentTab.dbc для формирования ini файлов или какой-то своей удобной структуры. Потому что ручками это все забивать будет явно дольше, да и мало кто сможет помочь имхо. А так или в проге целиком обработку данных с дбц или маленький генератор - на вход дбц - на выход, полная структура всего что надо. Вот только у меня дельфи нету на ноуте, есть шарп и плюсы, ну и полный набор веб-разраба, так уж получилось
-
Надоело до печенок читать все это. Флудить можно и в специально определенных разделах форумаПо сабжу : Сливщики и прочие, дышите, наслаждайтесь глотком воздуха, как последние часы перед смертью. МЫ позволяем ПОКА вам дышать, не упускайте момент, скоро вы покинете сервер, спалившись на нарушениях, и испытаете силу бана по железуЗакрыто.
-
Хы да никак, просто вешает отрицательный эффект дебаффа как пассив, не добавляя его в видимые слоты // Try find slot for aura uint8 slot = NULL_AURA_SLOT;.....// цикл поиска аур по клиентским полям UNIT_FIELD_AURA + ifor (uint8 i = MAX_POSITIVE_AURAS; i < MAX_AURAS; i++){ if (m_target->GetUInt32Value((uint16)(UNIT_FIELD_AURA + i)) == 0)....} Если свободный слот не найден, клиенту ничего не выставляется в поля, необходимые для отображения иконок for i=1, MAX_TARGET_DEBUFFS do local debuffBorder = getglobal("TargetFrameDebuff"..i.."Border"); debuff, debuffStack, debuffType = UnitDebuff("target", i); // луашка UnitDebuff button = getglobal("TargetFrameDebuff"..i); if ( debuff ) then getglobal("TargetFrameDebuff"..i.."Icon"):SetTexture(debuff); debuffCount = getglobal("TargetFrameDebuff"..i.."Count"); if ( debuffType ) then color = DebuffTypeColor[debuffType]; else color = DebuffTypeColor["none"]; end if ( debuffStack > 1 ) then debuffCount:SetText(debuffStack); debuffCount:Show(); else debuffCount:Hide(); end debuffBorder:SetVertexColor(color.r, color.g, color.; button:Show(); numDebuffs = numDebuffs + 1; else button:Hide(); end button.id = i; end луашка UnitDebuff как раз считывает инфу с полей, потом тупо по индексам получают обьекты i числа кнопочек и кнопочкам уже выставляются стаки, текстуры, бордеры и прочее (см. код)
-
Ну следующий Лунный фестиваль будет через год в конце января, может к тому времени и починим, если не рабит
-
Лунный фестиваль - Монета Наследия, типа валюты, за которую можно купить всякие штучки
-
Как можно предупредить о краше или фризе, подумайте? Краш(crash) - аварийная остановка работы сервера, Фриз(freeze) - зависание сервераКогда идет обновление, вроде бы обычно предупреждают, хотя лично это не в моих правилах
-
Не приеду в мае как раз практика...хехе а так бы с Виталием абсента приняли и....(все было б абсолютно непредсказуемо) ах, и еще бы устроил Warden event
-
Да не красивости, а в целом рабочести, луа движок был еще очень сырым, я сам лично делал такой прикол, менял тип слоя фрейму ну например френд листа, на основной, после этого френд лист пропал, панельки открывались почему-то только вверху(в верхней части экрана), и уходили за границы экрана, клиент фризило страшно при нажатии на любые кнопки - в итоге через 3 минуты он вылетел со 132 в области WorldFrame::Render
-
Скорей всего программист близов, просто создал массив из 50 элементов изначально, и соответственно 51 элемент мог вызвать повреждение памяти, вот и сгенерил чек, в сервере такое называется assert - запланированный краш из-за заведомо некорректной работы. Или как вариант - интерфейс аукциона не может вывести больше 50 итемов, там же все впритык рассчитано, размер фрейма, слой фрейма, позиция на экране относительно других фреймов, ползунки(scroll) и иконки, тултипы, размер шрифта
-
лолшто, Вам говорит что-нибудь такое слово как КЛИЕНТСКОЕ ОГРАНИЧЕНИЕ, не надо высказывать догадки в тех областях, где Вы не шарите вообще. Администраторам виднее, что и как должно работать Из кода КЛИЕНТА CalculateOwnerDepositsCount((char *)&a2 + 3);if ( BYTE3(a2) > 0x32u ) GenerateErrorException((int)&byte_9E14FF, (int)&byte_9E14FF, 0);..... переменная для хранения предметовCGAuctionHouse__m_numTotalOwned[50]; PS : 0x32 hex = 50 dec
-
Запиливаю тему пока тут. Обобщаю о чем вчера говорили в чате - отдельный реалм/проект с модифицированным клиентом. Предвижу гневные возгласы - как же Валька, онлайн и так мал. Ну мы не рекламщики, а кодеры, к тому же даже пофиксив все, что возможно, пользы это принесет немного, поверьте. Заскриптовать инсты - да, но лично у меня пока нету желания(я еще до Вальки не любил скриптинг, но приходилось заниматся, т.к держал локальный городской сервер), работа, проблемы с девушкой, дела. Тем более Валька подобралась к такому порогу, что фиксы(я не про инсты, а про фиксы механики) начинают подходить к границе возможностей эмулятора, вон типа как "бинарные спеллы"На фиксы в целом открытие реалма не повлияет. Команда пока, как я понял, будет пока состоять из Сида(sidsukana), меня(Axon) и Вируса(virushm). Может кто еще присоединится . Это своего рода обучение для нас ну и возможность услышать от Вас какие-то интересные идеи, которые можно реализовать, но сразу говорю близлайком там пахнуть и не будет.Что на данный момент доступно, по моим работам с клиентом, я могу изменять и писать любой интерфейс, могу вмешиватся в загрузку файлов(можно поубирать лишнее из клиента), ну и по мелочи внутри клиента типа создания флагов, полей, характеристик и т.д. Профу могу любую создать например, какие-то особые обьекты типа башен тоже возможно, любая фишка БК, лича и катаклизма даже. Движение и механизмы его работы только пока слабо разобрал, т.к это адски сложноЗа основу будет взят клиент лича, т.к там много полезных фишек, которые тяжеловато инвертировать(т.е взять выдрать из лича например и перенести в классик клиент)Раз флудильня, можно высказывать свое мнение, критиковать и вайнить смысла нету, я и сам знаю, что на Вальке еще много чего надо запиливать.Вирус, твой пост следующий
-
Присоединяюсь к поздравлениям, любви и счастья, поменьше пикселей Вы наши музы, наши возжигатели страсти и стремления к лучшему(мое имхо Оставайтесь вечно такими же цветущими и красивыми. Мы вас любим
-
Это точно неизвестно, т.к текущая спеллсистема не представляет то состояние, в котором можно было бы что-то утверждать очевидно С рогами МОЖЕТ БЫТЬ и да, хотя там сейчас 100500 костылей, и все запутано окончательно
-
Разумная критика не вызывает агрессию, мы никогда не трогали и не будем трогать рандом генератор или разбирать что-то связанное с его деятельностью, а это уже вторая тема, где докапываются именно до этого. Может быть ошибки в комбат системе, в чем угодно, почему обязательно сразу рандом генератор?Закрыто абсолютно верноPS : второй пункт опроса - смех, разработчики и не такое видели, и подчеркиваю, лезть в работу сторонних систем никто не будет, нам еще этого не хватало, с сервером проблем хватает
-
Ыыыыыыы, а я даже не задумался над тем какого пола варден повеселили, а что надо подумать хыхы
-
Спасиб, девчонки ну а нас с праздничком
-
рабит и всегда рабилоне рабило и не будет рабить, т.к слишком много нюансов https://elysium-project.org/forum/index.php?app=tracker&showissue=5&view=findpost&p=1422 - ознакомится еще
-
Всем спасибо за поздравления, всех *love*
