Rus. server

11/18/2009 15:51 dokmlm#631
Верно, заморочка с float, только сегодня добился нормального полета по точкам. По началу как раз затупил со значениями и получал полет в координаты 440,550,0. Потом для теста вывел чистые координаты (без пересчета по формуле) и записал по адресам:

20+C10+30+04+20 write x
20+C10+30+04+28 write y
20+C10+30+04+24 write z

примерно так:
Quote:
_MemoryPointerWrite($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $OFFSET_MOVETOX, -322.543792724609, "float")
_MemoryPointerWrite($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $OFFSET_MOVETOY, -379.948486328125, "float")
_MemoryPointerWrite($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $OFFSET_MOVETOZ, 463.389099121094, "float")
И все встало на свои места.
11/19/2009 01:34 sumikot#632
Нашел зум - но только странно как то получилось - отдалять камеру от перса могу хоть за облака, а вот приближение - осталась та же граница. Существует еще одна ячейка памяти на приближение или больше с ним ничего не сделаешь?
11/19/2009 09:26 zachelovek#633
Это ппц, товарищи! Полгода назад я активно следил за интернет ресурсами, в которых обсуждались умные боты. Потом стало вообще не до игры, недавно вернулся в игру, с Таразеда на Пегас пересел. Решил поставить старого доброго MHS и что же? на стартовых локациях все места фарма просто заполонены этими умными ботами!!!!!!! >_< Своего даже приткнуть некуда>_<. Их там просто десятки! Я лично такого никогда не видел.
И что самое интересное, на всех инет ресурсах никто ничего не знает о этих ботах(
ФАААААААААК!!!!!!!! Да где они их берут!!!!!!!!!!! >_<?????????????
11/19/2009 10:20 begemot#634
Потестил видеохак =) Отличная штука, теперь меньше лагов при разворачивании окна. Работает. Процессор, правда, нагружает в разы сильнее =) И памяти вроде больше выделяется (хз, тк у меня файл подкачки 16гб))
11/19/2009 10:20 sumikot#635
Что то мне надоело :) бота развивать. Предлагаю проект - антибот. Полет по точкам реализован - ставим бота - летает по карте и собирает информацию о других ботах - отличительные признаки тоже есть. Автоматом сливает информацию в суппорт нивала + к ним же на форум - это тоже сделать нетрудно. Локации освобождаются - ставим своих ботов. :) Главное - не слить своих!
11/19/2009 12:59 Novohyd#636
:D
11/19/2009 13:02 Novohyd#637
:D
Кстати, про облет. Кто-нибудь пробовал без мауса активировать диалог с НПС?
11/19/2009 13:24 vies1812#638
Quote:
Вообще то я считал, что i при респе моба даже в одной локации может быть разным - все зависит от выделения памяти клиентом для конкретно этого куска данных - поэтому таргет моба веду несколько иначе - произвожу перебор всех мобов с проверкой на дистанцию, тип и занятость. Т. е. Если тип 6 и не занято, сравнение дистанции - если меньше предидущего - сохраняем ID для возможного таргета. Следующий то же самое... И так все мобы. А если ты сначала прицеливаешься, то перебор ведешь, сравнивая ID с тем, что в цели. А чтобы бот не тупил, стоя на месте и считывая данные для сравнения, делаешь это, допустим, когда он бежит за лутом - все равно это время делать нечего... Ну почти нечего... А с i работаю только при одной жизни одного конкретного моба. Моб умер - i бесполезно, так как оно при респе может быть таким же, а может и измениться. Специально не сравнивал - для этого нужно вести статистику, а мне что то лень.
Спасибо за ответ, но к сожалению так и понял основного что хотел узнать :(
За основу я взял уже готового бота MHS и просто занимаюсь его доработкой, а этот бот, как ты знаешь, не сканируе всех мобов вокруг, а ведёт перебор исходя из задоного списка. Мне кажеться так даже быстрее получаеться, хоть иногда тупит с дистанцией, и движется не к самому близкому мобу.
Так вот, в при выборе моба не идёт проверка на занятось, а у меня никак не получаеться "вытянуть" достоверную инфу про занятость, потому как ты правильно заметил, значение "і" меняеться и результат соответствующий :(
Если не тяжело напиши как ты проверяешь "занятость" моба в момент их перебора.
Плиз :)
11/19/2009 14:22 dwar#639
Quote:
Originally Posted by Novohyd View Post
:D Кстати, про облет. Кто-нибудь пробовал без мауса активировать диалог с НПС?
Это спокойно делается через инжект кода. Так же можно, после долгих плясок, активировать разговор посредством замены определенных значений в определенных адресах памяти. Но последний вариант уж больно не продуктивен, ибо получилось лишь начать диалог, а продолжить – нет.
11/19/2009 16:46 sumikot#640
vies1812 Я бы написал, но получается, что так будет еще запутаннее - я не пользуюсь меморипоинтреад, как в мхс, и посему мне прийдется коментировать каждую свою переменную. Просто исходи из того, что у тебя в массиве 768 мест для хранения характеристик мобов. Ты считываешь ячейку ИД с каждого места, и если она равна значению в цели - это как раз и есть искомый моб. Следующим действием считываешь ячейку с этого места, в котором хранится занятость моба (его таргет), да и другие интересующие характеристики тоже - допустим, можешь координаты посмотреть и подойти ближе - но это уже усовершенствования. А цикл можешь сделать любой - у меня do-until. В каждом круге цикла прибавляешь i на 1 (инкрементируешь) и считываешь, потом сравниваешь.
11/19/2009 17:04 dokmlm#641
Кстати о перелете по точкам, все можно сделать гораздо проще и при этом не ловить глюков с анимацией по достижении нужных координат и при ручном изменении маршрута:

Взлетаем:
ControlSend($APP_TITLE, "", "", "{F6}", 0)

Поднимаемся по Z:
Send("{SPACE DOWN}")
Sleep(2000)
Send("{SPACE UP}")

Дальше снимаем с ручника, записываем координаты и летим в указанную точку.
1. Write int 0 to done flag: [[[[[base] + 0x20] + 0xc10] + 0x30] + 0x4] + 0x8
2. Write float value 1 to X: [[[[[base] + 0x20] + 0xc10] + 0x30] + 0x4] + 0x20
3. Write float value 2 to Y: [[[[[base] + 0x20] + 0xc10] + 0x30] + 0x4] + 0x28
4. Write float value 3 to Z: [[[[[base] + 0x20] + 0xc10] + 0x30] + 0x4] + 0x24
5. Write int 0 to type: [[[[[base] + 0x20] + 0xc10] + 0x30] + 0x4] + 0x2c

Вопрос по автосбору ресов, нашел тут концепцию:
[Only registered and activated users can see links. Click Here To Register...]
Quote:
2) walk to and forage mines/ressources/herbs:
[[[[[[Base Adress]+0x20]+0xBFC]0x30]+0x8]+0x20] (kind of "move to" id offset)
- freeze that to ur ressource ID (can be found here: [[[[[[[Base Adress]+0x8]+0x28]0x18]+i*0x4]0x4]0x10C])
- insert random (but valid) mop-id here [[Base Adress]+0x20]+0xA54
- do normal attack
--> char will go to mine/herb and forage it automatically
Но что-то сомнительный способ, отлавливать моменты когда рес на пути к каком либо мобу, ловить этого моба в таргет, посылать нормальную атаку, подменять ид моба на ид реса и только после этого, чар должен по пути к атакуемому мобу собрать рес.

