PDA

Просмотр полной версии : Программа для автоматического пожирания банок


gurin
16.02.2011, 03:14
Написал маленькую программку на delphi 7. Программка позволяет не покупать хирки, а кушать банки в автоматическом режиме. Также она может переименовать клиент Perfect World, что позволит запустить еще копию клиента.

Так же прилагаю исходники программы, может кому послужит ответом на вопросы как писать подобные программки.

Запуск:

Запустить клиент Perfect World (в дальнейшем PW). Войти в игру. Запустить программку. Вписать (выбрать) название клиента игры (на РуОФФе это "Perfect World"). Настроить параметры. Нажать кнопку "Связаться".

Описание интерфейса:

галочка "Всегда сверху": если включена, то окно программки будет всегда сверху, если выключена - то ведет себя как обычное окно.

галочка "Переименовать клиент": если включена, то после установления связи меняет заголовок окна клиента на имя игрока.

строка "Заголовок клиента": в эту строку вводится название заголовка клиента PW. Сейчас в РуОФФе это Perfect World.

кнопка "Связаться" (она же "Разорвать"): устанавливает связь с игрой. В момент установки связи должна моргнуть надпись "Нет связи" или моргнуть и замениться на надпись "Связь установлена"

Шкалы HР и MР: указывают текущий процент здоровья (маны) вашего персонажа.

Поле "HР или MP": здесь необходимо указать что контролируется HP или MP (прямо так и написать - HP или MP).

Поле "%": здесь указывается при каком значении HP или MP (в зависимости от того что написали в 1-й колонке) следует эмулировать нажатие клавиши.

Поле "Нажать": это значение не редактируется. Указывает какая кнопка будет нажата, если значение HP или MP будет меньше заданного.

Поле "Откат, сек": здесь указывается в секундах через сколько времени опять сэмулировать нажатие клавиши, если значение HP или MP будет меньше заданного.

Данные принимаются к обработке после нажатия на клавишу ENTER.
Удаляются значения клавишей DELETE.

Примечание:
Программа создает файл с тем же именем, но с расширением ini. В этом файле прописаны адреса доступа к данным. В случае если они изменятся в какой-то версии клиента, нужно всего лишь их переписать и все.

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

Вы скажете - зачем эта программа, если многие (тот же BotPirates) позволяет делать тоже самое. Отвечу - все что я видел - достаточно мощные и капризнные прграммы, к тому же исходиков не нашел :(, а эта маленькая, нацеленная на очень узкий круг задач, из-за чего простая и с исходниками. Из-за своей простоты, кода немного и начинающим писателям подобного рода программ может помочь разобраться с чего начать.

Сайт проекта ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

gurin
17.02.2011, 13:51
Спасибо огромное TBX1n за предоставленные offset и помощь.

Программа теперь работает и со свернутым клиентом.

костик123
17.02.2011, 15:30
Спасибо большое
Еще бы пару окон добавить для скилов и аптеки при определенном хп

_Wolf_
17.02.2011, 22:45
Спасибо огромное за исходники.
Думал только у меня такая проблема с козерябликами при получении имени перса (сам пишу дома на D7, на D2007 и выше никак руки недоходят переставить).
Кстати по ID классов персов есть инфа или самому быстрее подобрать, чем искать?

gurin
18.02.2011, 03:03
Еще бы пару окон добавить для скилов и аптеки при определенном хп

А поподробнее свою идею можешь рассказать?

Думал только у меня такая проблема с козерябликами при получении имени перса (сам пишу дома на D7, на D2007 и выше никак руки недоходят переставить).
Кстати по ID классов персов есть инфа или самому быстрее подобрать, чем искать?

Что за козеряблики?

Насчет ID еще не знаю - не рыл. Это моя первая прога для ПВ.

_Wolf_
18.02.2011, 10:13
Что за козеряблики?
Попробуй русские ники прочитать. Причина в UniCode, на Д7 изврат делать поддержку юникода.

Kitsune
18.02.2011, 11:23
Попробуй русские ники прочитать. Причина в UniCode, на Д7 изврат делать поддержку юникода.
у Dinmaite'a же работает и без извратов...

Рэйзор
18.02.2011, 11:24
у Dinmaite'a же работает и без извратов...

очевидно он работает в приличной Delphi 2010 / XE, в которых тип string идет в юникоде

Kitsune
18.02.2011, 11:26
Z.Рэйзор, д7.

gurin
18.02.2011, 11:41
Да никаких проблем с юникодом в Д7 нету. Щаз создам перса с русским ником, и выложу обновленную версию.

Добавлено через 1 час 17 минут
Поправил. Русские ники отображаются нормально. С непечатными символами вроде звездочек и т.д. - проблема. Вместо них знак вопроса.

Как сделать так что бы были нужные символы - пока не нарыл.

Добавлено через 6 часов 2 минуты
Модифицировал программку. Теперь в ней можно задать несколько точек контроля HP и MP.

Например, если HP < 75%, то съесть банку, если стало меньше 50% - использовать джина, если стало критическим (< 5%) - съесть аптеку.

костик123
18.02.2011, 23:21
Спасибо еще раз для еще одних окошек для добавления всего чего надо..
Есче подработать раскрасить сворачивание в удобнное мелкое окно или трей было бы чудестно))

