Доброго времени суток! Решил поделиться впечатлениями от использования данного бота. Все по пунктам:
1 - Хорошо умееть биться с мобами, юзать банки и атаковать петами. Но недолго. Время вылетания светофоров от 20 минут, до 2 часов.
2 - Наблюдаю часто нестыковку по приоритетам выполняемых действий. Персонаж порой мечется между мобами (конкретно друля) пытаясь всзять в таргет моба, потом перескакивает на другого, потом хилит пета ибо прожат Alt + 1 и моб атакует.
3 - функции продажи и починки не тестировал но они мне и не нужны.
Небольшой эпилог. Бот неплохой но все таки краш( светофор) через 20 минут - ни в какие ворота. Подумываю о замене.
Проблема с алгоритмом приоритетов. Надо дорабатывать. Вводить анализ ситуации. Возможно добавить галочку - "не бросать таргет с атакуемого моба". Так же надо ввести функцию защиты от агра, если моб сам напал. Атаковать его если мы находимся у него в таргете. Так же для анализа боевой ситуации необходимо вести подсчет возможных противников и проверять дейтсивтельноли они нас атакуют. Если да - то ввести новый раздел - защита от многочисленного агра. Туда добавить следующий алгоритм: убивать мобов до тех пор, пока - либо не будут убиты все мобы в списке, либо пока ХП не снизится до зафиксированной критической отметки ( например 30%) после этого хильнуться скажем до 70% и дальше добивать. Сегодня проверю логи светофоров и сообщу из-за чего возможно происходит это. Но насколько я понял по динамике нагруженности процессора - игра жрет процессор достаточно сильно. Много окон требуют хорошего камня. Подумываю о 8 ядерном AMD.
Немного про процессор:
Игра я так понимаю разморожена, для возможности бота нажимать скилы через отправку окну нажатий клавиш.
Если отправлять пакетами то и разморозки можно избежать. Нет разморозки - нет и высокой нагрузки.
Подумайте над этим..
edit: по поводу крашей: посмотреть бы исходники, может подскажу чего.
Последний раз редактировалось gta4user; 04.07.2016 в 14:21.
Немного про процессор:
Игра я так понимаю разморожена, для возможности бота нажимать скилы через отправку окну нажатий клавиш.
Если отправлять пакетами то и разморозки можно избежать. Нет разморозки - нет и высокой нагрузки.
Подумайте над этим..
edit: по поводу крашей: посмотреть бы исходники, может подскажу чего.
Исходники всегда лежали тут, никто от вас их не прячет.
А по поводу того, что клиент падает и так знаю в чем проблема.(проблема в инжекте, не могу найти инжект, который 100% заинжектит функцию без последствий. И проблема с передвижением персонажа(самый длинный асм код). Пользуюсь старым инжектом, где неучтено использования скиллов в движении(нового у меня нету).
Добавлено через 26 минут
Цитата:
Сообщение от poWAReHok
Доброго времени суток!......
Проблема с алгоритмом приоритетов. Надо дорабатывать. Вводить анализ ситуации. Возможно добавить галочку - "не бросать таргет с атакуемого моба". Так же надо ввести функцию защиты от агра, если моб сам напал. Атаковать его если мы находимся у него в таргете. Так же для анализа боевой ситуации необходимо вести подсчет возможных противников и проверять дейтсивтельноли они нас атакуют. Если да - то ввести новый раздел - защита от многочисленного агра. Туда добавить следующий алгоритм: убивать мобов до тех пор, пока - либо не будут убиты все мобы в списке, либо пока ХП не снизится до зафиксированной критической отметки ( например 30%) после этого хильнуться скажем до 70% и дальше добивать. Сегодня проверю логи светофоров и сообщу из-за чего возможно происходит это. Но насколько я понял по динамике нагруженности процессора - игра жрет процессор достаточно сильно. Много окон требуют хорошего камня. Подумываю о 8 ядерном AMD.
Есть такая проблема, если у вас друля. Дело в том, что ассист с пета взять нет возможности. Поэтому и получается пет грызет моба, а друля подбирает лут(это норм вариант, а если бьет другого моба?) Если вы знаете, как взять ассист с пета, подскажите, программу не долго поменять.
Логи светофоров лучше проверить на последней версии(25). Заранее спасибо!.
Мы просим, выделить нам память, под свои нужды.
Зачем просить? Давайте пропатчим клиент изначально, что бы был свой кусок памяти?(не знаю, как правильно это сделать)
Зачем мы его закрываем? Пускай будет открытым и вылетов меньше будет(как это правильно сделать, не знаю)
И как вывод напрашивается, как правильно организовать синхронизацию, что бы не было конфликтов с чужим приложением?)
Последний раз редактировалось diagnost; 04.07.2016 в 15:14.
Причина: Добавлено сообщение
Почитал немного исходники. Нашел нюанс, от которого страдал сам:
функция InjectFunc выделяет новую страницу памяти (даже две страницы) каждое использование. Это не очень приятный момент, потому что игра вылетает через n-количество выделенных страниц (даже если их чистить за собой). Предложение - выделить пару страниц единожды и потом использовать их повторно столько раз, сколько нужно. Мою проблему с вылетами это решило, но не факт, что основная проблема вылетов в этом. Почитаю исходники ещё..
Почитал немного исходники. Нашел нюанс, от которого страдал сам:
функция InjectFunc выделяет новую страницу памяти (даже две страницы) каждое использование. Это не очень приятный момент, потому что игра вылетает через n-количество выделенных страниц (даже если их чистить за собой). Предложение - выделить пару страниц единожды и потом использовать их повторно столько раз, сколько нужно. Мою проблему с вылетами это решило, но не факт, что основная проблема вылетов в этом. Почитаю исходники ещё..
Информация о выделении памяти пишется в логах.(Можете запустить бота и посмотреть)
Цитата:
frmMain.Log('pointer(dword(aParamsSize)) = ' + IntToHex(dword(aParamsSize),4));
frmMain.Log('pointer(dword(ThreadAddr)) = ' + IntToHex(dword(ThreadAddr),4));
// ---- Также запишем параметры к ней
ParamAddr := VirtualAllocEx(hProcess, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
Как видно адреса при каждом инжекте используются одни и те же. Чем больше бот работает, адреса могут меняться. В принципе выделение памяти идет правильно.(Попросили нам дали, хорошо попросили, а памяти уже не хватает, отказали, и из-за нехватки клиент начинает писать на HDD и потом сам падает.) По этому вам и говорят, если собираетесь фармить всю ночь, выбираетесь с ГД в чистое поле, перезапуск клиента и бота вам в помощь.
Последний раз редактировалось diagnost; 04.07.2016 в 15:36.
Бота я не использую (поэтому и вылетов не наблюдаю), читаю сообщения пользователей, что вылетает. Решил поделится опытом. Ждём логов бота от пострадавших
Я не знаю насчёт вылетов клиента с ботом, ибо пользую его очень мало, только на ежедневках в мл, и в морае. Но могу сказать одно, что после Эллизиума обновки, у меня комп не выдерживает даже 3 окна. Старый не спорю, но не до такой же степени он слаб? Камень E6750 , мать асус P5K, видяха GTS 250, вин 7 х64 8 гиг оперативки. бп 650W. Часто при запущенном даже одном окне пв, уходит в перезагрузку. До обновы такого не наблюдалось. БП ставил другой, (грешил на свой сначала) та же история. Комп почищен от пыли, термопаста сменена, драйвера последние стоят. В общем хз, играть стало невозможно вообще. При попытке грузануть сразу 3 клиента, через автологин, 100% ребут. Не думаю что тут вина бота по вылетам. Просто я не знаю, что там могли рукожопые мыловцы, сотворить с игрой.
Почитал немного исходники. Нашел нюанс, от которого страдал сам:
функция InjectFunc выделяет новую страницу памяти (даже две страницы) каждое использование. Это не очень приятный момент, потому что игра вылетает через n-количество выделенных страниц (даже если их чистить за собой). Предложение - выделить пару страниц единожды и потом использовать их повторно столько раз, сколько нужно. Мою проблему с вылетами это решило, но не факт, что основная проблема вылетов в этом. Почитаю исходники ещё..
Воспользовался вашим советом! Память выделяется один раз при запуске бота. Все это можно увидеть в логах бота.
Цитата:
//Выделяем страницу память в 2000 байт
int alloc_address = WinApi.VirtualAllocEx(this.OpenedProcessHandle, 0, 1000, WinApi.AllocationType.Commit, WinApi.MemoryProtection.ReadWrite);
//Сначала листа будут прописываться функции
this.FuncAllocMemory = alloc_address;
//с отступом в 500 -будет прописываться пакет
this.LoginAllocMemory = alloc_address + 500;
[Ссылки могут видеть только зарегистрированные пользователи. ]
Теперь осталось решить проблему с потоком. Мне тут подсказали, поток не нужно закрывать, его нужно временно приостанавливать и запускать при необходимости.(пока собираю нужную информацию)
Последний раз редактировалось diagnost; 04.07.2016 в 23:00.
Даю инфу по работе 4-х окон за ночь. Вылетело 2 окна со светофором. В логах самого клиента указано, что он не может открыть файлы с ресурсами. Поскольку клиент при запуске блокирует все свои файлы и устанавливает монопольный доступ к ним, навело на мысль. А вдруг происходит конфликт доступа к его ресурсным файлам и потому летят светофоры. Попробую сегодня раскидать клиента по разным папкам и запустить таким образом.
Добавлено через 9 минут
Цитата:
Сообщение от Fixxxxxxxer
Я не знаю насчёт вылетов клиента с ботом, ибо пользую его очень мало, только на ежедневках в мл, и в морае. Но могу сказать одно, что после Эллизиума обновки, у меня комп не выдерживает даже 3 окна. Старый не спорю, но не до такой же степени он слаб? Камень E6750 , мать асус P5K, видяха GTS 250, вин 7 х64 8 гиг оперативки. бп 650W. Часто при запущенном даже одном окне пв, уходит в перезагрузку. До обновы такого не наблюдалось. БП ставил другой, (грешил на свой сначала) та же история. Комп почищен от пыли, термопаста сменена, драйвера последние стоят. В общем хз, играть стало невозможно вообще. При попытке грузануть сразу 3 клиента, через автологин, 100% ребут. Не думаю что тут вина бота по вылетам. Просто я не знаю, что там могли рукожопые мыловцы, сотворить с игрой.
На работе core i3 4 гига оперативы и Ge Force 9500 на 512 мб. На згд нереал заходить. Светофоры сплошняком. Исходя из описания движка игры (Angelica 3d) - поддерживает до 160 игроков одновременно в зоне видимости. Возможно просто количество игроков превышает указанный предел, и клиент падает.
Последний раз редактировалось poWAReHok; 05.07.2016 в 04:06.
Причина: Добавлено сообщение
Есть Pas интересный и как работает мне не нравится(uCommon.pas), много раз хотел от него отказаться или за нового переписать, так и не смог этого сделать(не хватает знаний, именно из-за этого класса изначально по не многу кушает память) И ошибку найти не могу, вроде все правильно, код написан верно ну не должно быть такого, начинаешь тест на утечку памяти (ReportMemoryLeaksOnShutdown) , показывает что есть, мало но есть, а за ночь сколько набежит.Для тестов его надо отдельно подключать к новому проекту и тестировать.(есть пару TIdNames, которые не закрываются, пока работает бот. Очень много кушало, когда были подключены скиллы) Просто открыл и закрыл
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось diagnost; 05.07.2016 в 08:21.
Есть Pas интересный и как работает мне не нравится(uCommon.pas), много раз хотел от него отказаться или за нового переписать, так и не смог этого сделать(не хватает знаний, именно из-за этого класса изначально по не многу кушает память) И ошибку найти не могу, вроде все правильно, код написан верно ну не должно быть такого, начинаешь тест на утечку памяти (ReportMemoryLeaksOnShutdown) , показывает что есть, мало но есть, а за ночь сколько набежит.Для тестов его надо отдельно подключать к новому проекту и тестировать.(есть пару TIdNames, которые не закрываются, пока работает бот. Очень много кушало, когда были подключены скиллы) Просто открыл и закрыл
[Ссылки могут видеть только зарегистрированные пользователи. ]
А что если поменять платформу ? Я в VS 2008 наверстал крохотную СУБД для рабочих нужд под MS SQL 2008 Server. Попробую вечерком покурить исходники, да может что нибудь эдакое сгенерирую.
P.S. знаний в асме у меня мало и темы потоков я сторонился в силу их заморочности. Но чем черт не шутит =)
В общем хз, играть стало невозможно вообще. При попытке грузануть сразу 3 клиента, через автологин, 100% ребут. Не думаю что тут вина бота по вылетам. Просто я не знаю, что там могли рукожопые мыловцы, сотворить с игрой.
Возможно виновата Themida, которой начали паковать клиент игры мыловцы (как раз с Эллизиума).
2) Есть ещё вариант PWI-шного клиента, но для этого оффсеты нужно менять на боте. [OFFTOPIC]Но можно и без бота окна потестировать на производительность[/OFFTOPIC]
На работе core i3 4 гига оперативы и Ge Force 9500 на 512 мб. На згд нереал заходить. Светофоры сплошняком. Исходя из описания движка игры (Angelica 3d) - поддерживает до 160 игроков одновременно в зоне видимости. Возможно просто количество игроков превышает указанный предел, и клиент падает
Светофоров быть не должно при условии наличия свободной оперативы. Если есть свободная память и светофор - железо тут не при чем. Сам тестил на компе с 2 гигами оперативы - одно окно на ЗГД вполне себе бегает, отжирая чуть больше гига.
Цитата:
Я не знаю насчёт вылетов клиента с ботом, ибо пользую его очень мало, только на ежедневках в мл, и в морае. Но могу сказать одно, что после Эллизиума обновки, у меня комп не выдерживает даже 3 окна. Старый не спорю, но не до такой же степени он слаб? Камень E6750 , мать асус P5K, видяха GTS 250, вин 7 х64 8 гиг оперативки. бп 650W. Часто при запущенном даже одном окне пв, уходит в перезагрузку. До обновы такого не наблюдалось. БП ставил другой, (грешил на свой сначала) та же история. Комп почищен от пыли, термопаста сменена, драйвера последние стоят. В общем хз, играть стало невозможно вообще. При попытке грузануть сразу 3 клиента, через автологин, 100% ребут. Не думаю что тут вина бота по вылетам. Просто я не знаю, что там могли рукожопые мыловцы, сотворить с игрой.
Если в системном журнале нет ошибок и не создаются дампы - очень сильно похоже либо на перегрев камня либо на битую память. Первое проверяется монитором CPU Temperature в разделе [Ссылки могут видеть только зарегистрированные пользователи. ] сразу после ребута, второе - утилитой MemTest или аналогом.