Скиньте руководство. - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок
29.04.2012, 13:44
#31
Разведчик
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
Re: Скиньте руководство.
Edit3.text := x + y + z;
Edit3.text := X +', '+ Y +' '+ Z;
kx := integer(wkx); //убери
ky := integer(wky);
kz := integer(wkz);
X := Float ToStr((kx + 4000) / 10);
{=}
X := FloatToStr((wkx + 4000) / 10);
Y := FloatToStr((wky + 5500) / 10);
Z := FloatToStr((wkz) / 10);
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 29.04.2012 в 13:54 .
29.04.2012, 14:00
#32
Разведчик
Регистрация: 14.04.2012
Сообщений: 24
Популярность: 492
Сказал(а) спасибо: 20
Поблагодарили 14 раз(а) в 13 сообщениях
Re: Скиньте руководство.
Цитата:
Edit3.text := x + y + z;
Edit3.text := X +', '+ Y +' '+ Z;
kx := integer(wkx); //убери
ky := integer(wky);
kz := integer(wkz);
X := Float ToStr((kx + 4000) / 10);
{=}
X := FloatToStr((wkx + 4000) / 10);
Y := FloatToStr((wky + 5500) / 10);
Z := FloatToStr((wkz) / 10);
Может быть так, что формула расчета поменялась?!
У меня несмотря ни на что, ничего не получается
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
KlientWindow:HWND;
ProcessId:Integer;
Text:Integer;
HP,MP,MPMax,HPMax,kx,ky,kz:Integer;
hProcess,WHP,WMP,NoB,WHPMax,WMPMax:DWord;
wkx,wky,wkz:DWord;
x,y,z:string;
begin
KlientWindow := FindWindow(nil, PChar('Perfect World'));
GetWindowThreadProcessId(KlientWindow,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (KlientWindow > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer($A571E0), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$1C), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer($A571E0), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$1C), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$34), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer($A571E0), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$1C), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$34), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer($A571E0), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(wkz+$1C), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(wkz+$34), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(wkz+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer($A571E0), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(wky+$1C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(wky+$34), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(wky+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer($A571E0), @wkx, sizeof(wkx), NoB);
ReadProcessMemory (hProcess, Pointer(wkx+$1C), @wkx, sizeof(wkx), NoB);
ReadProcessMemory (hProcess, Pointer(wkx+$34), @wkx, sizeof(wkx), NoB);
ReadProcessMemory (hProcess, Pointer(wkx+$044), @wkx, sizeof(wkx), NoB);
X := FloatToStr((wkx + 4000) / 10); X := Copy(X, 1, Pos(',', X) - 1);
Y := FloatToStr((wky + 5500) / 10); Y := Copy(Y, 1, Pos(',', Y) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
Edit3.text := x + ' ' + y + ' ' + z;
except
end;
end;
29.04.2012, 14:03
#33
Разведчик
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
Re: Скиньте руководство.
а что выдает то какие данные
=========================================
Код:
....... ,BUM :DWord;//добавить
wkx,wky,wkz:single ;//изменить
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM , sizeof(BUM ), NoB);
ReadProcessMemory (hProcess, Pointer(BUM +$1C), @BUM , sizeof(BUM ), NoB);
ReadProcessMemory (hProcess, Pointer(BUM +$34), @BUM , sizeof(BUM ), NoB);
ReadProcessMemory (hProcess, Pointer(BUM +$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM +$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM +$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
***
Edit3.text := y + ' ' + x + ' ' + z;
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 29.04.2012 в 14:27 .
Пользователь сказал cпасибо:
29.04.2012, 14:28
#34
Разведчик
Регистрация: 14.04.2012
Сообщений: 24
Популярность: 492
Сказал(а) спасибо: 20
Поблагодарили 14 раз(а) в 13 сообщениях
Re: Скиньте руководство.
Цитата:
а что выдает то какие данные
[Ссылки могут видеть только зарегистрированные пользователи. ] | [Ссылки могут видеть только зарегистрированные пользователи. ]
Поменяла, как сказано выше, Delphi выдает ошибку "[Error] Unit1.pas(75): Incompatible types: 'String' and 'Integer'"
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
KlientWindow:HWND;
ProcessId:Integer;
Text:Integer;
HP,MP,MPMax,HPMax:Integer;
hProcess,WHP,WMP,NoB,WHPMax,WMPMax,BUM:DWord;
wkx,wky,wkz,x,y,z:string;
begin
KlientWindow := FindWindow(nil, PChar('Perfect World'));
GetWindowThreadProcessId(KlientWindow,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (KlientWindow > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer($A571E0), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$1C), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer($A571E0), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$1C), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$34), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer($A571E0), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$1C), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$34), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1); //Тут ошибки.
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
Edit3.text := x + ' ' + y + ' ' + z;
except
end;
end;
end.
Последний раз редактировалось (Giga); 29.04.2012 в 14:37 .
29.04.2012, 14:46
#35
Разведчик
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
Re: Скиньте руководство.
Цитата:
wkx,wky,wkz:single ;
это разные типы данных
+
Цитата:
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 29.04.2012 в 15:00 .
2 пользователя(ей) сказали cпасибо:
29.04.2012, 15:20
#37
Разведчик
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
Re: Скиньте руководство.
Код:
// ====Движение к луту + сбор лута (PickWalk): © gen-ostr===
procedure PickWalkCall(aPParams: PParams); stdcall;
var
WID, Typ: DWord;
CallAddress: DWord;
begin
CallAddress := $00469B40; //sumikot Cтарый:$004656F0
WID := aPParams^.WID;
Typ := aPParams^.Typ;
asm
pushad
mov ecx, dword ptr [game_add]
mov ecx, dword ptr [ecx+$34] //старый 20
push Typ // 0 - Сбор лута, 1 - Сбор шахт
push WID // SN ресурса
call CallAddress
popad
end;
end;
procedure PickWalk(WID, Typ: DWord);
var
aParams: TParams;
begin
aParams.WID := WID;
aParams.Typ := Typ;
InjectFunc(hProcess, @PickWalkCall, @aParams, sizeof(aParams));
end;
// =====конец Движение к луту + сбор лута====
пока не знаю рабочие ли адреса еще все инжеты в этой теме
[Руоф] Код для инжекта в память.
+
РУОФФ Адреса и оффсеты
собственно
Цитата:
Структура лута, ресов
BA +0x1C +0x1C +0x28 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x28 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
+0X3C LocX,float /Координата X/ (X/10+400)
+0x44 LocY,float /Координата Y/ (Y/10+550)
+0x40 LocZ,float /Координата Z/ (Z/10)
+0x110 WID, dword
+0x114 ID, dword
+0x150 Type, 2byte
+0x154 Lvl, dword
+0x158 Distance, float
+0x168 +0x0 Name, wchar (UText / Unicode String)
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 29.04.2012 в 15:34 .
Пользователь сказал cпасибо:
29.04.2012, 15:40
#38
Разведчик
Регистрация: 14.04.2012
Сообщений: 24
Популярность: 492
Сказал(а) спасибо: 20
Поблагодарили 14 раз(а) в 13 сообщениях
Re: Скиньте руководство.
Спасибо, буду пробовать.
Добавлю, код абсолютно непонятен. Увы*( Может у кого-нибудь есть желание объяснить содержимое?! Желательно примером.
Последний раз редактировалось (Giga); 29.04.2012 в 15:56 .
29.04.2012, 16:41
#39
Разведчик
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
Re: Скиньте руководство.
поиск предметов вокруг
...
ReadProcessMemory(hProcess, ptr(game_add), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + $1C), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + $28), @ipbufC, sizeof(ipbufC), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbufC + $14), @Count, sizeof(Count), BytesCount);
A:=Count;
B:=0;
SetLength(ResCor,2,A);
Form1.Memo1.Lines.clear;
if Count <> 0 then
begin
Form1.Memo1.Lines.Add('предметов: ' + IntToStr(Count));
for I := $0 to $300 do
begin
ReadProcessMemory(hProcess, ptr(ipbufC + $18), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + (I * $4)), @ipbuf, sizeof(ipbuf), BytesCount);
if Count <> 0 then
begin
repeat
ReadProcessMemory(hProcess, ptr(ipbuf + $0), @ipbuf, sizeof(ipbuf), BytesCount);
Count := Count - 1;
until Count <= 0;
end;
ReadProcessMemory(hProcess, ptr(ipbuf + $4), @ipbuf, sizeof(ipbuf), BytesCount);
// получаем координаты ресурса
ReadProcessMemory(hProcess, ptr(ipbuf + offLocX), @ResLocX, sizeof(LocX), BytesCount);
RX := FloatToStr((ResLocX / 10) + 400);
RX := Copy(RX, 1, Pos(',', RX) - 1);
ReadProcessMemory(hProcess, ptr(ipbuf + offLocY), @ResLocY, sizeof(LocY), BytesCount);
RY := FloatToStr((ResLocY / 10) + 550);
RY := Copy(RY, 1, Pos(',', RY) - 1);
ReadProcessMemory(hProcess, ptr(ipbuf + offLocZ), @ResLocZ, sizeof(LocZ), BytesCount);
RZ := FloatToStr(ResLocZ / 10);
RZ := Copy(RZ, 1, Pos(',', RZ) - 1);
// получаем координаты ресурса
ReadProcessMemory(hProcess, ptr(ipbuf + offResWID), @ResWID, sizeof(ResWID), BytesCount);
if ResWID <> 0 then
ReadProcessMemory(hProcess, ptr(ipbuf + offResID), @ResID, sizeof(ResID), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResType), @ResType, sizeof(ResType), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResLvl), @ResLvl, sizeof(ResLvl), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResDist), @ResDist, sizeof(ResDist), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResName), @ipbufR, 4, BytesCount);
ReadProcessMemory(hProcess, ptr(ipbufR + $0), @ResName, sizeof(ResName), BytesCount);
........
переделайте под себя
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
29.04.2012, 18:42
#40
Разведчик
Регистрация: 14.04.2012
Сообщений: 24
Популярность: 492
Сказал(а) спасибо: 20
Поблагодарили 14 раз(а) в 13 сообщениях
Re: Скиньте руководство.
Цитата:
поиск предметов вокруг
...
ReadProcessMemory(hProcess, ptr(game_add), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + $1C), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + $28), @ipbufC, sizeof(ipbufC), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbufC + $14), @Count, sizeof(Count), BytesCount);
A:=Count;
B:=0;
SetLength(ResCor,2,A);
Form1.Memo1.Lines.clear;
if Count <> 0 then
begin
Form1.Memo1.Lines.Add('предметов: ' + IntToStr(Count));
for I := $0 to $300 do
begin
ReadProcessMemory(hProcess, ptr(ipbufC + $18), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + (I * $4)), @ipbuf, sizeof(ipbuf), BytesCount);
if Count <> 0 then
begin
repeat
ReadProcessMemory(hProcess, ptr(ipbuf + $0), @ipbuf, sizeof(ipbuf), BytesCount);
Count := Count - 1;
until Count <= 0;
end;
ReadProcessMemory(hProcess, ptr(ipbuf + $4), @ipbuf, sizeof(ipbuf), BytesCount);
// получаем координаты ресурса
ReadProcessMemory(hProcess, ptr(ipbuf + offLocX), @ResLocX, sizeof(LocX), BytesCount);
RX := FloatToStr((ResLocX / 10) + 400);
RX := Copy(RX, 1, Pos(',', RX) - 1);
ReadProcessMemory(hProcess, ptr(ipbuf + offLocY), @ResLocY, sizeof(LocY), BytesCount);
RY := FloatToStr((ResLocY / 10) + 550);
RY := Copy(RY, 1, Pos(',', RY) - 1);
ReadProcessMemory(hProcess, ptr(ipbuf + offLocZ), @ResLocZ, sizeof(LocZ), BytesCount);
RZ := FloatToStr(ResLocZ / 10);
RZ := Copy(RZ, 1, Pos(',', RZ) - 1);
// получаем координаты ресурса
ReadProcessMemory(hProcess, ptr(ipbuf + offResWID), @ResWID, sizeof(ResWID), BytesCount);
if ResWID <> 0 then
ReadProcessMemory(hProcess, ptr(ipbuf + offResID), @ResID, sizeof(ResID), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResType), @ResType, sizeof(ResType), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResLvl), @ResLvl, sizeof(ResLvl), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResDist), @ResDist, sizeof(ResDist), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf + offResName), @ipbufR, 4, BytesCount);
ReadProcessMemory(hProcess, ptr(ipbufR + $0), @ResName, sizeof(ResName), BytesCount);
........
переделайте под себя
Было-бы идеально с переменными, ибо я не всегда верно определяю, какого "формата" они должны быть
P.S. Спасибо, без вас бы я наверное умерла, так и не познав истины.
P.S.S. Переменные уже не нужны... Как мне кажется, я начинаю понимать принцип работы.
_____________________________________
Объясните кто-нибудь вот это:
Цитата:
+0x150 Type, 2byte
0000 0000 0000 0001 - Лут
0000 0000 0000 0010 - Шахты
0000 0000 0000 0011 - Монеты
0000 0001 0000 0001 - Синька, Фиол
0001 0001 0000 0001 - Голд, Грин
Отлично... Количество лежащих вокруг меня ресов мне удалось. Но как сделать тоже самое с шахтами ? И главное, как заставить персонажа двигаться к этим координатам?
Последний раз редактировалось (Giga); 29.04.2012 в 19:19 .
29.04.2012, 20:09
#41
Пехотинец
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Re: Скиньте руководство.
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
29.04.2012, 20:12
#42
Пехотинец
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Re: Скиньте руководство.
а еще парочка сайтов которыми я пользуюсь частенька
[
Ссылки могут видеть только зарегистрированные пользователи. ]
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Основные программы с помощью которых получаю/отправляю информации
PW PacketListener
ну и CE ))
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
29.04.2012, 20:29
#44
Пехотинец
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
Re: Скиньте руководство.
Цитата:
Но как сделать тоже самое с шахтами?
Лут лежащий вокруг включает в себя вещи, деньги, траву, сундуки, ресы и тд. То-есть всё что можно собрать с киркой либо без. Каждый из этих обьектов вокруг имеет свой тип
0000 0000 0000 0001 - Лут
0000 0000 0000 0010 - Шахты
0000 0000 0000 0011 - Монеты
0000 0001 0000 0001 - Синька, Фиол
0001 0001 0000 0001 - Голд, Грин
Для получения именно шахты из списка окружающих предметов, нужно в цикле пройтись по всем предметам и сравнить Type с 0000 0000 0000 0010. Все предметы, у которых тип совпадёт - это шахты(трава вроде тоже сюда относится).
PS:
0000 0000 0000 0001 = 1
0000 0000 0000 0010 = 2
0000 0000 0000 0011 = 3
0000 0001 0000 0001 = 257
0001 0001 0000 0001 = 4353
двоичное - десятичное
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
Последний раз редактировалось dwa83; 29.04.2012 в 20:37 .
29.04.2012, 20:36
#45
Пехотинец
Регистрация: 19.02.2010
Сообщений: 98
Популярность: 650
Сказал(а) спасибо: 23
Поблагодарили 150 раз(а) в 45 сообщениях
Re: Скиньте руководство.
Цитата:
Я пожалуй с вами соглашусь, однако ни одного стоящего или понятного исходника я не нашла. Увы... Мне-бы что-нибудь попроще. Что-то среднее между Auto-Potter и Ресокопом
http://zhyk.ru/forum/showthread.php?...52#post2829352
мой бот) в котором есть функция автопота) простенький)
который ищет указанный предмет в инвентаре и юзает его)
ну и юзает скиллы)
конечно код написан не особо умно) но главное работает)
________________
PWA for PWPVP
Автор программы PwRuf - Bot и PwRuf - Crafter
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:31 .