x2lk
19.02.2011, 18:37
То что искал! Часто забываю юзать банки

WtF_O_o
19.02.2011, 19:34
всё работает,только лагает(

gurin
19.02.2011, 21:27
всё работает,только лагает(

Что именно? Не ест банки или что?

Там вроде особо нечему лагать...

DarkSweeT
26.02.2011, 15:02
можно настраивать на пвп серва подставив его сеты?

UniDemoN
26.02.2011, 15:46
А можно сделать такое же, только чтобы юзались не банки и таблы, а соски?

simpko
02.03.2011, 23:06
Спасибо большое, за исходник, давно хотел вникнуть на примере!

VeTaL_UA
02.03.2011, 23:18
можно настраивать на пвп серва подставив его сеты?
А на пвп серварах есть хирки.. Зачем там юзать банки?

iurbarcas1
02.03.2011, 23:56
А на пвп серварах есть хирки.. Зачем там юзать банки?
Есть и ПВП+ПВЕ сервы на которых рейты не болише х100 и там обычно хирки либо дорого стоит либо донат например-> pw.md -relax

koshmar724
03.03.2011, 00:45
просвятите,мне стыдно что я не понимаю о чем идет реч.что такое банки?и что это за прога такая,для чего она?
адрессом ошибся))) на вопрос можно не отвечать

VeTaL_UA
03.03.2011, 11:14
просвятите,мне стыдно что я не понимаю о чем идет реч.что такое банки?и что это за прога такая,для чего она?
адрессом ошибся))) на вопрос можно не отвечать
Банки - это микстуры бодрости и исцеляющие зелья. Они предназначены для восстановления определённого количества Жизненных Сил или Магической Энергии. Чем выше ваш уровень, те высший уровень банок, которые вы можете использовать. Чем выше уровень банок, тем больше Жизненных Сил или Магической Энергии они могут восстановить. Даная программа предназначена для использования банок в автоматическом режиме.
P.S. А адресом ты действительно ошибся/facepalm

gurin
14.03.2011, 13:21
можно настраивать на пвп серва подставив его сеты?

я думаю да, если структура та же, но не пробовал

А можно сделать такое же, только чтобы юзались не банки и таблы, а соски?

да все равно что, прога просто при наличии ХП или МП меньшем указанного жмет на указанную кнопку, но не раньше, чем через заданный интервал, а как это использовать - ограничено только вашей фантазией

mops1k
16.03.2011, 10:38
а нельзя сделать так чтобы банки кушались без кнопок прямо из инвентаря?

gurin
23.03.2011, 06:32
а нельзя сделать так чтобы банки кушались без кнопок прямо из инвентаря?

Можно.

