Перейти к содержанию

Найти view matrix в игре AssaultCube?


Рекомендуемые сообщения

Не могу найти правильный view matrix, нашел два значения 00501AA8, 00501B68 но кажись они не правильные, помогите найти правильный view matrix?

 

 

Таблица CheatEngine 6.4 для AssaultCube:  http://rghost.ru/6n5G9ZYgT

Structure VECTOR3  x.f  y.f  z.fEndStructureStructure VECTOR2  x.f  y.fEndStructurePlayP.l = $024aa36c;ViewMatrix.l = $00501B68ViewMatrix.l = $00501ae8Global Dim view_matrix.f(3, 3)Global rect.RECT Global hDCProcedure world_to_screen(*Enemy.VECTOR3, *To.VECTOR2)    w.f = 0.0   *To\x  = view_matrix(0,0) * *Enemy\x + view_matrix(0,1) * *Enemy\y + view_matrix(0,2) * *Enemy\z + view_matrix(0,3) *To\y  = view_matrix(1,0) * *Enemy\x + view_matrix(1,1) * *Enemy\y + view_matrix(1,2) * *Enemy\z + view_matrix(1,3)     w  = view_matrix(3,0) * *Enemy\x + view_matrix(3,1) * *Enemy\y + view_matrix(3,2) * *Enemy\z + view_matrix(3,3)  If (w < 0.01)     ProcedureReturn 0  EndIf  invw.f = 1.0 / w  *To\x  = *To\x  * invw  *To\y  = *To\y  * invw  width.l = (rect\right - rect\left)  height.l = (rect\bottom - rect\top)   x.f = width/2  y.f = height/2     x = x + 0.5 * *To\x  * width  + 0.5  y = y - 0.5 * *To\y  * height + 0.5  *To\x  = x + rect\left  *To\y  = y + rect\top   ProcedureReturn 1EndProcedurehWind=FindWindow_(0, "AssaultCube")GetWindowRect_(hWind, @rect)hDC = GetDC_(hWind)GetWindowThreadProcessId_(hWind, @pID)hProc=OpenProcess_(#PROCESS_VM_READ, #False, pID)Repeat ;ReadProcessMemory_(hProc,PlayP, Play.VECTOR3, SizeOf(VECTOR3), 0);{ EnemyPReadProcessMemory_(hProc, $0050f4f8, @EnemyP0.l, 4, 0)ReadProcessMemory_(hProc, EnemyP0+4, @EnemyP1.l, 4, 0)ReadProcessMemory_(hProc, EnemyP1+$34, Enemy.VECTOR3, SizeOf(VECTOR3), 0)Debug Enemy\xDebug Enemy\yDebug Enemy\z;}ReadProcessMemory_(hProc,ViewMatrix, @view_matrix(), 64, 0)If world_to_screen(@Enemy, @Too.VECTOR2) = 1  Ellipse_(hDC, Too\x - rect\left, Too\y-rect\top, (Too\x- rect\left)+15, (Too\y-rect\top)+15)EndIf Until a>100
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
  • 2 недели спустя...

Если коротко, то при перехваченном устройстве d3d поиск vm перестает быть необходимым - устройство и так знает свою текущую матрицу, причем их все.
Ссылка на комментарий
Поделиться на другие сайты

Может кто, подскажет другой способ нахождения view matrix?

 

Я думаю, можно найти по сигнатуре функции, которые работают с матрицами внутри процесса игры. Перенаправлять их вызов на свою функцию, получать указатель на матрицу и прыгать обратно на оригинальную функцию. Я не очень уверен, но кажется таким способом не нужно заранее знать указатель на устройство.

Ссылка на комментарий
Поделиться на другие сайты

Если скачать DirectX SDK и открыть справочный файл, то там можно найти все функции работающие с матрицей.

После чего запустить API Monitor поставить хуки на функции. И по ним наверно можно составить сигнатуру функций в CE.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.