PDA

Просмотр полной версии : кто где


mira
25.08.2011, 23:56
вощем решил закончить 2ю часть ядра но возникла небольшая проблемка.
идет скажем осада, толпы варов. как рассортировать их по патям - скоко их там и кто в чъей. или какаято инфа приходит или придетса анализировать всякие там пати бафы/хилы.

xkor
26.08.2011, 00:06
как рассортировать их по патямя конечно давно в линягу не играл, но как то я не догоняю зачем на осаде знать как враги по патям разбросаны...

mira
26.08.2011, 00:55
боты анализируют обтановку и запоминают некоторые вещи в своей БД.

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

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

Добавлено через 9 минут
ктото говорил что чето есть в RelationChanged хотя я его не разбирал. вернее пробывал но помоему нето

supernewbie
26.08.2011, 00:57
с сервера про чужие пати по-моему ничего не приходит, так что думаю только по координатам, бафам

mira
26.08.2011, 01:04
блин слишком много обращений к БД будет + расчетов если анализировать каждый скилл каждого пацанчика в бою на предмет TARGET_PARTY. хотя может и нет.

supernewbie
26.08.2011, 01:23
по таргет пати много не отследишь, ну хотя кд например можно по балансу отследить, или там таргет селф\нон?

mira
26.08.2011, 11:29
Попробую сделать так:
в чаре дополнительное поле partyid добавим.
Приходит маджикланчед с патискилом какимто юзер "u" и 3 цели "t1"-"t3". Проверяем по полям их вхождение в какието известные пати.
1)У всех partyid одинаков - ниче не делаем.
2) у всех partyid=0 или partyid=х. Добавляем тех кто 0 в пати x и назначаем им partyid:=x.
3)в списке фигурируют partyid=х,partyid=y и возможно partyid=0.
Сливаем пати "x" и "y" в "x". Удаляем "y" при необходимости добавляя туда тех то с 0.

Добавлено через 3 минуты
4) у всех partyid=0. Создаем новый экземпляр пати "z". Присваиваем всем partyid:=z

Добавлено через 5 минут
Кстати это мне необходимо даже для случая пати/пати. Программа вычисляет всех дд оппонентов и "степень их серьезности" но ей сейчас также необходимо вычислить хилеров темболее если он какойнеть левак.

Breadfan
26.08.2011, 11:45
а в relation - лишь об "своих" патимемберах инфа, посторонних там нет. О посторонних там лишь флаги\клан\кланлидерство и пр..

Nickers
27.08.2011, 10:42
А сделай еще, чтобы бот определял по ID скиллов профу и высвечивал над титулом + Убивал все КВ, а то ручки болят играть(

mira
27.08.2011, 12:58
профы в окне радара видно разными цветами + они отсортированы по значимости

GoodDrone
27.08.2011, 16:31
профы в окне радара видно разными цветами + они отсортированы по значимости

подразни хоть скрином, а то я рабочего вариант дллки под л2екст под мой серв так и не дождался.

Breadfan
28.08.2011, 08:44
А сделай еще, чтобы бот определял по ID скиллов профу и высвечивал над титулом + Убивал все КВ, а то ручки болят играть(

как ни странно, но - инфа о текущей профе (даже сабклассе) есть в чаринфо...

Nickers
30.08.2011, 10:25
инфа о текущей профе (даже сабклассе) есть в чаринфо...
оО с каких хроник? Всегда там было? ААААААА это ж п***ец!!! Как мне дальше жить?
Дайте пруф любой, плиз.

mira
30.08.2011, 11:14
Пытаюсь все это дело максимально оптимизировать. Перебирать такие массивы данных при каждом скилланчед не найс.
Сейчас сделано примерно так:
есть масив с записями всех доступных существ/персов. Каждая такая запись имеет поле pti - индекс пати в которой он замечен или 0 если нет.
Индекс соответствует второму массиву - классов tsomepartу.
Если все мемберы пати пропадают из видимости - состав пати сбрасываетса в кеш. Если какието чары появляютса в видимости и непричислены не к одной активной пати, происходит поиск в кеше и анализируютса все доступные чары на предмет наличия одной из известных составов. Если подходит то загружаетса в теневом варианте и модифицируетса по ходу поступления инфы.
Ох ппц.. Мб у каво есть еще светлые идеи?

supernewbie
30.08.2011, 15:20
Пытаюсь все это дело максимально оптимизировать. Перебирать такие массивы данных при каждом скилланчед не найс.
Сейчас сделано примерно так:
есть масив с записями всех доступных существ/персов. Каждая такая запись имеет поле pti - индекс пати в которой он замечен или 0 если нет.
Индекс соответствует второму массиву - классов tsomepartу.
Если все мемберы пати пропадают из видимости - состав пати сбрасываетса в кеш. Если какието чары появляютса в видимости и непричислены не к одной активной пати, происходит поиск в кеше и анализируютса все доступные чары на предмет наличия одной из известных составов. Если подходит то загружаетса в теневом варианте и модифицируетса по ходу поступления инфы.
Ох ппц.. Мб у каво есть еще светлые идеи?
а как происходит очищение кеша от таких патей?

mira
30.08.2011, 16:35
а как происходит очищение кеша от таких патей?

если кеш заполнен (а это нада еще умудритса забить все 255 слотов)неиспользуемые длительное время обьекты кеша будут уничтожены. Если случитса страшное - 255 патей в области видимости просто не удастса создать еще один экземпляр.

Добавлено через 8 минут
Сбрасывать кеш в бд на диск пока не решалса. бд нада будет переодически чистить от замусоривания (а это либо фрагментация базы, либо ребилд что медленно и рисковано в случае аварии). Если не чистить упадет производительность и база разрастетса. Как найду изящное решение так заменю удаление сбросом на диск.

Morfik
30.08.2011, 20:54
оО с каких хроник? Всегда там было? ААААААА это ж п***ец!!! Как мне дальше жить?
Дайте пруф любой, плиз.

DWORD(Pointer(myPUser+$368)^);

mira
31.08.2011, 02:16
DWORD(Pointer(myPUser+$368)^);

он тебя не поймет) поцик л2пх юзает
впрочем в пх считать профу цели или текущий сабкласс наверна еще проще

Добавлено через 3 часа 29 минут
без мути всеже не обошлось. если 2 части пати разбежались далеко и воспользовались пати скилами их разобьет на 2 разные пачки. предусмотрим состыковку... и главное как все это скажетса на производительности

Stivian
31.08.2011, 16:28
ППц Вы курите,война роботов не за горами.Терминаторов создаете:)