Жесть вобщем то, пните в нужную сторону кто уже сделал автосбор, благодарность моя не будет иметь границ ;)
11/19/2009 17:30 origmas#642
Привет .. кто-то может подсказать - по координатам Бота что-то никак не вкурю ..

Global $OFS_X[3]
$OFS_X[1] = 0x20
$OFS_X[2] = 0x3C

$X = _MemoryPointerRead($BASE, $PROCESS, $OFS_X)
$LAB_X = GUICtrlCreateLabel("X = " & $X[1], 15, 605, 100, 20)

==>> получаю координату - например такого вида Х = 3302035011

заркнее благодарен ..
11/19/2009 17:41 dokmlm#643
Quote:
Originally Posted by origmas View Post
Привет .. кто-то может подсказать - по координатам Бота что-то никак не вкурю ..

Global $OFS_X[3]
$OFS_X[1] = 0x20
$OFS_X[2] = 0x3C

$X = _MemoryPointerRead($BASE, $PROCESS, $OFS_X)
$LAB_X = GUICtrlCreateLabel("X = " & $X[1], 15, 605, 100, 20)

==>> получаю координату - например такого вида Х = 3302035011

заркнее благодарен ..
Вот так будет правильно:

Global $OFS_X[3]
$OFS_X[1] = 0x20
$OFS_X[2] = 0x3C

$X = _MemoryPointerRead($BASE, $PROCESS, $OFS_X, "float")
$X = 400 + $OFS_X[1] / 10

$LAB_X = GUICtrlCreateLabel("X = " & Int($X), 15, 605, 100, 20)

Формулы пересчета координат в нормальный вид:
$X = 400 + $OFS_X[1] / 10
$Y = 550 + $OFS_Y[1] / 10
$Z = $OFS_Z[1] / 10

Это все уже тут было.
11/19/2009 17:45 dwar#644
dokmlm
Quote:
Но что-то сомнительный способ, отлавливать моменты когда рес на пути к каком либо мобу, ловить этого моба в таргет, посылать нормальную атаку, подменять ид моба на ид реса и только после этого, чар должен по пути к атакуемому мобу собрать рес.
Жесть вобщем то, пните в нужную сторону кто уже сделал автосбор, благодарность моя не будет иметь границ
Указанный способ жонглирования значениями ячеек памяти, одно туда, запустить атаку, записать еще куда-нибудь – работает, но есть алгоритмы быстрее и надежнее. Смотреть стоит в область массива «действий», где записаны указатели всех основных операций чара… А имея эти указатели, легко заставить чара выполнять требуемое… и не только собирать рес.
P.S. Товарищи, обращаю внимание, что много полезной информации находится в PW_Mem_Table v2.xls: и нужные смещения, и массивы с указателями, и т.п.
11/19/2009 17:49 dokmlm#645
Quote:
Originally Posted by dwar View Post
dokmlm
Указанный способ жонглирования значениями ячеек памяти, одно туда, запустить атаку, записать еще куда-нибудь – работает, но есть алгоритмы быстрее и надежнее. Смотреть стоит в область массива «действий», где записаны указатели всех основных операций чара… А имея эти указатели, легко заставить чара выполнять требуемое… и не только собирать рес.
P.S. Товарищи, обращаю внимание, что много полезной информации находится в PW_Mem_Table v2.xls: и нужные смещения, и массивы с указателями, и т.п.
Спасибо за пинок, но я как жопой почуял что нужно заглянуть в эту табличку, заглянул и сам пришел к подобному выводу. Уже занялся копанием. :rolleyes: