Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
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, время: 06:07 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!