You are not logged in.
Копирую все поля положения машины на поля положения лодки в моде SEAWAYS. Лодка спокойно перенимает положение, углы поворота, скорость и спин машины. При обратном действии машина остаётся стоять, не перенимая ни скорости, ничего. Из-за чего это происходит?
Last edited by VcSaJen (24-04-2009 07:14)
[small][/small]
Offline
Наконец-то разобрался что куда надо прописать и воткнуть, чтобы ида открыла базу listener'а.
Вчера ковырялся над опкодом 07CC - он отказался работать (оказалось, что какой-то поток в майне его перебивал). Походу разобрался еще с несколькими опкодами. Может это уже давно известно, но вот, кое-что по структуре CPad:
00000000 CPad struc ; (sizeof=0x134) 00000000 padState PadData ? 00000030 prevPadState PadData ? 00000060 SomeStack dw 10 dup(?) 00000074 Responsiveness dd ? ; opcode 03FD 00000078 padStateKbd1 PadData ? 000000A8 padStateKbd2 PadData ? 000000D8 field_D8 PadData ? 00000108 field_108 db ? 00000109 field_109 db ? 0000010A ControlState dw ? ; switch (0..3) 0000010C field_10C dw ? 0000010E StateFlags db ? ; 0 - default 0000010E ; 00000001b - ignore player controls 0000010E ; 00100000b - set player frozen (09E7) 0000010E ; 10000000b - save game state (03EF) 0000010F field_10F dw ? 00000111 field_111 dd ? 00000115 field_115 db ? 00000116 field_116 db ? 00000117 menuActive db ? 00000118 DisableVehicleControls16&14 db ? ; opcode 0221 00000119 DisableEnterExitVehicleButton db ? ; opcode 07CC 0000011A DisableCrouchButton db ? ; opcode 082A 0000011B DisableFireButton db ? ; opcode 0881 0000011C field_11C db ? 0000011D DisableScrollWeaponButtons db ? ; opcode 0992 0000011E DisableJumpButton db ? ; opcode 0901 0000011F DisableActionButton db ? ; opcode 0960 00000120 padQueryTime dd ? 00000124 field_124 dd ? 00000128 field_128 dd ? 0000012C field_12C dd ? 00000130 field_130 db ? 00000131 field_131 db ? 00000132 field_132 dw ? 00000134 CPad ends
DisableVehicleControls16&14 в опкоде 0221 было почему-то приписано структуре PlayerData, кажется.
Last edited by Alien (26-06-2009 11:28)
Offline
@Alien - спасибо. Чуть позже обновлю базу.
Только Disable*Button должы быть не button, а event (вся идея этого класса в том, что в нем собираются все события от клавиатуры, мыши и геймпада, и из них формируются эвенты - вне зависимости от того, нажали мы кнопку, передвинули мышь или повернули стик).
А дальше, идет чистая обработка эвентов, вне зависимост от того, из какого устройства они пришли.
Offline
Кто ни будь, находил адрес процедуры/функции в которой игра обрабатывает нажатие клавиши. Нужно сделать принудительное нажатие клавиши, то есть дать понять игре, что нажата нужная мне клавиша.
Не хочется ради одной функции делать ДЛЛ.
Offline
Мне кажется ему нужен адрес самой процедуры где происходит перехват клавиши.
Offline
Нужен адрес, и не только этот. Хотелось бы еще добраться до войн банд, а именно покраска территории и соответственно военные действия на этой территории для разных банд. У меня их сейчас 9 шт, опкодами можно сделать только для двух банд. Каков был смысл создавать отношения с другими группировками если воевать с ними, а соответственно захватывать их территории нет возможности?
Наконец-то разобрался что куда надо прописать и воткнуть, чтобы ида открыла базу listener'а.
Подробнее можно, что прописал и где? А то мне уже надоело окно с текстом «Эта база была создано в пиратской копии …».
Offline
А вот уже готовый файл.
[You must login to view hidden text.]
EDIT:
обновил ссылку
если ссылка сдохнет - пишите в личку, обновлю
Last edited by Sw[ee]t (06-09-2009 11:38)
Offline
Можно обновить ссылочку? или хотябы как пропатчить файл этим кодом
Edited: А все ненадо, пропатчил сам
Last edited by Orr_Orange (06-09-2009 05:53)
..to hit me
Offline
lstener,я прочитал ваш пост про системы координат, можно вопрос ?
Как перенести координаты объектов с игрового мира на экран (с 3d в 2d) ?
Например координаты педов ,я прохожусь циклом по пулу педов, записываю используемые элементы в массив.
Получаю их координаты, матрицы вращения, углы поворота... а что дальше делать я не знаю.
Нужно как то трансформировать координаты, я читал что способ трансформации различается в разных играх.
Offline
Если второе почти нереально, то как же был создан скрипт, в котором выводится текст на педа?
http://gtasamod.web.fc2.com/cleomod/photo/index.html
Offline
Карта уже сделана
А второе реально, GTASA спасибо большое, был бы этот огромный скрипт еще с коментариями
Last edited by DimP (23-12-2009 16:36)
Offline
есть функция, преобразующая мировые координаты в координаты на экране... 0x70CE30.
Offline
То есть функция берет x,y,z а возвращает x,y если координаты попадают в плоскость экрана ?
Можно ли при вызове функции, __thiscall заменить на что-нибудь другое? ,а то проблемы с компиляцией.
Last edited by DimP (23-12-2009 17:23)
Offline
Можно пожалуйста пример такого вызова
Offline
Примерно так.
void * addr = (void *)0x70CE30; _asm { push ecx; // сохранить ecx push _a14; push _a10; push _aC; push _a8; push _a4; push pCoords; mov ecx, this; call addr; pop ecx; // восстановить ecx }
Offline
Сложно , ну ничего буду разбираться как нибудь..., а в какие регистры записываются x y z и в какие возвращается w и h экрана ? Только не смейтесь над вопросом, потому что я ассемблер знаю только на уровне арифметических операций над числами.
Offline
а в какие регистры записываются x y z и в какие возвращается w и h экрана ?
Если это касательно функции WorldCoords2ScreenCoords, то там нет таких заморочек. Обыкновенный cdecl.
BOOL __cdecl WorldCoords2ScreenCoords(RwV3D *inPoint, RwV3D *outpoint, float *x, float *y, char, char)
Параметры:
1 - указатель на вектор мировых координат.
2 - сюда сохраняется вектор координат относительно камеры (кажется).
3 - сюда сохраняется x-координата на экране.
4 - сюда сохраняется y-координата на экране.
5, 6 - какие-то флаги. Лень разбираться. Ставь единицы.
Offline
:crazy:...:^
указатель на вектор мировых координат, это структура из x y z или из матрицы вращения
или предварительно сосчитанное число a = sqrt((sqrt(x*x+y*y))^2+z*z) ,вроде так считается ?
Last edited by DimP (25-12-2009 15:44)
Offline
Структура из x, y, z.
#pragma pack(push, 1) struct RwV3D { float x; float y; float z; }; #pragma pack(pop)
То, что называется "матрицей вращения":
#pragma pack(push, 1) struct RwMatrix { RwV3D right; DWORD pad1; RwV3D up; DWORD pad2; RwV3D at; DWORD pad3; RwV3D pos; DWORD pad4; }; #pragma pack(pop)
{right, up, at} - это координаты базиса объекта (3 орта), pos - вектор положения объекта, pad - простая заглушка.
________________
посмотри последний пост listener'а на предыдущей странице и первый на этой. Там как раз про базисы и матрицы.
Last edited by Alien (25-12-2009 15:56)
Offline
Да я читал, Alien спасибо огромное
Offline
Я прекрасно делал через CreateRemoteThread , вставлял дополнительный асмемблированный код , в котором был call процедуры спавна тачки )
Можешь расписать?
Offline