You are not logged in.
Код позволяет воссоздать скорость машины по локальным направлениям (вперёд,вбок,вверх) после изменения её положения. Код можно использовать и просто для того, чтобы задать скорость в тех направлениях, в которых не позволяет задать скорость опкод 04BA. Вот пример: при нажатии Backspace машина игрока начинает перемещаться правым боком вперёд, вне зависимости от того, как она ориентирована в пространстве:
{$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 0x59C790 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, а то как я понял опкод
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
блин, такая фигня - креплю камеру к машине, если машина переворачивается, то камера не переворачивается вместе с машиной...единственный вариант:
Camera.OnVehicle(2@, 16, 2)
ставит камеру на бампер...вопрос - как таким же образом прикрепить камеру к объекту, чтобы она не переворачивалась, т.е. была вверх ногами, если объект перевёрнут (вверх ногами, хотя какие нахрен ноги у объекта )?
Так вот я подумал, что можно будет просто повернуть кость на нужный угол, вместо того, чтобы делать отдельный ифп и аниму с держанием зонта.
Может надо какой-то метод _update вызывать.
Мне это тоже наверное пригодилось бы, очень даже) только мне нужно кость шеи поворачивать, т.е. голову)
Кстати, ещё вопрос, как определить номер кости, может кто-то видел расписанные номера где-нибудь?
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
Кстати, ещё вопрос, как определить номер кости, может кто-то видел расписанные номера где-нибудь?
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
Вот список есть. Сам не проверял. Взял с какого-то форума давно. Сейчас уже не помню с какого.
Номера частей тела: 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
Можно как-нибудь замедлить игровое время (мне не нужна синхронизация с компьтерными часами)?
015D: set_gamespeed 0.9
EDIT:
Я с начала не совсем понял суть вопроса. Нужно замедлить не сам игровой процесс, а течение времени на часах? Тогда вот:
{$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
Я с начала не совсем понял суть вопроса. Нужно замедлить не сам игровой процесс, а течение времени на часах? Тогда вот:
{$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
Пробовал записать таким образом:
0A8C: write_memory 0x4686A0 size 4 value 0x434C494D virtual_protect 1 0A8C: write_memory 0x4686A4 size 4 value 0x425F6964 virtual_protect 1 0A8C: write_memory 0x4686A8 size 2 value 0x6C32 virtual_protect 1
Ничего не происходит...если поставить virtual_protect 0, то игра вылетает...
Пробовал читать по этому адресу и выводить на экран, выдаёт число, пробовал перевести в hex через инженерный калькулятор - получается совсем не то, что в том месте в exe.
Поменять я хочу название анимации, соответствующей определённому действию, в данном случае - висению на руках, когда цепляешься за что-то...
От подобных комментариев лучше воздерживаться.
Простите, больше не буду.
Offline
По тому, как преобразовать file offset в memory address читайте PE COFF спецификацию.
На практике бывает удобно использовать HIEW (Shareware) - он умеет работать и с file offset, и с memory address.
Offline