 |
Поиск ItemId, TypeId - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
29.10.2012, 06:40
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Поиск ItemId, TypeId
Играю на pwmax, решил сделать авто сбор ресурсов ("Пельмень =PWMAX= - валюта сервера). Часто набивается ресов очень много, а вот их всех по 1 собирать желания особо нет.
Пробую настроить пилесос. Фармлю соло в данже, должно быть без палева.
Пользуюсь функцией отправки пакетов
 |
Цитата: |
 |
|
|
|
|
|
|
|
local $packet, $packetSize
$packet = '0600'
$packet &= _hex($uniqueItemId)
$packet &= _hex($itemTypeId)
$packetSize = 10
sendPacket($packet, $packetSize, $pid) |
|
 |
|
 |
|
Все было бы ничего. Да только ресы то не стандартные. Из базы пв их не возьмешь. Можна ли заполнить отправку такого пакета. И как найти эти смещения?
Если можна поподробней, как для начинающего)))
|
|
|
29.10.2012, 13:21
|
#2
|
|
|
|
Рыцарь-лейтенант
|
 Регистрация: 31.01.2011
 Сообщений: 413
 Популярность: 14489
 Золото Zhyk.Ru: 300
 Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
|
Re: Поиск ItemId, TypeId
Всё не так просто. Тебе нужен не айди предмета, а его WID (World ID), то есть его глобальный айди. А его можно узнать только сканируя ближайшие ресурсы/лут
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
|
|
|
29.10.2012, 14:36
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
29.10.2012, 15:51
|
#4
|
|
|
|
Рыцарь-лейтенант
|
 Регистрация: 31.01.2011
 Сообщений: 413
 Популярность: 14489
 Золото Zhyk.Ru: 300
 Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
|
Re: Поиск ItemId, TypeId
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Я тут подумал, нельзя ли просканировать инвентарь (оставив в в нем только этот рес) и вытянуть таким образом WID?
|
|
 |
|
 |
|
WID для каждой единицы предмета на земле - уникальный. Например, лежат на земле 5 кучек какого-то реса. И имеют они WID 37622382, 37622383, 37622384, 37622385, 37622386 (цифры от балды взяты). И не бывает двух предметов с одинаковым WID.
В инвентаре, если не ошибаюсь, предметы вообще теряют твой WID и остается только обычный ID
На чём пишешь?
Нужные оффсеты для лута (1.4.5)
Код:
Структура лута, ресов
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)
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
Последний раз редактировалось Smertig; 29.10.2012 в 15:59.
|
|
|
31.10.2012, 14:42
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
Каким образом просканировать, и отобрать в масив близлежащие wid?
|
|
|
31.10.2012, 17:23
|
#6
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: Поиск ItemId, TypeId
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Каким образом просканировать, и отобрать в масив близлежащие wid?
|
|
 |
|
 |
|
выше оффсеты дали все что может понадобиться. осталось тока BA найти и составить полную структуру. примерно будет выглядеть так
Код:
for i:=0 to $300 do
begin
ReadProcessMemory(hProcess,ptr(Ba),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$24),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$18),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+i*4),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$4),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$110),@WordID,4,BytesCount);
так ты получишь список близлежащих ресурсов. Если пишешь на delphi то их Id можно занести в Memo поле таким образом:
Код:
Memo1.lines.add(inttostr(WordId))
Список конечно получиться большой. потом просто сделай процедуру отсеивания повторов и останутся только несколько ближайших ресов.
Так провернуть в нескольких областях или выкопать все кроме нужного реса и получить его ID
Последний раз редактировалось Ginrey; 31.10.2012 в 18:54.
|
|
|
Пользователь сказал cпасибо:
|
|
01.11.2012, 05:27
|
#7
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
Что делаю не так?
 |
Цитата: |
 |
|
|
|
|
|
|
|
FOR $I = 0 TO 768
$POINT = Dec($I*4)
$RES = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_M EMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(11696644, $MEMID) + 28, $MEMID) + 28 , $MEMID) + 40, $MEMID) + 24, $MEMID) +$POINT, $MEMID) + 4, $MEMID) +268, $MEMID)
IF $RES <> 0 THEN
FileWrite(@ScriptDir & "\Log.txt", $RES & @CRLF)
ENDIF
NEXT |
|
 |
|
 |
|
Файл остается пустым, и ничего туда не пишется.
Когда ставлю это смещение:
 |
Цитата: |
 |
