You are not logged in.
Код позволяет воссоздать скорость машины по локальным направлениям (вперёд,вбок,вверх) после изменения её положения. Код можно использовать и просто для того, чтобы задать скорость в тех направлениях, в которых не позволяет задать скорость опкод 04BA. Вот пример: при нажатии Backspace машина игрока начинает перемещаться правым боком вперёд, вне зависимости от того, как она ориентирована в пространстве:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | { $CLEO } wait 0 while true wait 0 if not player.defined( $player_char ) then continue end if and 0AB0: 8 actor.Driving( $player_actor ) then 0@ = 0.111 // 20 км/ч 1@ = 0.0 2@ = 0.0 03C0: 29@ = actor $PLAYER_ACTOR car 0AC7: 3@ = var 0@ offset 0A97: 28@ = car 29@ struct 0A8E: 25@ = 28@ + 68 // int 0A8E: 24@ = 28@ + 20 // int matrix 0A8D: 24@ = read_memory 24@ size 4 virtual_protect 0 0AA5: call 0x59C 790 num_params 3 pop 3 3@ 24@ 25@ // Пересчёт координат из одной системы в другую end end |
Last edited by Den_spb (23-02-2011 02:28)
Offline
Все наверно знают скрипт driveby, где можно стрелять из разного оружия из машины, когда ты сидишь водителем. Меня волнует вопрос, как сделать тоже самое, но для пассажира, дело в том что там все работает, но не переключается оружие, оно показывает только smg. Как изменить модель оружия при переключении пассажиром?
I know everything and nothing...
Offline
Можно ли прямо в игре править анимацию? Ведь когда ты загружаешь IFP файл, он загружается в память, а значит, если править память через скрипт, то можно чего-то добиться, или я ошибаюсь? Может быть можно через память изменять название анимации и IFP файла к какому-то действию? Например, анимация висения называется "CLIMB_IDLE" и находится в IFP файле "PED". У меня есть IFP файл "CLIMB", в котором есть анимация с таким же названием - "CLIMB_IDLE". Могу ли я через память (а может есть другие варианты?) изменить название IFP файла для этого действия? Чтобы когда игрок будет висеть, воспроизводилась анимация из файла "CLIMB"?
Offline
Можно как-то регулировать положение камеры будучи в машине по осям X, Y, а то как я понял опкод
1 | 09EF: set_behind_camera_autoposition_mode_for_car_model #SANCHEZ distance 1.0 altitude_multiplier 1.0 angle_X 0.12 |
только для выравнивания дистанции.
Offline
через память можно всё. вообще.
об этом я знаю....) потому и спрашиваю...
а не проще опкодом заставить игрока выполнить нужную анимацию?? зачем без повода сразу в память лезть...
повод как раз таки есть! я сейчас всё объясню. я просто делаю паркур-мод, и у меня анимация обычного висения заменена на висение с упирающимися ногами в стену...только вот если стены перед ногами нет, то он упирается в воздух) мне нужно заменить эту анимацию на другую, т.е. на анимацию обычного висения...если я попытаюсь воспроизвести анимацию опкодом, то актёр просто перестанет висеть и упадёт...это первое. второе - анимация падения - я собираюсь делать новые миссии, в течении которых игрок будет осваивать новые паркур-движения, т.е. анимация падения тоже должна измениться...проще изменить её 1 раз через память, чем опкодом каждый раз воспроизводить её при падении....есть ещё несколько подобных вещей из-за которых я вынужден прибегнуть к изменению анимации через память "на лету"...только вот как это сделать? с ассемблером я не дружу) потому и прошу кого-то...надеюсь добрые и умные люди остались ещё)
Offline
На сайте Риосуке есть пример, где читается матрица поворота и позиции кости педа. Я пробовал трансформировать эту матрицу, но визуального изменения не увидел.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Можно как-то регулировать положение камеры будучи в машине по осям X, Y
Это вопрос? Если да, то можно воспользоваться опкодом 0679.
Я пробовал трансформировать эту матрицу, но визуального изменения не увидел.
А зачем ты её трансформировал?
Offline
Ну вот смотри. Я когда-то делал мод, чтобы педы ходили с зонтами в дождливую погоду.
Так вот я подумал, что можно будет просто повернуть кость на нужный угол, вместо того, чтобы делать отдельный ифп и аниму с держанием зонта.
Может надо какой-то метод _update вызывать.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
блин, такая фигня - креплю камеру к машине, если машина переворачивается, то камера не переворачивается вместе с машиной...единственный вариант:
1 | Camera.OnVehicle( 2@ , 16, 2) |
ставит камеру на бампер...вопрос - как таким же образом прикрепить камеру к объекту, чтобы она не переворачивалась, т.е. была вверх ногами, если объект перевёрнут (вверх ногами, хотя какие нахрен ноги у объекта )?
Так вот я подумал, что можно будет просто повернуть кость на нужный угол, вместо того, чтобы делать отдельный ифп и аниму с держанием зонта.
Может надо какой-то метод _update вызывать.
Мне это тоже наверное пригодилось бы, очень даже) только мне нужно кость шеи поворачивать, т.е. голову)
Кстати, ещё вопрос, как определить номер кости, может кто-то видел расписанные номера где-нибудь?
1 | 070A: AS_actor $PLAYER_ACTOR attach_to_object 0@ offset 0.0 0.0 0.0 on_bone 2 16 perform_animation "NULL" IFP_file "NULL" time -1 |
Last edited by Voron295 (03-03-2011 19:47)
Offline
Кстати, ещё вопрос, как определить номер кости, может кто-то видел расписанные номера где-нибудь?
1070A: AS_actor
$PLAYER_ACTOR
attach_to_object
0@
offset
0.0
0.0
0.0
on_bone
2
16
perform_animation
"NULL"
IFP_file
"NULL"
time -1
Вот список есть. Сам не проверял. Взял с какого-то форума давно. Сейчас уже не помню с какого.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Номера частей тела: 0 - не ставить (виснет) 1 - торс (живот) 2 - голова 3 - левое предплечье 4 - правое предплечье 5 - левое запястье 6 - правое запястье 7 - левое бедро 8 - правое бедро 9 - левая стопа 10 - правая стопа 11 - правое колено 12 - левое колено 13 - левый локоть 14 - правый локоть 15 - верх позвоночника (для рюкзаков) 16 - правое плечо 17 - внутри тела, немного выше живота 18 - слева на шее 19 и более - не ставить (виснет) |
Offline
Интересно, что означает число (16), после номера кости?
Про это там было сказано так: "Что-то вроде поворота: 0 - без вращения ..... 16 - поворот влево 90". Кстати, ещё там было написано: "offset идёт от части тела, а не актёра".
Offline
Можно как-нибудь замедлить игровое время (мне не нужна синхронизация с компьтерными часами)?
1 | 015D: set_gamespeed 0.9 |
EDIT:
Я с начала не совсем понял суть вопроса. Нужно замедлить не сам игровой процесс, а течение времени на часах? Тогда вот:
1 2 3 4 5 6 | { $CLEO } 0A95: enable_thread_saving 0A8D: 0@ = read_memory 0xB7015C size 2 virtual_protect 0 0@ += 1000 // замедление в 2 раза 0A8C: write_memory 0xB7015C size 2 value 0@ virtual_protect 0 0A93: end_custom_thread |
Last edited by kenking (10-03-2011 05:22)
Offline
Я с начала не совсем понял суть вопроса. Нужно замедлить не сам игровой процесс, а течение времени на часах? Тогда вот:
123456{
$CLEO
}
0A95: enable_thread_saving
0A8D:
0@
= read_memory 0xB7015C size
2
virtual_protect
0
0@
+=
1000
// замедление в 2 раза
0A8C: write_memory 0xB7015C size
2
value
0@
virtual_protect
0
0A93: end_custom_thread
Это мне и нужно, спасибо. Я думал об изменении кол-ва мс в секунде, но впадлу было проверять)
Offline
Через HEX-овый редактор нашёл нужное мне значение, изменяя его, всё получается как мне нужно, только мне нужно сделать это без редактирования exe, хочу его изменить во время игры - как мне это сделать? Как правильно определить адрес? Нужно поменять текст из 10 букв....вот только почему-то Cheat Engine'ом такой текст не находится....
Last edited by Voron295 (10-03-2011 09:40)
Offline
Я думал об изменении кол-ва мс в секунде
Приведённый код это и делает.
Offline
Offline
Через HEX-овый редактор нашёл нужное мне значение, изменяя его, всё получается как мне нужно, только мне нужно сделать это без редактирования exe, хочу его изменить во время игры - как мне это сделать?
Считывай нужный адрес - 0xB7015C опкодом 0A8D: и перезаписывай значение опкодом 0A8C: когда тебе это надо в скрипте.
Offline
я не про то это уже другой вопрос....
Нужно поменять текст из 10 букв
читай внимательней)) в exe нашёл текст, который мне нужно поменять, только нужно это сделать прямо в игре с помощью 0A8С, как я понимаю...как мне определить адрес этого текста?
Offline
в exe нашёл текст, который мне нужно поменять, только нужно это сделать прямо в игре с помощью 0A8С, как я понимаю...как мне определить адрес этого текста?
Щёлкни по первому байту текста в hex-редакторе, там будет указан адрес. Этот адрес указывается в 0A8C.
но впадлу было проверять)
От подобных комментариев лучше воздерживаться.
Offline
Щёлкни по первому байту текста в hex-редакторе, там будет указан адрес. Этот адрес указывается в 0A8C.
Адрес вроде таков: 0x4686A0
Пробовал записать таким образом:
1 2 3 | 0A8C: write_memory 0x4686A 0 size 4 value 0x434C494D virtual_protect 1 0A8C: write_memory 0x4686A 4 size 4 value 0x425F 6964 virtual_protect 1 0A8C: write_memory 0x4686A 8 size 2 value 0x6C 32 virtual_protect 1 |
Ничего не происходит...если поставить virtual_protect 0, то игра вылетает...
Пробовал читать по этому адресу и выводить на экран, выдаёт число, пробовал перевести в hex через инженерный калькулятор - получается совсем не то, что в том месте в exe.
Поменять я хочу название анимации, соответствующей определённому действию, в данном случае - висению на руках, когда цепляешься за что-то...
От подобных комментариев лучше воздерживаться.
Простите, больше не буду.
Offline
По тому, как преобразовать file offset в memory address читайте PE COFF спецификацию.
На практике бывает удобно использовать HIEW (Shareware) - он умеет работать и с file offset, и с memory address.
Offline