#3026 23-02-2011 02:02

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Код позволяет воссоздать скорость машины по локальным направлениям (вперёд,вбок,вверх) после изменения её положения. Код можно использовать и просто для того, чтобы задать скорость в тех направлениях, в которых не позволяет задать скорость опкод 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

#3027 26-02-2011 09:36

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Все наверно знают скрипт driveby, где можно стрелять из разного оружия из машины, когда ты сидишь водителем. Меня волнует вопрос, как сделать тоже самое, но для пассажира, дело в том что там все работает, но не переключается оружие, оно показывает только smg. Как изменить модель оружия при переключении пассажиром?


I know everything and nothing...

Offline

#3028 28-02-2011 16:35

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Можно ли прямо в игре править анимацию? Ведь когда ты загружаешь IFP файл, он загружается в память, а значит, если править память через скрипт, то можно чего-то добиться, или я ошибаюсь? Может быть можно через память изменять название анимации и IFP файла к какому-то действию? Например, анимация висения называется "CLIMB_IDLE" и находится в IFP файле "PED". У меня есть IFP файл "CLIMB", в котором есть анимация с таким же названием - "CLIMB_IDLE". Могу ли я через память (а может есть другие варианты?) изменить название IFP файла для этого действия? Чтобы когда игрок будет висеть, воспроизводилась анимация из файла "CLIMB"?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3029 01-03-2011 11:59

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Один вопрос

через память можно всё. вообще.

а не проще опкодом заставить игрока выполнить нужную анимацию?? зачем без повода сразу в память лезть...


GIMS developer

Offline

#3030 01-03-2011 12:35

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

Можно как-то регулировать положение камеры будучи в машине по осям X, Y, а то как я понял опкод

09EF: set_behind_camera_autoposition_mode_for_car_model #SANCHEZ distance 1.0 altitude_multiplier 1.0 angle_X 0.12

только для выравнивания дистанции.

Offline

#3031 01-03-2011 16:44

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

3Doomer wrote:

через память можно всё. вообще.

об этом я знаю....) потому и спрашиваю...

3Doomer wrote:

а не проще опкодом заставить игрока выполнить нужную анимацию?? зачем без повода сразу в память лезть...

повод как раз таки есть! я сейчас всё объясню. я просто делаю паркур-мод, и у меня анимация обычного висения заменена на висение с упирающимися ногами в стену...только вот если стены перед ногами нет, то он упирается в воздух) мне нужно заменить эту анимацию на другую, т.е. на анимацию обычного висения...если я попытаюсь воспроизвести анимацию опкодом, то актёр просто перестанет висеть и упадёт...это первое. второе - анимация падения - я собираюсь делать новые миссии, в течении которых игрок будет осваивать новые паркур-движения, т.е. анимация падения тоже должна измениться...проще изменить её 1 раз через память, чем опкодом каждый раз воспроизводить её при падении....есть ещё несколько подобных вещей из-за которых я вынужден прибегнуть к изменению анимации через память "на лету"...только вот как это сделать? с ассемблером я не дружу) потому и прошу кого-то...надеюсь добрые и умные люди остались ещё)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3032 03-03-2011 17:27

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Один вопрос

На сайте Риосуке есть пример, где читается матрица поворота и позиции кости педа. Я пробовал трансформировать эту матрицу, но визуального изменения не увидел.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3033 03-03-2011 18:13

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Можно как-то регулировать положение камеры будучи в машине по осям X, Y

Это вопрос? Если да, то можно воспользоваться опкодом 0679.

Я пробовал трансформировать эту матрицу, но визуального изменения не увидел.

А зачем ты её трансформировал?

Offline

#3034 03-03-2011 19:21

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Один вопрос

Ну вот смотри. Я когда-то делал мод, чтобы педы ходили с зонтами в дождливую погоду.
Так вот я подумал, что можно будет просто повернуть кость на нужный угол, вместо того, чтобы делать отдельный ифп и аниму с держанием зонта.
Может надо какой-то метод _update вызывать.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3035 03-03-2011 19:41

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

блин, такая фигня - креплю камеру к машине, если машина переворачивается, то камера не переворачивается вместе с машиной...единственный вариант:

Camera.OnVehicle(2@, 16, 2)

