|
оффсеты и autoit - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
16.04.2011, 20:00
|
#1
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
оффсеты и autoit
собственно решил разобраться в данном вопросе, с самого начала возникла загвоздка, не могу получить хп персонажа (да пофигу что, видимо ошибка в алгоритме его получения)
код
Код:
$memory = _MemoryOpen (ProcessExists("elementclient.exe"))
$base = 0xA5BFCC
$result = _MemoryRead ($base, $memory)
MsgBox (0, "!", "base:"&$result)
$gm = $result+0x1C
$result = _MemoryRead ($gm, $memory)
MsgBox (0, "!", "gm:"& $result)
$gm = $result+0x20
$result = _MemoryRead ($gm, $memory)
MsgBox (0, "!", "gm:"& $result)
$hp = $result+0x4b4
$result = _MemoryRead ($hp, $memory)
MsgBox (0, "!", "hp:"& $result)
для удобства сделал вывод после каждого чтения, результата чтения.
сразу после исполнения
Код:
$gm = $result+0x20
$result = _MemoryRead ($gm, $memory)
MsgBox (0, "!", "gm:"& $result)
начинают выводится только ноли. ba новый, как получить GA и т.д. вычитал тут, офф сет самого хп, тоже новый, скажите в чем косяк
пы.сы. мучаю клиент ру офф
Последний раз редактировалось misterzym; 16.04.2011 в 20:02.
|
|
|
16.04.2011, 23:46
|
#2
|
|
|
|
Пехотинец
|
Регистрация: 11.11.2010
Сообщений: 67
Популярность: 16
Сказал(а) спасибо: 58
Поблагодарили 8 раз(а) в 5 сообщениях
|
Re: оффсеты и autoit
realBaseAddress=0xA5B90C
|
|
|
17.04.2011, 00:42
|
#3
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
да, еще тупее сделать ошибку было невозможно...)
спасибо большое
|
|
|
17.04.2011, 13:46
|
#4
|
|
|
|
Разведчик
|
Регистрация: 05.03.2011
Сообщений: 20
Популярность: 10
Сказал(а) спасибо: 20
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
не понял нечего или непашет
|
|
|
17.04.2011, 14:09
|
#5
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
еще вопрос такой на счет [I*4]
что это? я прочитал тему, понял что это итератор, погуглив прочитал о нем, но так и не до конца понял как найти переменную I
Последний раз редактировалось misterzym; 17.04.2011 в 14:37.
|
|
|
17.04.2011, 17:21
|
#6
|
|
|
|
Разведчик
|
Регистрация: 05.03.2011
Сообщений: 40
Популярность: 841
Сказал(а) спасибо: 1
Поблагодарили 9 раз(а) в 8 сообщениях
|
Re: оффсеты и autoit
Это не итератор, а счетчик цикла.
________________
Dinmaite пишет с меня, когда он на работе.
|
|
|
17.04.2011, 19:50
|
#7
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
спасибо, теперь все встает на свои места
|
|
|
27.04.2011, 21:30
|
#8
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
пошел дальше в написание своего творения, и вот новая проблема, копаю уже долго но не вижу причины такого поведения проги
суть - это урезанная, тестовая часть проги, отвечает за составление таблицы персонажей находящихся вокруг тебя, в таблицы столбцы №строки, ник, лвл, клан. вместо этого получаю таблицу из нулей (ну кроме номера строки, кол-во персонажей рядом с тобой определяется идеально)
Код:
#include <nomadmemory.au3>
#include <memory.au3>
#include <GuiListView.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
$base=0xA5B90C ;базовый адрес
Global $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
Global $ga ; GA
Global $pipl ; сколько игроков вокруг тебя
$memory = _MemoryOpen (ProcessExists("elementclient.exe")) ;определяем откуда читать
$FORM_MAIN = GUICreate('Человеки вокруг', 300, 800)
WinSetOnTop ( 'Человеки вокруг', "text", 1 )
$btn=GUICtrlCreateButton ("Refresh", 250, 40, 50) ;Добавляем кнопку обновления
$listview = GUICtrlGetHandle(GUICtrlCreateListView("", 1, 10, 250, 780, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE))
_GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles);Применяем стиль
_GUICtrlListView_AddColumn($listview, "№", 20);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "Nic", 75);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "lvl", 70);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "clan", 70);Добавляем столбец
GUISetState(@SW_SHOW, $FORM_MAIN)
Example1()
Func Example1()
Tablica1()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE ;если закрыть окно
ExitLoop
Case $btn ;нажата кнопка обновления
Tablica1()
EndSwitch
WEnd
GUIDelete()
EndFunc
Func Tablica1();список игроков
_GUICtrlListView_DeleteAllItems($listview); чистим список, если он не пуст
pipl() ;перепроверяем сколько людей на локе
$result = _MemoryRead ($ga, $memory)
$list = $result+0x8
$result = _MemoryRead ($list, $memory)
$list = $result+0x20
$result = _MemoryRead ($list, $memory)
$list = $result+0x18
$result = _MemoryRead ($list, $memory)
For $i=0 To $pipl
If $i<=$pipl Then
_GUICtrlListView_AddItem($listview, $i, $i) ;записываем значение I в 1 столбец
$is=$i*4 ;вычисляем долбаную [I*4]
$list = $result+$is
$result = _MemoryRead ($list, $memory)
$list = $result+0x4
$result = _MemoryRead ($list, $memory)
If $i>=1 Then ; тут пытался сделать листание списка по (+0)^J
$result=$result+0x4
EndIf
; собственно поехали выводить
$zz = $result+0x608
$zz= _MemoryRead ($zz, $memory)
_GUICtrlListView_AddSubItem($listview, $i, $zz, 1, $i+1) ;nic
$zz = $result+0x464
$zz= _MemoryRead ($zz, $memory)
_GUICtrlListView_AddSubItem($listview, $i, $zz, 2, $i+1); Lvl
$zz = $result+0x5D4
$zz= _MemoryRead ($zz, $memory)
_GUICtrlListView_AddSubItem($listview, $i, $zz, 3, $i+1); Clan
EndIf
Next
EndFunc
Func pipl() ;читаем сколько людей рядом
$result = _MemoryRead ($base, $memory)
$ga = $result+0x1C
$result = _MemoryRead ($ga, $memory)
$gm = $result+0x8
$result = _MemoryRead ($gm, $memory)
$gm = $result+0x20
$result = _MemoryRead ($gm, $memory)
$gm = $result+0x14
$pipl = _MemoryRead ($gm, $memory)
EndFunc
для напоминания, да и что бы не листать/искать, вот офф сеты
Структура / Список игроков рядом:
GA +8 +20 +18 +[I*4] + (+0)^J +4: (I in [0..300])
+464 PlayerLvl
+5D4 PlayerClanID
+608 +0 PlayerName (UText / Unicode String)
на счет ника скажу сразу - теоретически, так как считываю я, он и не должен считываться наверное.. но ник меня пока волнует меньше всего, добью позже, особую ценность для меня сейчас предстовляет определение PlayerClanID
Последний раз редактировалось misterzym; 27.04.2011 в 21:34.
|
|
|
27.04.2011, 23:09
|
#9
|
|
|
|
Рыцарь-капитан
|
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
|
Re: оффсеты и autoit
Оффсеты обновились...
Код:
#include <nomadmemory.au3>
#include <memory.au3>
#include <GuiListView.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
Global $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
Global $gma = 0xA5BFCC, $culti, $name, $x, $y, $z, $clan, $pipl
$memory = _MemoryOpen (ProcessExists("elementclient.exe")) ;определяем откуда читать
$FORM_MAIN = GUICreate('Люди вокруг', 800, 600)
WinSetOnTop ( 'Люди вокруг', "text", 1 )
$btn=GUICtrlCreateButton ("Refresh", 750, 40, 50) ;Добавляем кнопку обновления
$listview = GUICtrlGetHandle(GUICtrlCreateListView("", 1, 10, 750, 560, BitOR($LVS_REPORT, $LVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE))
_GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles);Применяем стиль
_GUICtrlListView_AddColumn($listview, "№", 20);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "Nic", 75);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "culti", 70);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "clanID", 70);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "X", 70);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "y", 70);Добавляем столбец
_GUICtrlListView_AddColumn($listview, "z", 70);Добавляем столбец
GUISetState(@SW_SHOW, $FORM_MAIN)
Example1()
Func Example1()
Tablica1()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE ;если закрыть окно
ExitLoop
Case $btn ;нажата кнопка обновления
Tablica1()
EndSwitch
WEnd
GUIDelete()
EndFunc
;Func Tablica2()
; _GUICtrlListView_DeleteAllItems($listview); чистим список, если он не пуст
; pipl()
; Local $I
; $list = _MEMORYREAD($gma, $memory)
; $list = _MEMORYREAD($list + 8, $memory)
; $list = _MEMORYREAD($list + 0x20, $memory)
; $list = _MEMORYREAD($list + 0x18, $memory)
; For $I = 0 To 767
; _GUICtrlListView_AddItem($listview, $i, $i) ;записываем значение I в 1 столбец
; $result = _MEMORYREAD($list + 4 * $I, $memory)
; $result = _MEMORYREAD($result + 4, $memory)
; $NAME = _MEMORYREAD(_MEMORYREAD($result + 1560, $memory), $memory, "wchar[9]")
; _GUICtrlListView_AddSubItem($listview, $i, $NAME, 1, $i+1) ;nic
; $culti = _MEMORYREAD($result + 1136, $memory)
; _GUICtrlListView_AddSubItem($listview, $i, $culti, 2, $i+1); culti
; $clan = _MEMORYREAD($result + 1508, $memory)
; _GUICtrlListView_AddSubItem($listview, $i, $clan, 3, $i+1) ;clan
; $X = _MEMORYREAD($result + 60, $memory, "float") / 10 + 400
; _GUICtrlListView_AddSubItem($listview, $i, $x, 4, $i+1) ;x
; $Y = _MEMORYREAD($result + 68, $memory, "float") / 10 + 550
; _GUICtrlListView_AddSubItem($listview, $i, $y, 5, $i+1) ;y
; $Z = _MEMORYREAD($result + 64, $memory, "float") / 10
; _GUICtrlListView_AddSubItem($listview, $i, $z, 6, $i+1) ;z
; Next
;EndFunc
Func Tablica1()
_GUICtrlListView_DeleteAllItems($listview); чистим список, если он не пуст
pipl()
Local $I
$list = _MEMORYREAD($gma, $memory)
$list = _MEMORYREAD($list + 0x20, $memory)
$list = _MEMORYREAD($list + 0x380, $memory)
$list = _MEMORYREAD($list + 0x88, $memory)
For $I = 0 To $pipl
_GUICtrlListView_AddItem($listview, $i, $i) ;записываем значение I в 1 столбец
$result = _MEMORYREAD($list + 4 * $I, $memory)
$NAME = _MEMORYREAD(_MEMORYREAD($result + 0x618, $memory), $memory, "wchar[9]")
_GUICtrlListView_AddSubItem($listview, $i, $NAME, 1, $i+1) ;nic
$culti = _MEMORYREAD($result + 0x470, $memory)
_GUICtrlListView_AddSubItem($listview, $i, $culti, 2, $i+1); culti
$clan = _MEMORYREAD($result + 0x5E4, $memory)
_GUICtrlListView_AddSubItem($listview, $i, $clan, 3, $i+1) ;clan
$X = _MEMORYREAD($result + 60, $memory, "float") / 10 + 400
_GUICtrlListView_AddSubItem($listview, $i, $x, 4, $i+1) ;x
$Y = _MEMORYREAD($result + 68, $memory, "float") / 10 + 550
_GUICtrlListView_AddSubItem($listview, $i, $y, 5, $i+1) ;y
$Z = _MEMORYREAD($result + 64, $memory, "float") / 10
_GUICtrlListView_AddSubItem($listview, $i, $z, 6, $i+1) ;z
Next
EndFunc
Func pipl()
$result = _MemoryRead ($gma, $memory)
$gm = $result+0x20
$result = _MemoryRead ($gm, $memory)
$gm = $result+0x380
$result = _MemoryRead ($gm, $memory)
$gm = $result+0x14
$pipl = _MemoryRead ($gm, $memory)
return $pipl
EndFunc
По хэштэйблу много пустых мест получаю =(, а по линейному массиву всё гуд =)
Культивация: 0 - нет, 1 - 9 ур, 2 - 19ур, 8 - 79 ур, 20 - Рай1, 21 - Рай2, 23 - Рай3, 30 - Ад1, 31 - Ад2, 33 - Ад3
Последний раз редактировалось semoder; 27.04.2011 в 23:23.
|
|
|
27.04.2011, 23:31
|
#10
|
|
|
|
Разведчик
|
Регистрация: 09.11.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: оффсеты и autoit
и снова я напарываюсь на старые оффсеты
спасибо за новые, и за готовый примерчик
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
оффсеты
|
Maty |
Общение разработчиков |
8 |
14.03.2012 21:00 |
Оффсеты
|
wzhik |
Общение и обсуждение CrossFire |
0 |
19.02.2011 13:43 |
Оффсеты на AxesasPW
|
Nichoas |
Общение и обсуждение Perfect World |
3 |
11.01.2010 22:09 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 12:11.
|
|