Что нового

Прочитать память аддона WOW

cls

Новичок
Сообщения
6
Репутация
0
Пишу бота для вов, реализую получение данных через аддон. Ситуация такая:
- в аддоне по событию OnUpdate для фрейма собираются данные и заносятся в одну строку
- у строки в начале всегда маркер "[addon]"
- после этого автоитом ищу строку по маркеру в памяти игры единожды и читаю её в цикле

В теории всё гладко. Только на практике в памяти этих маркеров [addon] становится штук 700-1000 и найти, какая строка реальная не получается. Такое ощущение, что для каждого вызова OnUpdate WoW выделяет память для всех переменных. Самое важное, что моя переменная в аддоне - глобальная. И всё равно для неё создаётся копия, которая потом засвечивается в памяти и мешает найти мою переменную.

Кто сталкивался с таким?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Прочитать память аддона вов

Вов = WoW?

Так почему не написать по человеческий?
Не уважаете названия игр в которые сами же играете? :mad:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Прочитать память аддона вов

А по русски его так и называют, ВоВ
69.gif

Из-за этого и попали на баш цитаты по типу:
- Чем занимаешься?
- Я в вове.
- А Вова не против?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Прочитать память аддона вов

Belfigor [?]
А по русски его так и называют, ВоВ
Это не по русский, а по игровому жаргону.
Если уже по русский, то скорее Вау, или Уау. А вообще Wow это аббревиатура, и на этот счёт есть правила.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Прочитать память аддона вов

Произношение 99% внутри игровых сокращений будет выглядеть глупо и терять всякий смысл. Если например эта тема называлась бы не "Прочитать память аддона вов", а "Прочитать память аддона wow". Я бы например по названию темы даже не понял о чем речь. О каком-то аддоне под названием "вау" :wacko:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Прочитать память аддона вов

Belfigor [?]
Произношение 99% внутри игровых сокращений будет выглядеть глупо и терять всякий смысл.
Ты сам себе противоречешь. Я же наоборот говорю, нужно использовать оригинальные сокращения, а не произношения (каким «вов» и является).

Если например эта тема называлась бы не "Прочитать память аддона вов", а "Прочитать память аддона wow". Я бы например по названию темы даже не понял о чем речь. О каком-то аддоне под названием "вау"
А я не понял что такое «вов» пока в тему не зашёл. И не надо, wow ты бы очень даже понял.


OffTopic:
P.S
Мне надоело со всеми спорить на тему корректности правил :argue:, тем более в темах не связанных напрямую с этим вопросом.
Скоро терпение лопнет и начну применять санкций по всем параметрам :shooting1:
 

nicki2004

Новичок
Сообщения
13
Репутация
1
опять тут немного нафлудили и ничего по делу ...

cls А как ты ее ищешь свою строку? я еще тока учусь в работе с памятью, но уже коечто знаю. При изменении строки происходит выделение памяти, записи туда нового значения и изменение указателя на этот новый кусок памяти. Поэтому в памяти много твоих похожих строк. Тебе нужно найти указатель на эту строку и по нему будешь точно определять где сейчас живут данные твоей переменной.
 
Автор
C

cls

Новичок
Сообщения
6
Репутация
0
Хм. Точно. Что-то я не подумал об этом. А можно ли сделать эту строку статичной?
Я делал у неё размер при инициализации 1000 символов. Казалось, что строки меньшего размера(100 символов) будут по тому же адресу записываться.

Смысл вот в чём.
При инициализации аддона у меня, допустим, str = "123".
После моего события, str = "456"

Artmoney показывает, что 123 и 456 лежал по разным адресам. Хотя с точки зрения аддона, строка та же. А где указатель брать?
 
Автор
C

cls

Новичок
Сообщения
6
Репутация
0
А вот и ответ.

http://www.mmowned.com/forums/world-of-warcraft/bots-programs/memory-editing/108898-memory-reading-chat-w-help-add.html
 
Автор
C

cls

Новичок
Сообщения
6
Репутация
0
Делаю, как предложил автор поста выше. Вопрос такой. Как прочитать float из памяти средствами AutoIt?

Написал пока что такое, не работает.

Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#Include <WinAPI.au3>
#Include <ProcessConstants.au3>

$cur = 0x00000000;

$pid = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, False, ProcessExists("World of Warcraft")); get access to read/write/anything the process memory

$pBuffer = DllStructCreate("float");
$iRead = 0;

Sleep(100);

While 1
 _WinAPI_ReadProcessMemory($pid, $cur, DllStructGetPtr($pBuffer), 8, $iRead) ; here we read the memory

 $file = FileOpen("go.txt", 1);
 FileWrite($file, $pBuffer);
 FileClose($file);
 If $pBuffer = 189734.2243 Then 
  MsgBox(0, "Found!", $cur);
  Exit
 EndIf
 $cur = $cur + 1;
WEnd


Как быть?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
cls [?]
Использовать DllStructGetData?

Код:
;...
$sBuff_Data = DllStructGetData($pBuffer)
FileWrite($file, $sBuff_Data);
 FileClose($file);
 If $sBuff_Data = 189734.2243 Then 
  MsgBox(0, "Found!", $cur);
  Exit
 EndIf
;...
 
Верх