ставит камеру на бампер...вопрос - как таким же образом прикрепить камеру к объекту, чтобы она не переворачивалась, т.е. была вверх ногами, если объект перевёрнут (вверх ногами, хотя какие нахрен ноги у объекта grin )?

DK22Pac wrote:

Так вот я подумал, что можно будет просто повернуть кость на нужный угол, вместо того, чтобы делать отдельный ифп и аниму с держанием зонта.
Может надо какой-то метод _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)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3036 04-03-2011 06:11

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Voron295 wrote:

Кстати, ещё вопрос, как определить номер кости, может кто-то видел расписанные номера где-нибудь?

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

#3037 04-03-2011 16:41

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Интересно, что означает число (16), после номера кости?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3038 05-03-2011 04:46

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Voron295 wrote:

Интересно, что означает число (16), после номера кости?

Про это там было сказано так: "Что-то вроде поворота: 0 - без вращения ..... 16 - поворот влево 90". Кстати, ещё там было написано: "offset идёт от части тела, а не актёра".

Offline

#3039 05-03-2011 08:35

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

спасибо!)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3040 09-03-2011 12:46

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Можно как-нибудь замедлить игровое время (мне не нужна синхронизация с компьтерными часами)?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3041 10-03-2011 04:33

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Voron295 wrote:

Можно как-нибудь замедлить игровое время (мне не нужна синхронизация с компьтерными часами)?

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

#3042 10-03-2011 07:59

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

kenking wrote:

Я с начала не совсем понял суть вопроса. Нужно замедлить не сам игровой процесс, а течение времени на часах? Тогда вот:

{$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

Это мне и нужно, спасибо. Я думал об изменении кол-ва мс в секунде, но впадлу было проверять)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3043 10-03-2011 09:10

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Через HEX-овый редактор нашёл нужное мне значение, изменяя его, всё получается как мне нужно, только мне нужно сделать это без редактирования exe, хочу его изменить во время игры - как мне это сделать? Как правильно определить адрес? Нужно поменять текст из 10 букв....вот только почему-то Cheat Engine'ом такой текст не находится....

Last edited by Voron295 (10-03-2011 09:40)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3044 10-03-2011 09:39

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Voron295 wrote:

Я думал об изменении кол-ва мс в секунде

Приведённый код это и делает.

Offline

#3045 10-03-2011 09:41

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

kenking wrote:
Voron295 wrote:

Я думал об изменении кол-ва мс в секунде

Приведённый код это и делает.

Я понял это, потому это и сказал....
Что насчёт моего поста выше?

Last edited by Voron295 (10-03-2011 09:41)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3046 10-03-2011 09:55

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Voron295 wrote:

Через HEX-овый редактор нашёл нужное мне значение, изменяя его, всё получается как мне нужно, только мне нужно сделать это без редактирования exe, хочу его изменить во время игры - как мне это сделать?

Считывай нужный адрес - 0xB7015C опкодом 0A8D: и перезаписывай значение опкодом 0A8C: когда тебе это надо в скрипте.

Offline

#3047 10-03-2011 10:18

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

я не про то smile это уже другой вопрос....

Voron295 wrote:

Нужно поменять текст из 10 букв

читай внимательней)) в exe нашёл текст, который мне нужно поменять, только нужно это сделать прямо в игре с помощью 0A8С, как я понимаю...как мне определить адрес этого текста?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3048 10-03-2011 18:16

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

в exe нашёл текст, который мне нужно поменять, только нужно это сделать прямо в игре с помощью 0A8С, как я понимаю...как мне определить адрес этого текста?

Щёлкни по первому байту текста в hex-редакторе, там будет указан адрес. Этот адрес указывается в 0A8C.

но впадлу было проверять)

От подобных комментариев лучше воздерживаться.

Offline

#3049 11-03-2011 10:53

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Den_spb wrote:

Щёлкни по первому байту текста в 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.
Поменять я хочу название анимации, соответствующей определённому действию, в данном случае - висению на руках, когда цепляешься за что-то...

Den_spb wrote:

От подобных комментариев лучше воздерживаться.

Простите, больше не буду.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3050 11-03-2011 18:54

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

По тому, как преобразовать file offset в memory address читайте PE COFF спецификацию.
На практике бывает удобно использовать HIEW (Shareware) - он умеет работать и с file offset, и с memory address.

Offline

Board footer

Powered by FluxBB