|
исходник для бота - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
21.11.2011, 20:55
|
#31
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
а что именно тебя интересует?? ) все и сразу никто выкладывать, разумеется не будет )) ну по крайней мере в одном месте )))
|
|
|
21.11.2011, 21:07
|
#32
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
|
Цитата: |
|
|
|
|
|
|
|
|
|
а что именно тебя интересует?? )
|
|
|
|
|
|
как использовать инжекты (пример) (желательно с коментариями для тугадумов )
а то выводить хп, лвл и тд на форму научился, а вот с инжектами совсем туплю
p.s. заодно спрошу как сделать боту привязку клану ?)
Последний раз редактировалось Skuka.95; 21.11.2011 в 21:13.
|
|
|
21.11.2011, 21:37
|
#33
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
инжекты... хм... в большинстве своем это это уже готовая функция(на форуме их полно), в которую просто нужно отправить от 1 до ... параметров...
будь то targetcall в который отправляется wid моба... или walkcall в который отправляем xyz... все... ну к примеру...
влом ща делфю открывать и в кодах ковыряться, напишу от себя, как раз проще понять будет(надеюсь)) )
//сначала инжектор
// он собственно есть туть http://zhyk.ru/forum/showthread.php?t=144558
// теперь сама функция нужная нам... к примеру хотим мы перса отправить куда нить... как итог берем walkcall
// если память не изменяет он либо в той же теме, либо в теме с оффсетами на одних из последних страниц есть...
// теперь предположим что у нас есть кнопка, по нажатию на которую перс и должен бежать куда нам надо... пишем код для этой кнопки
// что то вроде
процедура нажатиякнопки(sender);
var
aparams:tparams;
begin
aparams.x=(сюда добавляем хоть полученный х с другого перса... хоть годами ранее записанный ручкой на блокнотике, хоть любые цифры наугад, в которые и полетит персонаж... или клиент просто рухнет к чертям)))
// тоже с y,z и типом движения... то есть вроде как 0 пешком, 1 на полете... сразу известно, чудно, вписываем, неизвестно, заранее определяем через те же оффсеты... и через условие все равно получаем ))
// все... теперь просто инжектим это в клиент
InjectFunc(hprocess(ну тут я думаю понятно), @WalkCall(функция walkcall, кэп), @aParams(ну и собственно наши xyz), SizeOf(aParams ));
вот вроде и вся "сложность" ))
ну только в начале кода все нужное обяъвить надо )) и вроде все )) если что не понятно )) хотя... думаю тут вообще ничерта не понятно )) то спрашивай ))
|
|
|
22.11.2011, 07:04
|
#34
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
|
|
|
22.11.2011, 13:21
|
#35
|
|
|
|
Разведчик
|
Регистрация: 17.12.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: исходник для бота
БЛин вот вам легко а я вот ничего не понимаю из написанного, кроме как написать какой то код вставить какую то хреНь, в другую, а как это выглядит все даже в кошмарном сне не могу представить!!!!!
Читал гайды по созданию и ничего не понял, Хд НУПЬ!!!
|
|
|
22.11.2011, 13:31
|
#36
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
|
Цитата: |
|
|
|
|
|
|
|
|
|
БЛин вот вам легко а я вот ничего не понимаю из написанного, кроме как написать какой то код вставить какую то хреНь, в другую, а как это выглядит все даже в кошмарном сне не могу представить!!!!!
Читал гайды по созданию и ничего не понял, Хд НУПЬ!!!
|
|
|
|
|
|
ну я тоже несовсем понял из того что он написал) но вот пытаюсь понять...
Код:
var
hProcess,PID,BytesCount,buf:dword;
WndHndl:THandle;
const
BASE_ADDR = $00B27A04;
GAMERUN_ADDR = $00B280C4;
HP_OFFSET_addr = $490;
begin
WndHndl:=findwindow(nil,'Perfect World');
GetWindowThreadProcessId(WndHndl, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
//читаем значение хп....
ReadProcessMemory(hProcess,ptr(base_addr),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$34),@buf,4,BytesCount); //( на офе и PWI +$34)
ReadProcessMemory(hProcess,ptr(buf+HP_OFFSET_addr),@buf,4,BytesCount);
//выводим
Edit1.text := IntToStr(buf);
closehandle(hProcess);
end;
начни с понимания этого кода) (код на делфи, если незнаешь делфи то учи делфи... ну или ещё чёнить))
|
|
|
22.11.2011, 14:28
|
#37
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
GA+34+
+3C X
+40 Z
+44 Y
данные в single
а дальше уже от ситуации зависит... следовать в указанную точку... заранее эти коорды находишь и записываешь в программу... следовать за персонажем, получаем эти коорды с нужного персонажа и т.д....
а разница этих(рабочих) координат(1) и отображаемых(2) координат клиента следующая
Х2=(Х1\10)+400
Y2=(Y1\10)+550
Z2=(Z1\10)
получать и передавать клиенту разумеется надо рабочие... ну а вывести в программку, для удобства, можно и переведя их в привычный вид.
|
|
|
22.11.2011, 14:50
|
#38
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
HellD, чувствую с тобой я быстро всем научусь)
я правельно сделал ? (см вложения) а то цифры пугают...
Последний раз редактировалось Skuka.95; 22.11.2011 в 15:07.
|
|
|
22.11.2011, 14:52
|
#39
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
лови, написано за 2-3 минуты, так что сори за возможные недочеты, но суть ясна и вроде все работает... мой по крайней мере в нужную сторону потопал
Код:
unit xxsource;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
WndHndl:Thandle;
HProcessBot,PID,BytesCount:Dword;
end;
type
PParams = ^TParams;
TParams = packed record
Packet: array [0..100] of byte;
FlyPar:Dword;
X:Single;
Y:Single;
Z:Single;
end;
var
Form1: TForm1;
const BA=$B27A04;
const GA=$B280C4;
implementation
{$R *.dfm}
procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
aParamsSize: DWord);
var
hThread: THandle;
lpNumberOfBytes: DWord;
ThreadAddr, ParamAddr: Pointer;
begin
if ProcessID<>0 then
begin
ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
end
end;
procedure WalkCall(aPParams:PParams);Stdcall;
var CallAddress1,CallAddress2,CallAddress3:Pointer;
x,y,z:single;
flying:DWORD;
begin
CallAddress1:=Pointer($0046E410);
CallAddress2:=Pointer($004728E0);
CallAddress3:=Pointer($0046E880);
x:=aPParams^.X;
y:=aPParams^.Y;
z:=aPParams^.Z;
flying:=aPParams^.FlyPar;
asm
pushad
mov eax, dword ptr [GA]
mov esi, dword ptr [eax+$34]
mov ecx, dword ptr [esi+$1050]
push 1
call CallAddress1
mov edi, eax
lea eax, dword ptr [esp+$18]
push eax
push flying
mov ecx, edi
call CallAddress2
mov ecx, dword ptr [esi+$1050]
push 0
push 1
push edi
push 1
call CallAddress3
mov eax, dword ptr [GA]
mov eax, dword ptr [eax+$34]
mov eax, dword ptr [eax+$1050]
mov eax, dword ptr [eax+$30]
mov ecx, dword ptr [eax+$4]
mov eax, x
mov dword ptr[ecx+$20], eax
mov eax, z
mov dword ptr[ecx+$24], eax
mov eax, y
mov dword ptr[ecx+$28], eax
popad
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
AParams:TParams;
x,y,z:Single;
WalkTemp,BaseWalkMode:dword;
begin
WndHndl:=findwindow(nil,'Perfect World');
GetWindowThreadProcessId(WndHndl, @PID);
HProcessbot:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
//заранее найденые по офсетам коорды входа в хх
x:=-2704.39721679688;
z:=770.596313476563;
y:=1183.5029296875;
ReadProcessMemory(HProcessBot, ptr(GA), @WalkTemp, sizeof(WalkTemp), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$34), @WalkTemp, sizeof(WalkTemp), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$64c), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.FlyPar:=0 else aParams.FlyPar:=1; //определяем тип движения 0-пешком, 1 -полет
AParams.X:=x;
AParams.Y:=Y;
AParams.Z:=Z;
// записываем координаты
InjectFunc(hProcessBot,@WalkCall,@aParams,SizeOf(aParams));
//отправляем
closeHandle(HProcessbot);
end;
end.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
22.11.2011, 15:07
|
#40
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
плиз Глянь мой предыдующий пост...
Последний раз редактировалось Skuka.95; 22.11.2011 в 15:11.
|
|
|
22.11.2011, 15:18
|
#41
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
смахивает на то, что получил ты не single, а, скорее, integer, глянь как у тя переменные объявлены...
для сравнения....
x=1279,8076171875
z=219,617858886719
y=1154,66149902344
(527,665,21)
Код:
procedure abrakadabra();
var
x,y,z:single;
Begin
ReadProcessMemory(HProcessBot, ptr(GA), @WalkTemp, sizeof(WalkTemp), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$34), @WalkTemp, sizeof(WalkTemp), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$3c), @X, sizeof(X), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$40), @Z, sizeof(Z), BytesCount);
ReadProcessMemory(HProcessBot, ptr(WalkTemp+$44), @Y, sizeof(Y), BytesCount);
Label1.caption := 'x=' + floattostr(x);
Label2.caption := 'y=' + floattostr(y);
Label3.caption := 'z=' + floattostr(z);
end;
Последний раз редактировалось HellD; 22.11.2011 в 15:27.
|
|
|
22.11.2011, 15:25
|
#42
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
|
Цитата: |
|
|
|
|
|
|
|
|
|
махивает на то, что получил ты не single, а, скорее, integer, глянь как у тя переменные объявлены...
|
|
|
|
|
|
и правда)
-2756,92016601563
522,999572753906
406,253143310547
так да ?)
|
|
|
22.11.2011, 15:28
|
#43
|
|
|
|
Разведчик
|
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
|
Re: исходник для бота
|
|
|
22.11.2011, 15:34
|
#44
|
|
|
|
Разведчик
|
Регистрация: 30.10.2011
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: исходник для бота
Сколько тут всего понаписали =)
1)
|
Цитата: |
|
|
|
|
|
|
|
|
hiho, тобишь это ты? |
|
|
|
|
|
Я такого не говорил, но проконсультировать по незначительным вопросам в аське вполне могу
2) Что касается бота питона, то, как ни крути, в настоящий момент он лучший, судя по описанию. Да и кто вам сказал что он не работает в супер-мега крутой компании? xDD
|
|
|
22.11.2011, 15:37
|
#45
|
|
|
|
Старший сержант
|
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
|
Re: исходник для бота
Последний раз редактировалось Skuka.95; 22.11.2011 в 15:44.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Подсказка] Исходник Бота в тюряге
|
lolopo123 |
Pascal/Delphi |
8 |
02.06.2012 20:26 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 11:30.
|
|