UpertiY
28.03.2011, 15:05
что то не хотит работать программка(((нет связи и все(

VeTaL_UA
28.03.2011, 22:47
что то не хотит работать программка(((нет связи и все(
А поконкретнее можно? В чём суть проблемы? Связи с чем нету? С интернетом?

borts
14.04.2011, 20:20
очень понравилась именно эта программка, но у меня вопрос включаю ее сейчас а количество хп и мп 0% и перс начинает сразу жрать все по откату, как это изменить подскажите пожалуйста.

Segacom12
17.04.2011, 13:39
спасибо спер у меня всё получилось

Dima311
17.04.2011, 14:41
у меня после обновления это прога не работает( банки автоматически пожираются, как исправить?

Mardoc
20.04.2011, 01:24
game_addr_offset=0000001C
gamer_addr_offset=00000020

Я так понимаю, можно просто эти 2 офесета менять после обновления, только не пойму ни как на сколько ) подкскажите пжта

Dinmaite
20.04.2011, 01:28
Эти 2 офсета нужно будет менять тогда, когда на руофе введут Генезис, а до тех пор они равны указанным.

Mardoc
20.04.2011, 02:06
Домучал ее, заработала, подделал под себя, в общем за исходники большое спасибо

Dima311
20.04.2011, 10:12
как доделал? подскажи плиз

Sirioga
20.04.2011, 13:29
как доделал? подскажи плиз

Оперировать можно только вот этими: base_addr, unfreeze_addr, MaxHP, HP, MaxMP, MP, GamerName. Взять их можешь из этой темы ([Ссылки могут видеть только зарегистрированные и активированные пользователи]). И сам доделаешь.

Dev4enka
28.04.2011, 16:29
У меня проблема с прогой запускаю прогу вроде норм связываюсь с сервером,связь проходит удачно.Банки кушает все норм. Но в проге непоказывает скока у мя процентов хп и мп (всегда ноль) и банки кушает неостанавливаясь через каждые 16 сек .
Подскажите что нужно сделать чтоб прога видела скока у мя процентов ХП и МП .

semoder
28.04.2011, 16:44
В PWA.ini
Вот это:
[Base]
base_addr=009C0E6C
game_addr_offset=0000001C
gamer_addr_offset=00000020
unfreeze_addr=009C1984
[Gamer]
HP=0000046C
MaxHP=000004A4
MP=00000470
MaxMP=000004A8
GamerName=00000608

Замени на вот это:
[Base]
base_addr=00A5B90C
game_addr_offset=0000001C
gamer_addr_offset=00000020
unfreeze_addr=00A5C43C
[Gamer]
HP=00000474
MaxHP=000004B4
MP=00000478
MaxMP=000004B8
GamerName=00000618

Dev4enka
28.04.2011, 17:10
вот терь видно в проге скока хп и мп,но терь неработает юзание банок :)

XPlay
29.04.2011, 15:22
автокликер

Python
29.04.2011, 21:14
Причем тут твой автокликер? :brberbrb:

jdark
28.07.2011, 08:48
чет объем не маленький :)
а скрины есть? тож такой проектик веду, вот скринчик
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
учтены откаты сосок химии розовых синих красных банок
вот только не знаю на шару выкладывать нет, врагам ведь попадет)

VeTaL_UA
28.07.2011, 13:02
чет объем не маленький
Нормальный объем. Или тебе места на диске жалко?)
тож такой проектик веду
Я думаю, что все программисты, которые играют в ПВ ведут подобный проект, так как такая программа намного упрощает ПвП...
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
вот только не знаю на шару выкладывать нет
Я бы не выкладывал, так как
врагам ведь попадет
.

jdark
28.07.2011, 16:12
защиту от ненужного поедания химии после респа на гвг сделал?:bl: )))
страшный то какой :))
не, мне критично не на диске место, а в памяти
кстати судя по интерфейсу инжектами пользуешься? как по твоему стабильности клиента от этого страдает?

VeTaL_UA
28.07.2011, 16:59
защиту от ненужного поедания химии после респа на гвг сделал?
Ну что-то в этом роде...
страшный то какой
Раньше был стандартный делфийский дизайн, а потом немного изменить решил) мне нравится)
не, мне критично не на диске место, а в памяти
а что, по твоему, если программа занимает много места на диске, то она и памяти много жрёт?)
кстати судя по интерфейсу инжектами пользуешься?
Наполовину... Некоторые действия инжектами, а некоторые пакетами... Я бы всё на пакетах сделал, но как-то в лом переделывать...
как по твоему стабильности клиента от этого страдает?
По моему, нет, хотя здесь стоит задуматься...

