Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
01.09.2011, 20:40
#421
Новичок
Регистрация: 11.05.2010
Сообщений: 19
Сказал Спасибо: 0
Имеет 10 спасибок в 6 сообщенях
Направление камеры -
Перехватываю ALineagePlayerController_PlayerCalcView
Запоминаю адрес класса
Перехват убираю
Угол поворота камеры получаю по по смещению 0x1C4 в классе
Кто-бы придумал, как вообще без перехвата этот угол получать.
Да и смещение может смениться...
Код:
void ALineagePlayerController_PlayerCalcView_hook(ALineagePlayerController *This, int /*edx*/, int Actor, FVector *Vector, FRotator *CameraRotation)
{
ALineagePlayerControllerThis = This;
ALineagePlayerController_PlayerCalcView(This, 0, Actor, Vector, CameraRotation);
Убираю перехват....
}
if (ALineagePlayerControllerThis) {
CameraYaw = *(PDWORD)((PBYTE)ALineagePlayerControllerThis+0x1C4); //это работает Yaw тут
За это сообщение Эдвадко нажился 3 спасибками от:
02.09.2011, 10:56
#422
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
ну вот так и думал что какоенеть View )
Добавлено через 10 часов 33 минуты
А не пробывал взять в хуке сразу из rotator? В нем мб нече кроме yaw.pitch.roll кватерниона и нет нефига. А с таким смещением в контроллере тема не очень нравитса...
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 02.09.2011 в 10:56 .
Причина: Добавлено сообщение
02.09.2011, 18:35
#423
Новичок
Регистрация: 11.05.2010
Сообщений: 19
Сказал Спасибо: 0
Имеет 10 спасибок в 6 сообщенях
Так и делал раньше. Но хочется избавиться от хуков...
void __fastcall ALineagePlayerController_PlayerCalcView_hook(ALine agePlayerController *This, int /*edx*/, int Actor, FVector *Vector, FRotator *CameraRotation)
{
static int OldYaw;
ALineagePlayerController_PlayerCalcView(This, 0, Actor, Vector, CameraRotation);
if (CameraRotation->Yaw != OldYaw) {
OldYaw=CameraRotation->Yaw;
Отсылаем Yaw в модуль отрисовки радара..
}
}
За это сообщение Эдвадко нажился спасибкой от:
10.09.2011, 16:03
#424
Пользователь
Регистрация: 11.03.2011
Сообщений: 73
Сказал Спасибо: 4
Имеет 8 спасибок в 4 сообщенях
удалил. тупые вопросы.
Последний раз редактировалось Anfet, 10.09.2011 в 17:05 .
20.09.2011, 15:46
#425
Пользователь
Регистрация: 27.08.2010
Сообщений: 46
Сказал Спасибо: 6
Имеет 19 спасибок в 12 сообщенях
в клиенте ГоД в некоторые функции добавили параметры. к примеру:
было
Код:
OnUserInfo(struct User *, class FVector, int, int, int, char, char)
стало
Код:
OnUserInfo(struct User *, class FVector, int, int, int, char, char, __int64 const &)
Как правильно передавать последний параметр (
__int64 const & ) из функции-ловушки в функцию-обработчик и потом в оригинальную функцию?
Старый кусок кода:
Код:
procedure OnUserInfo_Call(user: pointer; x,y,z: single; u1,u2,u3: single; s1,s2: integer); stdcall;
asm
push s2;
push s1;
push u3;
push u2;
push u1;
push z;
push y;
push x;
push user;
mov ecx, geh;
mov esp, ebp;
pop ebp;
jmp [OnUserInfo_Original];
end;
procedure OnUserInfo_New(h: integer; user: pointer; x,y,z: single; u1,u2,u3: single; s1,s2: integer); stdcall;
begin
...
//делаем свои делишки
...
OnUserInfo_Call(user, x,y,z, u1,u2,u3, s1,s2);
end;
procedure OnUserInfo_Hook(user: pointer; x,y,z: single; u1,u2,u3: single; s1,s2: integer); stdcall;
asm
push s2;
push s1;
push u3;
push u2;
push u1;
push z;
push y;
push x;
push user;
push ecx;
call OnUserInfo_New;
end;
Как теперь передавать этот последний параметр? Я просто не пойму синтаксис Си, что означает этот параметр? Если бы был простой int, char или pointer то вопросов не было бы. А вот с этим, яхз...
20.09.2011, 20:15
#426
Admin!
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
maxilam , а в чем проблема то int - 32битное целое, __int64 - 64битное. следовательно новое значение либо как два int передаёшь либо собсно сразу как int64, в дельфи int64 есть, правда не помню с какой версии начиная
__________________
Я здесь практически не появляюсь!, Skype - ikskor
21.09.2011, 08:07
#427
Пользователь
Регистрация: 27.08.2010
Сообщений: 46
Сказал Спасибо: 6
Имеет 19 спасибок в 12 сообщенях
ассемблер дельфийский не понимает int64 (Дельфи2010). при
push u; где u: int64 ругается Invalid combination of opcode and operands. Двумя интами пробовал передавать, клиент критует при вызове оригинальной функции.
Меня напрягает знак "&". Если не ошибаюсь, в Си это ссылка? Альтернативой в дельфи вижу pointer, но однако с поинтером тоже критует при вызове оригинальной функции.
Вот уже третий день ломаю голову. может просто кто нибудь уже сталкивался с int64 в хуках функций, ведь в клиенте она не одна такая функция.
21.09.2011, 09:08
#428
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
вот так робит
, но это явно какое-то извращение
delphi Код:
procedure Test( const i:Int64 ) ; stdcall;
begin
ShowMessage ( inttostr ( i) ) ;
end ;
var
i:Int64 ;
a:array [0 ..1 ] of integer ;
i1,i2:integer ;
begin
i:=874987897987 ;
Move ( i,a,8 ) ;
i1:=a[0 ];
i2:=a[1 ];
asm
push i2
push i1
call test
end ;
end .
__________________
Н а ч а л о .
21.09.2011, 12:13
#429
Местный
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Цитата:
Сообщение от
maxilam
Меня напрягает знак "&". Если не ошибаюсь, в Си это ссылка?
Да.Это ссылка)
Попробуй к примеру это значение принять и передать как DWORD (нам похрену сколько разрядов, передаем то только адрес значения)...
21.09.2011, 12:33
#430
Местный
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Вот не понятно только зачем по ссылке передавать константу
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 21:52 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!