You are not logged in.
@listener - помогите разобраться с параметрами для этой процедуры - data и callback
Last edited by DK22Pac (28-10-2011 21:33)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Уже сам разобрался...
Щас интересует вот что - как так выходит, что рендерные 2д-примитивы скриываются за обьектами карты? Это зависит от последовности рендеринга (т.е. они рендерятся первыми на экране)?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
люди помогите изменить количество миллисекунд в одной секунде
Offline
Может, этот вопрос уже задавался, но где в сане хранятся адреса с матрицей поворотов костей актера, и можно ли их менять?
А, и еще — по какому адресу находятся координаты и размеры боундбокса игрока?
Offline
@Wire - Все структуры с описаниями есть в RenderWare SDK
по смещению +0x18 в любом Entity хранится указатель либо на RpClump, либо RpAtomic.
BoundBox возвращается виртуальным методом _m24 в CEntity и всех его потомках.
Offline
@listener,
спасибо
Offline
и еще один вопрос, как сохранить измененный exe файл в иде про
Offline
IDA работает не с exe, а с базой, содержащей код exe. Сохранить изменения в базе просто - нажать на значок Дискета.
А для редактирования exe надо использовать hex-редактор.
Last edited by Den_spb (19-11-2011 15:26)
Offline
Den_spb зайди в аську, я тебя добавил помоги пожалуйста
Offline
Заранее извиняюсь за дурацкие вопросы — допустим, я нашел в базе функций сана такую запись:
00569660 92 _Get_Z_for_XYPoint
1) Что означает число 92?
2) Как узнать количество и тип аргументов этой функции?
Полез в ИДУ, отправился на искомый адрес, нашел sub_569660, сгенерировал псевдокод:
int __cdecl sub_569660(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, float a14) { return sub_401BC5(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); }
Тут 14 параметров, а в исходниках собейта эта функция описана как:
float CWorldSA::FindGroundZForPosition(float fX, float fY)
— два параметра.
Сама функция выглядит так:
float CWorldSA::FindGroundZForPosition(float fX, float fY) { DWORD dwFunc = FUNC_FindGroundZForCoord;//константа для 0x569660; FLOAT fReturn = 0; _asm { push fY push fX call dwFunc fstp fReturn add esp, 8 } return fReturn; }
Я не силен в ассемблере, может, здесь функция как-то сокращена?
Заранее спасибо.
Last edited by Wire (29-11-2011 15:51)
Offline
1.Это не функция, а это расписан ее вызов.
2.Если тебе нужно использовать ф-ю в с++, то юзай как раз этот код из собейта.
Last edited by Jack Daniel's (29-11-2011 16:07)
Offline
А плохая новость — конкретно эта функция постоянно возвращает 20
___add
Вызывал и собейтовским методом, и своим, все равно всегда 20.
float FindGroundZForCoord ( float x, float y ) { typedef float ( __stdcall *pFuncAddr ) ( float x, float y ); pFuncAddr pFunc = (pFuncAddr) FUNC_FindGroundZForCoord; return pFunc ( x, y ); }
Last edited by Wire (29-11-2011 17:08)
Offline
Эта функция возвращает высоту относительно земли?
Короче, подай пример, где это значение можно использовать и я потом у себя протестирую.
Offline
1) Что означает число 92?
Размер кода функции.
2) Как узнать количество и тип аргументов этой функции?
Нужно посмотреть структуру переменных данной функции. Передаваемые параметры имеют положительное смещение (http://sannybuilder.com/forums/viewtopic.php?id=941). В данном случае передаётся 2 параметра:
var_38= dword ptr -38h var_34= dword ptr -34h var_30= dword ptr -30h var_2C= dword ptr -2Ch var_24= dword ptr -24h X= dword ptr 4 // параметр 1 Y= dword ptr 8 // параметр 2
Чтобы определить тип аргументов, нужно посмотреть код одной из процедур, вызывающих данную функцию.
Last edited by Den_spb (30-11-2011 13:11)
Offline
@Jack Daniel's,
Эта функция возвращает высоту по Z в точке XY. Пример... Скажем, мы хотим замутить чит, который создает машину в координатах маркера на радаре — мы берем XY этого маркера, а потом с помощью этой функции вычисляем Z в этой точке, и создаем там машину.
__add
Говорю же, я не так хорошо знаю ассемблер, как хотелось бы. Положительное смещение — признак наличия аргументов, отрицательное — их отсутствия? 34 и 38 — это получается два флоата, по четыре байта? Можешь написать пример конкретно для этой функции? Желательно с использованием и ассемблера, и… не ассемблера, не знаю, как такой способ называется Тот, каким я вызывал эту функцию.
А, и где можно найти процедуры, которые вызывают эту функцию?
Last edited by Wire (29-11-2011 18:38)
Offline
Положительное смещение — признак наличия аргументов, отрицательное — их отсутствия?
Если у переменной положительное смещение, то данная переменная является передаваемым в функцию параметром.
34 и 38 — это получается два флоата, по четыре байта?
У var_38 и var_34 смещения отрицательные (-0x38 и -0x34 соответственно). Передаваемые параметры - X и Y (смещения +4 и +8 соответственно) - оба float, по 4 байта.
Вызвал функцию с помощью клео-скрипта:
{$CLEO} 0AC6: 3@ = label @Function offset 3@ += 8 0AC7: 0@ = var 4@ offset 0A8C: write_memory 3@ size 4 value 0@ virtual_protect 0 while true wait 0 if player.Defined($player_char) then actor.StorePos($player_actor 0@ 1@ 2@) 0AC6: 3@ = label @Function offset 0AA5: call 3@ num_params 2 pop 2 0@ 1@ 0092: 4@ = float 4@ to_integer 03F0: enable_text_draw 1 045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 4@ // ~1~ end end :Function hex B8 60 96 56 00 // mov eax, 0x569660 FF D0 // call eax B8 00 00 00 00 // mov eax, 0x00000000 D9 18 // fstp [eax] C3 // retn end
Тоже всё время получается 20. Значит ты вызывал функцию правильно.
Попробуй для этой цели вызывать другую функцию - 0x05696C0 CWorld__findGroundZFor3DCoord. Она используется в опкоде 02CE: 16@ = ground_z_at 2@ 3@ 4@.
А, и где можно найти процедуры, которые вызывают эту функцию?
В IDA: View - Open subviews - Function calls. В открывшемся окне 2 списка: Caller - процедуры, которые вызывают данную функцию, Called functions - процедуры, которые вызываются данной функцией.
Last edited by Den_spb (29-11-2011 21:26)
Offline
стоп-стоп
B8 00 00 00 00 // mov eax, 0x00000000
D9 18 // fstp [eax]
fstp возьмет с вершины стека параметр, округлит и поместит по нулевому адресу, ы?
Last edited by Jack Daniel's (30-11-2011 12:07)
Offline
Даже если бы число округлялось, при разных параметрах функция бы возвращала разные значения, а так постоянно 20
Offline
@listener
Можете дать ссылку на мануал по RW Graphics, где написано о imRender?
Я нашёл только первую часть какого-то мануала, но там этого ^ нету.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Залез в структуру RpAtomic, пытаюсь что-то изменить, но все значения тут же "восстанавливаются".
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
После изменения значений скриптом их "восстанавливает" какая-то функция exe - по этой же причине не удаётся вращать некоторые компоненты транспортных средств, например колёса (если записать в матрицу позиции колеса какие-то числа, а затем прочитать их и вывести на экран, то значения будут те же. Если между записью и чтением будет выполнен wait, то значения будут отличаться). Надо либо отключать эти функции, либо писать значения в структуру после отработки этих функций.
Offline
CEntity+0x2C m_nScanCode
0x563470 int __cdecl CWorld__ClearScanCodes()
0xB7CD78 ms_nCurrentScanCode
Что это за скан-коды?
Last edited by DK22Pac (04-04-2012 21:13)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Привет всем, у меня собралась кучка вопросов.
1) как правильно вызвать в Клео функцию getmodeltype которая есть в базе Сашки.
2) как правильно вызвать в Клео функцию проверку ismodelbike
3) кто написал maplimit.asi, меня интересует автор, а то нашел в инете, а чей не написано...
вроде все написал...
I know everything and nothing...
Offline