Xa4ik
31.08.2011, 21:47
задача понятна, понять кто с варов с кем в пати, чтобы еффективней их нагибать.
Предположение по разбивке по патям:
в тру нагибательных патях есть БД/СВС/Кот/Варк, при юзе патискила у пати-чаров точно повышается и передается инфа о атак спид/мув спид/или взмигиванию котобафа на криты в клиенте/повышение от чов. Сохраняются цепочки чаров: А-Б-С-Д которы выхватывали одновременно повышения статов +/-3сек(если одновременно много то игнорить), потом сохраненные цепочки сортируются по возрострнию и получается состав самых активных пать.
Профу саба можно определить по юзескилам или хотябы тип дд/хил/маг/сап...

Breadfan
31.08.2011, 22:20
если смотреть пакеты, то 1): "...при юзе патискила у пати-чаров ..." - при юзе пати скилов - приходит инфа кто кастер, и число\оид обкастовываемых..так что никаких там посторонних взмигиваний и не требуетса...2) сабклас передаютса в юзеринфо - и нечазем разглядывать анализировать юзескил и прочее...

mira
31.08.2011, 22:44
с анализом все нормально) осталось предусмотреть вариант с перекомпоновкой пати соперника чтоб бойцы не путались.
вот тут уже нужно думать как быть, либо либо:
1) если в пати 9 мемберов числитса -> пати полечил пати скилом кардинал -> смотрим доступны ли все хилеры в данный момент -> если кавото нет заменяем (приоритетно кд)
плюсы - гибкость. минусы - сложность расчетов и большой шанс глюков/ошибок
2)если в пати 9 мемберов числитса -> пати полечил пати скилом кардинал -> чтобнеепатьмозги удаляем всех мемберов не доступных данный момент считая что в пати перестройка-> добавляем этого.
плюсы - простота. минусы - утеря инфы частичная

Breadfan
01.09.2011, 06:59
да то я для Xa4ik писал.

mira
01.09.2011, 10:12
Предварительный Тест прошол успешно судя по логу анализа.:)
шаг2: попробуем выполнить анализ оппонентов:
а) физдд / маджики
b)необходимая элементальная защита. Требуетса/не. Какая?
C)bow-резист нужен/не

ALF
01.09.2011, 11:37
вощем решил закончить 2ю часть ядра но возникла небольшая проблемка.
идет скажем осада, толпы варов. как рассортировать их по патям - скоко их там и кто в чъей. или какаято инфа приходит или придетса анализировать всякие там пати бафы/хилы.

ОТ сервера инфа о партии приходит только членам в партии.

Проверять в пати или не можно посылая запрос на пати и анализировать ответ хД (например в радиусе бросать всем чарам запрос на пати. Если чар в пати то сразу прийдет ответ, если ответа нету в течении 10+ms пропускаем его)


Создаем array со списоком ID чаров которые в пати.
Ну а дальше анализиуем кто в каком пати по скилам и т д

mira
01.09.2011, 12:10
Гениально!
Осада и мой чар начинает рассылать 100 персам реквест пати =) сервер *уеет но допустим ему пофиг. Среди них оказываетса 10 зевак копящих славу они для интереса принимают и бойцы видя на них остуствие бафа устремляютса к ним ребафнуть. Матерясь кикаеш их. И тут не с того не с сего из хайда выходит епанарот.. Гм )))

и ваще я устанавиваю связи/пати между атакующими по кастам и типу скилов. Впрочем успешно, осталось проверить заметно ли скажетса на нагрузке.

Добавлено через 15 минут
Приоритетно используетса подход:
1)запоминаем всех каво видим.
2)делаем свои дела слушая/наблюдая движуху кто с кем.
3)в случае "атаки" неким чаром ядро всей его шобле выставляет флаг enemy!
4) тут придумаем как с ними быть :)

Breadfan
01.09.2011, 15:07
Возможна идиотская ситуация: стоят чары, ожидая подхода войск противника.. тут кто-то из соседней пати, от скуки и большого ума - ударит рядом стоящего..а рядом стоящий окажетса - одной из булок - результат - железный мозг в панике решает что рядом находятся враги и дает команду - обезвредить...Причем пострадает не только тот "самый умный", но и его патимемберы...Если не предусмотреть какие-то предохранители - защиту от дурака.

mira
01.09.2011, 15:41
Решаемо. До недавней поры случалось что мемберы начинали яростно мачить друг друга :) ошибка была в безтаргетных аое атаках.

ктото в пати юзнул ауру например пришло :
юзер а; скил б; таргет а;
по логике выходило:
baduser = isbadskill(б) and ismypartymemer(a);
if baduser then addattaker(а)

в итоге попадал в список целей для уничтожения у своихже а там цепная реакция:)