|
|
|
|
|
|
|
BA +0x1C +0x1C +0x28 +0x14 Count, dword /Количество/ |
|
 |
|
 |
|
В файл пишется количество близлежащих ресов на полу.
Последний раз редактировалось ivasik; 01.11.2012 в 05:30.
Причина: _MEMORYREAD не могу выправить. В проге этой ошибки нет.
|
|
|
01.11.2012, 13:53
|
#8
|
|
|
|
Рыцарь-лейтенант
|
 Регистрация: 31.01.2011
 Сообщений: 413
 Популярность: 14489
 Золото Zhyk.Ru: 300
 Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
|
Re: Поиск ItemId, TypeId
ivasik, о, родной AutoIt. Автор, тебе удобно переводить все оффсеты в десятичную систему счисления? Почему бы вместо
 |
Цитата: |
 |
|
|
|
|
|
|
|
$RES = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_M EMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(1169 6644, $MEMID) + 28, $MEMID) + 28 , $MEMID) + 40, $MEMID) + 24, $MEMID) +$POINT, $MEMID) + 4, $MEMID) +268, $MEMID) |
|
 |
|
 |
|
не записать нормально
 |
Цитата: |
 |
|
|
|
|
|
|
|
$RES = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_M EMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(0xB2 7A04, $MEMID) + 0x1C, $MEMID) + 0x1C, $MEMID) + 0x28, $MEMID) + 0x18, $MEMID) +$POINT, $MEMID) + 0x4, $MEMID) + 0x10C, $MEMID) |
|
 |
|
 |
|
п.с. последний оффсет неверный, попробуй
 |
Цитата: |
 |
|
|
|
|
|
|
|
+0x110 WID, dword
+0x114 ID, dword |
|
 |
|
 |
|
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
|
|
|
Пользователь сказал cпасибо:
|
|
01.11.2012, 13:58
|
#9
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
02.11.2012, 02:30
|
#10
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
п.с. последний оффсет неверный
|
|
 |
|
 |
|
Пишу не для руофа, поэтому для меня верно:
 |
Цитата: |
 |
|
|
|
|
|
|
|
+0x10C WID, dword
+0x110 ID, dword |
|
 |
|
 |
|
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
а где вы взяли смещение +0x268 если перевести 110 из 16-ричной в 10-тичную получится 272.
|
|
 |
|
 |
|
Смотрим выше. 268 взялось из 0x10C
Всем помагавшим спс, разобрался, код заработал. Хочу написать пылесос, но пока получился только сборщик ресов, по определенному ид. Пользуюсь этой функцией:
 |
Цитата: |
 |
|
|
|
|
|
|
|
local $packet, $packetSize
$packet = '0600'
$packet &= _hex($uniqueItemId)
$packet &= _hex($itemTypeId)
$packetSize = 10
sendPacket($packet, $packetSize, $pid) |
|
 |
|
 |
|
Но с этой функцией перс, после убийства моба начинает все ресы физически собирать (12-14шт) это очень долго. Как сделать, чтобы он их тупо втягивал, пылесосом?
|
|
|
02.11.2012, 02:51
|
#11
|
|
|
|
Главнокомандующий
|
 Регистрация: 28.03.2009
 Сообщений: 1,666
 Популярность: 67466
 Сказал(а) спасибо: 246
Поблагодарили 1,560 раз(а) в 691 сообщениях
|
Re: Поиск ItemId, TypeId
Помнится была программа от семодера для китайской фришки, так там реальный пылесос, почти сразу ресы втягивались
|
|
|
02.11.2012, 05:45
|
#12
|
|
|
|
Разведчик
|
 Регистрация: 08.10.2012
 Сообщений: 2
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
02.11.2012, 09:59
|
#13
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
02.11.2012, 14:15
|
#14
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
02.11.2012, 19:44
|
#15
|
|
|
|
Разведчик
|
 Регистрация: 23.12.2009
 Сообщений: 42
 Популярность: 275
 Сказал(а) спасибо: 34
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: Поиск ItemId, TypeId
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Информация] Поиск игр.
|
Mephistopheles |
Игры |
8 |
26.04.2020 18:03 |
[Помогите!] ItemID вытащить из пакета?
|
trdd132 |
Общение и обсуждение, архив Lineage 2 |
0 |
22.08.2011 09:21 |
[Помогите!] Поиск ЧС
|
Samira18 |
Общение и обсуждение Perfect World |
1 |
25.03.2011 15:05 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:08.
|
 |