jdark
28.07.2011, 21:03
про объем как сказать :) не прямая зависимость, но очень близко

а вот про пакеты чтото я реально не думал :)....хотя с другой стороны чтобы пакеты отправлять тут тоже ведь инжекты используются?:)

VeTaL_UA
29.07.2011, 00:06
хотя с другой стороны чтобы пакеты отправлять тут тоже ведь инжекты используются?
Ну да. Инжект пакетов:
procedure PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket:pointer;
Len:DWord;
begin
CallAddress:=Pointer($005D7C30);
Len:=aPParams^.Param1;
pPacket:=@aPParams^.Packet;
asm
pushad
mov ecx, dword ptr [PW_BASE_ADDRESS]
mov ecx, dword ptr [ecx+$20]
push Len
push pPacket
call CallAddress
popad
end;
end;

procedure StrToByte(Packet:string; var aParams:TParams);
var
i:integer;
begin
i:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
end;

procedure Packet(Packet: string);
var
aParams: TParams
begin
StrToByte(Packet,aParams);
InjectFunc(ProcessID,@PacketCall,@aParams,sizeof(a Params));
end;

{Ass}
29.07.2011, 14:18
gurin, вы не могли бы соединить 2 ваши программы в 1. "Авто пожиратель банок" + "спичка в клавиатуре"? Обьясню для чего. Некоторых босов, в тех же хх, друля не может на макросе отхилить бао -> "спичка в клавиатуре" + чтобы не следить постоянно за уровнем маны и поеданием банок -> "Авто пожиратель банок"

Otvertka89
19.08.2011, 12:03
спасибо автору

OlegTr
02.09.2011, 06:49
Играю на пвп серве версии 1.6.9 (Extreme) прога некорректно работает, а именно юзает банки не при % хп, а по откату и не показывает кол-во хп\мп , подскажите в чем проблема?

Dinmaite
02.09.2011, 08:09
подскажите в чем проблема?
В том что программа написана под руоф.

gurin
06.09.2011, 13:57
gurin, вы не могли бы соединить 2 ваши программы в 1. "Авто пожиратель банок" + "спичка в клавиатуре"? Обьясню для чего. Некоторых босов, в тех же хх, друля не может на макросе отхилить бао -> "спичка в клавиатуре" + чтобы не следить постоянно за уровнем маны и поеданием банок -> "Авто пожиратель банок"

У меня есть такая программа, там много еще чего есть и из-за своего объёма всевозможных функций честно - лень писать описание.

Moder Death
03.12.2011, 14:16
кто может поправить для нынешней версии руоффа (генезис)?

[Base]
base_addr=00B27A04
game_addr_offset=0000001C
gamer_addr_offset=00000020
unfreeze_addr=00431F02
[Gamer]
HP=00000490
MaxHP=000004D0
MP=00000494
MaxMP=000004D4
GamerName=00000638

что то неправильно :( заблудился я в оффсетах

-----------------------------------------------------
а все сам нашел.. снубил..
gamer_addr_offset=00000034 теперь

Arrym
04.12.2011, 15:00
Спасибо большое!

Lёхa
19.12.2011, 22:40
Немного доработал для себя)

Для удобства теперь ищутся все запущенные клиенты и выводятся имена персонажей с возможньстью выбора.
Так же реализована "спичка" - можно просто указать, через какое кол-во секунд нажимается нужная клавиша (1я и 2я колонка остаются пустые)
Переименовывание окон убрано за ненадобностью на нынешнем руоффе

DarkKitaro
28.04.2012, 23:21
Здравствуйте! Очень удобная штука была, под обновление на Руоффе кто-нибудь переделает?
Заранее спасибо! :)

Independence
01.05.2012, 12:22
Открываю программу,выдает ошибку и сразу закрываетсяю.

Lёхa
02.05.2012, 20:33
Рабочая

Ole_Lukoie
08.06.2012, 22:59
КТО подскажет, что нужно сделать чтоб работала на PWI? Или аналог проги. Спасибо!!!

[Мозгоффский]
09.06.2012, 13:11
КТО подскажет, что нужно сделать чтоб работала на PWI? Или аналог проги. Спасибо!!!
Нужно поменять оффсеты ру оффа на pwi и будет работать)