|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером |
|
Опции темы | Поиск в этой теме | Опции просмотра |
06.04.2011, 20:26 | #1 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Вопросы по LFG
В процессе переписывания кода ТС возникла куча вопросов. У них там почти все захардкожено, но что-то мне говорит что это неверно...
1. как подбирается игрок в пати по GS? вообще что принимается в качестве GS? шмот, время игры, ачивы? 2. в пати может быть только 1 танк 1 хилер и 3 дпс? Или я что-то не понял? или это тоже подбирается по GS? 3. сколько донжонов можно выбрать в списке (не-рандом)? в чистом мангосе зашита цифра 3, причем насмерть. мне почему-то казалось что сколько угодно. нет? 4. одновременно рандом и список как я понимаю выбрать нельзя? 5. система поиска рейда вообще независима от случайной группы? в трине работает одновременно либо то либо то. и как народ подбирается в рейд, только вручную? 6. что светится в окошке случайного подземелья (если выбрано именно рандом), если сегодня уже 1 такое пройдено? поможите кто чем может. желательно простыми словами, на сях я сам ругаться буду... |
06.04.2011, 20:43 | #2 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
1. По среднему эквип ЛВЛу только. Если еквип ЛВЛа не достаточно, то так и написано
2. да, только так. Группа формируется из 1 танка, 1 хила, 3 дд (ДД могут быть одного класса) 3. Да хоть все 4. Да 5. Нет. Когда ты стоишь в очереди ЛФГ ты не можешь стать ни на БГ, ни в поиск рейда. Надо что-то одно выбирать(напрягает очень) 6. Первый раз отображается получаемый предмет, опыт, деньги. За последующие разы предмета уже нету(если валюта, то показана уже другая), кол-во денег и опыта уменьшено. Больше валюта и опыт не изменяются. Еще вопросы будут? |
06.04.2011, 21:07 | #3 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
по 1 надо смотреть патчноуты и хотфиксы. по наблюдениям плохо одетых в основном кидает к плохо одетым, но бывают исключения.
|
06.04.2011, 21:29 | #4 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Там либо чистый рандом либо есть некий средний эквип ЛВЛ у всей группы, который должен быть достигнут
Было и так, что плохо одетых к плохо одетым кидало. Бывало, что когда я был в 264 эквипе меня кидало к зеленым, и на оборот |
06.04.2011, 22:14 | #5 | |||
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Цитата:
Цитата:
Последний раз редактировалось TOM_RUS; 06.04.2011 в 22:33. |
|||
07.04.2011, 07:07 | #6 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Спасибо. Осталось выяснить цифры ограничений подземелий по GS (на ТС не реализовано), а также как считается это самое GS. Скорее всего придется взять тупую сумму левелов надетого шмота и добавлять поля в базу...
Раз поиск райда это список, то хоть с ним возни меньше. Однако система очередей выстраивается весьма красивая, можно в нее же и случайное БГ затолкать, текущая реализация весьма хаковатая. Новый вопрос - куда в ТС выкинули реализацию хандлера CMSG_LFG_SET_ROLES_2? Судя по всему у них и так работает, но опкод же для чего-то нужен? Или он deprecated? |
07.04.2011, 07:27 | #7 |
Ученый
|
В нормал-моды доступ открывается по достижению необходимого уровня (ЛК, Ката).
Героики в ЛК, насколько я помню, открывались с 174-м iLvl шмотом (последняя квестовая зеленка (79-80й лвл)). ЕМНИП, сразу все открываются, но не помню насчет Залов Отражений/Ямы Сарона/Кузни Душ - там уже персы достаточно одетые были. В катаклизме же в героики можно пойти с 333-м уровнем шмота (общий - не только те, что надеты на персонаже, учитываются и предметы в сумке - можно было обмануть систему подсчета - купить левый шмот за репутацию, для поднятия уровня ). Последний раз редактировалось Shadez; 07.04.2011 в 07:29. |
07.04.2011, 10:25 | #9 | |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Цитата:
1. Не замечал такой связи, просто не обращал на это внимания. 2. Это в каком смысле??? По ролям - да, именно только так. 3. Хоть все. Все доступные, имеется ввиду. С повышением левела низкие по уровню для тебя данжы не отображаются в списке вообще. 4. Нет, нельзя. Или рандом, или выбор. 5. Не совсем понимаю, тут Том лучше подсказал... 6. Ничего. Сообщения о том, что вы сегодня уже проходили что-то не появляется. Дело в том, что за последующие прохождения ты получаешь награду, но без шмота и в меньшем объёме. Вроде ничего не напутал, давно уже не играл |
|
07.04.2011, 13:04 | #11 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Это только в катаклизме. В ВОТЛК такого не было
|
07.04.2011, 14:10 | #12 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
В wotlk и требуемый итем левел для входа не отображался нигде, было просто написано что он недостаточно высок... А сам принцип его подсчета я думаю с тех пор не менялся...
В 4.х клиенте даже функция подсчета среднего итем левела есть. Принцип работы: создается массив int bla[MAX_INVENTORY_TYPE]; memset(bla, 0, MAX_INVENTORY_TYPE*4); потом перебираются все итемы и инвентаре и инициализируется этот массив: if(bla[item->inventoryType] < item->itemlevel) bla[item->inventoryType] = item->itemlevel; ну и считается средний итем левел, при этом нужно не забыть что например уровень для двуручного оружия нужно считать за 2 слота (main+off hand) и т.д. Для колец и тринкетов только 1 слот вроде считается и т.д. Так же учитывается может ли игрок вообще использовать данный итем: уровень игрока, класс, расса, требуемые спеллы (профессии), репутация, тип брони и прочая херь... http://paste2.org/p/1349371 Последний раз редактировалось TOM_RUS; 07.04.2011 в 14:23. |
07.04.2011, 19:29 | #13 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
нифига не понял как вычисляется среднее, похоже просто среднее арифметическое. и непонятно, учитывать ли всякие бутыли и прочую еду.
тогда встает большая проблема где брать значения для сравнения разве народ накидает "по памяти" да я захардкодю все это... кто может тупо постоять у банка, понадевать шмот разного уровня и написать какие подземелья при каком шмоте откроются? Последний раз редактировалось rsa; 07.04.2011 в 19:31. |
07.04.2011, 19:56 | #14 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Так не получится, т.к. считается весь шмот в инвентаре (возможно из банка не считается, я не уверен) + подземелья для низких уровней не отображаются когда уровень чара на много превышает уровень подземелья. Так что требуемый итем левел можно узнать только во время прокачки персонажа, т.к. обычно итем левела всегда нехватает (при получении 70 лвл не пускает в героики для 70 лвл, тоже самое на 80 и 85 уровне), для некоторых нормалов тоже есть требуемый илвл, например 5 ппл инсты цлк и колизея, все нормалы катаклизма... Последний раз редактировалось TOM_RUS; 07.04.2011 в 20:20. |
|
08.04.2011, 02:06 | #15 |
Новичок
Регистрация: 06.03.2010
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
|
Насколько мне известно, высчитывается не просто средний уровень шмота, а средний уровень ЛУЧШЕЙ экипировки. То есть если в сумке будут лежать кольчужные перчатки, скажем, 346 333 306 и какого нибудь 15 лвла, в подсчет среднего уровня пойдет только 346. Причем если при этом будут латные перчатки 359, а вы охотник, в подсчет все равно пойдет 346. Однако если будут тканевые перчатки 359, в подсчет пойдут они.
Но это лично мое наблюдение, так как тоже пыталась обмануть систему) |
08.04.2011, 02:37 | #16 |
Пользователь
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
|
Чтобы получить близовский средний итемлевел нужно сделать следующее:
1. перебрать все учитываемые слоты 2. выяснить максимальный итемлевел для каждого из этих слотов из того, что игрок может одеть (в банке, в сумках, или уже одетое). т.е. например для роги будут считаться тряпки и кожа, но не будут считаться кольчуга и латы. БоЕ предметы, которые еще не привязаны к персонажу тоже учитываются. статы и качество (синька/эпик) игнорируются. 3. сделать среднее арифметическое по полученным результатам. По поводу подбора пати хочу сказать что на мой взгляд учитываются только роли Ну, судя по патчноутам теперь еще будет учитываться тип брони и близы будут стараться не ставить в 1 группу двух или трех дамагеров одного типа брони, например латников. Насчет подбора пати по GS - чушь. Сколько раз в мою фулл эпик пати попадали зеленые нубы, и наоборот. И столько же раз наверное я попадал своим зеленым нубом в такую же зеленую нубопати. |
08.04.2011, 07:00 | #18 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
08.04.2011, 07:12 | #19 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
нет, как раз это и есть результат подбора по GS. есть некий "максимальный GS" для подземелья. поэтому если вся пати одета в эпики, в нее придется пихнуть одетого в зелень клиента дабы выдержать это ограничение для всей пати.
|
08.04.2011, 09:41 | #20 |
Ученый
|
Считается, проверено - покупался релик для паладина за хонор, не надевался. Илвл поднялся. В банк убрал - остался на прежнем уровне. Вернул продавцу, илвл спустился на пред. значение.
Нет, только экипировка. Бред, имхо |
08.04.2011, 10:00 | #21 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
А не может ли это обрабатываться на стороне клиента и отправляться на сервер при регистрации в ЛФГ?
|
08.04.2011, 14:31 | #22 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Последний раз редактировалось TOM_RUS; 08.04.2011 в 16:45. |
|
08.04.2011, 18:28 | #23 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
есть резалт-код в списке опций блокировки 5, по триневскому енуму
LFG_LOCKSTATUS_TOO_HIGH_GEAR_SCORE судя по той паре сниффов что у меня есть, локмапы с этим кодом присылаются разные до вступления в группу и после. вывод 1 - идет пересчет локмапов по среднему ГС. вывод 2 - в случае подбора случайной группы ее члены подбираются так, чтобы их средний ГС влез в диапазон для подземелья. вывод 3 - см. предыдущее письмо. @lordronn а как может это клиент обработать до того как группа создана? @TOM_RUS, я именно об этом коде сказал что "нифига не понял". сейчас свой подсчет оттестирую и тут опубликую, а желающие поругают если что... |
08.04.2011, 18:30 | #24 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
08.04.2011, 18:41 | #25 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
непонятна там чушь начинающаяся после уже перебора итемов - непонятно на кой черт берется по 4 значения, в цикле вычисляются какие-то левые
ILVL_WITHOUT_WEAPONS; ILVL_WEAPONS_MH_OH; ILVL_WEAPONS_2H. что это такое в общем понятно, непонятно зачем считать таким кривым способом и что же в результате этого хитрого перебора получится. если надо получить среднее то все это должно быть куда проще. |
08.04.2011, 18:45 | #26 | |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Цитата:
|
|
08.04.2011, 19:07 | #27 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Сам шлет, в локмапах. Реализацию можно глянуть в ТС или у меня в бранче (реализация разная, но формат-то локмапов один
Вот например https://github.com/rsa/mangos/commit...cb322c48a99a08 реализация SMSG_LFG_PARTY_INFO. Фактически это посылаются локмапы от всех членов пати. |
08.04.2011, 19:07 | #28 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Код:
... invType3 = INVTYPE_HEAD; // ignore INVTYPE_NON_EQUIP in calculations sum = 0; do { sum += IlvlByInvType[invType3]; invType3 += 1; } while ( invType3 < MAX_INVTYPE ); ... ILVL_WITHOUT_WEAPONS = fingerILVL + trinketILVL + rangedIlvl4 + sum; |
|
08.04.2011, 19:41 | #29 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Короче господа, вот накарябал:
https://github.com/rsa/mangos/commit...7977f2855b0028 Кто разберется в моем почерке, просьба похвалить-поругать-итп. Может я что не так понял или не доделал. Кстати. Ни у кого не найдется структуры SMSG_UPDATE_LFG_LIST? или хоть куска сниффа с ним. Делать так уж все... Последний раз редактировалось rsa; 08.04.2011 в 21:48. |
Пользователь сказал cпасибо: | PSZ (09.04.2011) |
09.04.2011, 00:09 | #30 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
|
|
Пользователь сказал cпасибо: | rsa (09.04.2011) |
09.04.2011, 09:06 | #31 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
+ http://paste2.org/p/1352828 |
|
Пользователь сказал cпасибо: | rsa (09.04.2011) |
09.04.2011, 13:28 | #32 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Однако же, структурка блин... Ничего, и не таких обламывали.
судя по всему, присылается она уже по выбранному клиентом типу подземелья - LFGType и не более того. а то бы траффик был сумасшедший от такого... хотя и так нечего себе будут блоки... |
09.04.2011, 16:35 | #33 | ||
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
Output.AppendLine(" Average Item Level: " + Reader.ReadSingle()); Пакет приходит при выборе рейда в просмотре рейдов. Пример пакета: Цитата:
Последний раз редактировалось LordJZ; 09.04.2011 в 16:41. |
||
09.04.2011, 17:37 | #34 | ||
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Цитата:
Гляньте пожалуйста на стрктурку MemberFlags (как я понимаю она же UpdateFlags. ничего не забыл/не перепутал?
|
||
09.04.2011, 18:28 | #35 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Да, про структуру это я наврал, Average Item Level только в 4.0 отправляется.
Енумы у меня такие:
|
|
09.04.2011, 19:36 | #36 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
спасибо, roles и правда перепутал
у вас нет типа группы = 6 (рандом), флаг лидера почему-то назван Guide. и еще судя по тому что у меня есть, флаг х08 выставляется когда игрок в пати, я его назвал group. |
09.04.2011, 19:48 | #37 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Близы так называют.
Код:
CHAT_PARTY_GUIDE_GET = "|Hchannel:PARTY|h[Dungeon Guide]|h %s:\32"; - в LFG пати CHAT_PARTY_LEADER_GET = "|Hchannel:PARTY|h[Party Leader]|h %s:\32"; - в обычной пати GUIDE_TOOLTIP = "Indicates that you have some dungeon experience and are comfortable instructing the group in how to overcome the encounters."; Последний раз редактировалось TOM_RUS; 09.04.2011 в 19:52. |
09.04.2011, 22:55 | #38 |
Гость
Сообщений: n/a
|
начал писать поиск подземелий, натолкнулся на такую проблему: а как собственно формировать группы?
Варианты 1) жадно пытаться объединить всех, кого только можно + игроки видят какой-то прогресс - неоптимальный результат и не факт, что вообще группы соберутся 2) перебрать все возожные пары танк-хилер (с учетом групп, в которых они состоят и возможности дополнить такие пары ДД), построить на них максимальное паросочетание + гарантированно оптимальный выбор групп - игроки не видят прогресса, работает за O(N^3), где N количество игроков в очереди 3) жадно объединять танка с хилером, ДД добивать только если можно заполнить группу + танки и хилеры видят прогресс - непонятно, на скольео будет оптимальным результат ну и самы главный вопрос - что делать с игроками, которые выбрали несколько ролей? как их учитывать? Может у кого есть мысли, как это реализовано на оффе, или просто адекватный алгоритм? ЗЫ спасибо rsa и TC за базу для разработок |
10.04.2011, 08:28 | #39 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Покажите код, посмотрим, может что и посоветуем. В подборе надо использовать теории матриц, это довольно толстый курс высшей математики и не тут его обсуждать. Если вы планируете писать на базе ТС, то мне вас жаль - я эти грабли уже на своем лбу долго ощущаю, поэтому больше половины пишу заново... И мой код еще и до половины реализации не доехал.
|
Пользователь сказал cпасибо: | LordJZ (10.04.2011) |
10.04.2011, 09:01 | #40 | |
Ученый
|
Имхо, в очереди как таковой, есть 3 доп. очереди - для каждой роли по одной. И набирается группа путем вытаскивания первых сверху игроков.
Ну и, возможно, + какие-то доп. проверки на уровень предметов и пр. Цитата:
И ещё. Вроде не писали, мб пригодится: - если кто-то из игроков отклонил приглашение, группа получает нового игрока вне очереди; - неполная группа, находящаяся в подземелье, имеет больший приоритет на нового игрока, нежели группа, не отправленная в подземелье (см. выше). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросы по использованию Git | anvd24 | Новичкам | 21 | 25.01.2012 09:17 |
Вопросы по базе | Mediv | MaNGOSZero (1.12.X) | 10 | 13.04.2011 04:31 |
Вопросы от новичка | Archon64 | MaNGOSZero (1.12.X) | 6 | 04.05.2010 13:25 |