#4501 25-02-2014 05:32

HH
Registered: 21-01-2014
Posts: 35

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

wmysterio wrote:
HH wrote:

Всем привет.

09BC: put_actor $PLAYER_ACTOR at 0.0 0.0 0.0

Этот опкод не "подстраховывается" т.е. не увеличивается координату Z на 1.0. Нужен аналогичный опкод, только для машины. Кто может помочь??

00AB

Спасибо, попробую

Offline

#4502 25-02-2014 05:39

HH
Registered: 21-01-2014
Posts: 35

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

По моим тестам этот опкод тоже увеличивает координату Z
088c: протестил, тоже самое
Может через память?

Let's say, the Car Position of this given car starts at 0xC5F5DB4:
+48 = CarPosX
+52 = CarPosY
+56 = CarPosZ 

но не знаю как воспользоваться
-------------------
Seemann извеняюсь

Last edited by HH (25-02-2014 10:58)

Offline

#4503 25-02-2014 08:27

Seemann
Registered: 07-08-2006
Posts: 2,152

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

Не надо писать несколько постов подряд, редактируй предыдущее сообщение (Кнопка Edit).

Попробуй вместо координаты Z указать число -100.0 Игра сама рассчитает нужную высоту.

Offline

#4504 25-02-2014 15:03

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

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

Я всё-таки не понимаю, что мешает отнять единицу от высоты?


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

Offline

#4505 25-02-2014 17:30

HH
Registered: 21-01-2014
Posts: 35

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

Voron295 wrote:

Я всё-таки не понимаю, что мешает отнять единицу от высоты?

Не точно отнимается, машина например все равно чуть-чуть поднимается наверх(если в воздухе),  мне нужна точность, если записал координаты машины, телепортнул её на эти координаты, чтоб машина была на тех же координатах, не выше и не ниже. Вообщем нужно подобие опкоду 09BC: только для машины.

Last edited by HH (25-02-2014 17:30)

Offline

#4506 25-02-2014 20:55

wmysterio
Registered: 04-03-2011
Posts: 214
Website

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

HH wrote:

Не точно отнимается, машина например все равно чуть-чуть поднимается наверх(если в воздухе),  мне нужна точность, если записал координаты машины, телепортнул её на эти координаты, чтоб машина была на тех же координатах, не выше и не ниже. Вообщем нужно подобие опкоду 09BC: только для машины.

Как-то за всю историю своей скриптерской деятельности обходился без этой маленькой погрешности и всё нормально работало. Если вы сильный фанат точности, то координаты комбинацией ctrl shift c вам выводят уже округлённые значения. Работайте с тем что есть...

Offline

#4507 26-02-2014 07:37

Seemann
Registered: 07-08-2006
Posts: 2,152

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

По идее опкод 088C как раз и перемещает машину без проверки на коллизию с поверхностью. В оригинале он назывался set_car_coordinates_no_offset.
по аналогии опкод 09BC назывался set_char_coordinates_dont_warp_gang_no_offset.

Если уж сильно хочется записать координаты машины напрямую, можно воспользоваться кодом:

0AEB: 1@ = car_struct 0@ handle
1@ += 20
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 // pointer to XYZ

0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0 // x coord
1@+=4
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0 // y coord           
1@+=4
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0 // z coord

Однако скорее всего нужно просто поиграть с самими координатами. Если я правильно помню, при чтении координат игрока возвращается позиция его центра тяжести (приблизительно метр от поверхности). Если ставить машину в эти координаты, она будет немного выше поверхности и падать на нее (этот эффект наблюдается и в оригинальных скриптах). Поэтому проще убавить значение Z, чем пытаться проделать тоже самое через память.

Offline

#4508 26-02-2014 10:51

HH
Registered: 21-01-2014
Posts: 35

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

Во общем вопрос закрыт, спасибо всем.

Offline

#4509 01-03-2014 16:18

starzzz
Registered: 01-03-2014
Posts: 2

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

Пилю погодный мод для GTA 3. Хочу сдвинуть время включения уличного освещения и автомобильных фар - включаются в 8-9 вечера, а нужно в 5-6. Сам не нашел, возможно неправильно формулирую запрос поисковику. Если такое возможно, то буду рад опкоду или примеру.

Offline

#4510 01-03-2014 19:52

lexa234
Registered: 11-11-2013
Posts: 8

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

помогите с опкодом, вот нашел такой опкод - 08E1, он должен вроде как, принимать кол-во закрашенных граффити, вот что я написал:
08E1: 1 total_tags_sprayed
В игре вылет, почему?

Offline

#4511 01-03-2014 20:03

Seemann
Registered: 07-08-2006
Posts: 2,152

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

08E1: $STAT_TAGS_SPRAYED = total_tags_sprayed
первый параметр - переменная, в которую записывается результат (число закрашенных граффити)

Offline

#4512 01-03-2014 20:13

lexa234
Registered: 11-11-2013
Posts: 8

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

понятно, спасибо!

Offline

#4513 12-03-2014 13:27

d88
Registered: 15-12-2009
Posts: 254
Website

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

Voron295 wrote:

Я всё-таки не понимаю, что мешает отнять единицу от высоты?

Я не знаю, как с автомобилями, а вот с актёром недавно у меня была одна проблема. Пытался переместить игрока в интерьер с низким потолком, так вот при использовании 00A1 (хоть с вычитанием единицы, хоть без) игра просто начинала глючить, портилось изображение. С 08C7 всё стало нормально.


Есть пара вопросов:
1. Можно ли заставить автомобиль ехать за актёром (не игроком)?
2. Можно ли сделать так, чтобы актёр шёл задом и при этом стрелял?

Offline

#4514 16-03-2014 18:59

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

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

Ребята, нубский вопрос, как заставить тачку ехать задним ходом?


I know everything and nothing...

Offline

#4515 16-03-2014 19:47

wmysterio
Registered: 04-03-2011
Posts: 214
Website

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

mfisto wrote:

Ребята, нубский вопрос, как заставить тачку ехать задним ходом?

Возможно это подойдёт. Со справки СБ:

car.setanimation($Car,anim,time) - анимация машины, вот номера anim (надо чтобы был водила) :
3 - едет задом

Offline

#4516 17-03-2014 10:39

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

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

Понятно, попробую, спасибо!


I know everything and nothing...

Offline

#4517 17-03-2014 19:10

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

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

Вот такой вопрос: как отловить что совершается сохранение, и в момент сохранения, допустим, изменить значение переменной?


I know everything and nothing...

Offline

#4518 17-03-2014 20:22

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

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

mfisto wrote:

Вот такой вопрос: как отловить что совершается сохранение, и в момент сохранения, допустим, изменить значение переменной?

Наверное, хук ставить надо + асм вставку.


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

Offline

#4519 17-03-2014 20:48

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

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

Это понятно, а в деталях как это будет?


I know everything and nothing...

Offline

#4520 17-03-2014 21:16

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

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

mfisto wrote:

Это понятно, а в деталях как это будет?

Ну, надо поэкспериментировать. Ща попробую что-нибудь сварганить, если получится, то расскажу чё к чему. Да, кстати, переменная глобальная или локальная?


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

Offline

#4521 17-03-2014 21:33

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

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

глобальная


I know everything and nothing...

Offline

#4522 18-03-2014 11:22

Sergey81
Registered: 19-12-2008
Posts: 654

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

http://sannybuilder.com/forums/viewtopic.php?id=1046
Вот тут наиподробнейше расписано.

Offline

#4523 18-03-2014 13:54

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

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

Идея понятна, но я не знаю как это реализовать, я не силен в асме и прочих вещах.


I know everything and nothing...

Offline

#4524 18-03-2014 23:23

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

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

{$CLEO}
// Получаем указатель на асм-код
0AC6: 0@ = label @asm_jump offset

// Записываем указатель на переменную 30@ в соответствующее место в асм-коде
0AC7: 1@ = var 30@ offset
0A8E: 2@ = 0@ + 2
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0

// Ставим хук - прыжок на наш асм-код в функции сохранения
0A8C: write_memory 0x619081 size 1 value 0xE9 virtual_protect 1
0@ -= 0x619086
0A8C: write_memory 0x619082 size 4 value 0@ virtual_protect 1

while true
    wait 0
    if
    30@ == 1
    then
        // Делаем что-нибудь, когда происходит сохранение
    end
    30@ = 0
end

:asm_jump
hex
    C705 00000000 01000000  // MOV DWORD PTR DS:[00000000], 1
    B8 E0135D00     // MOV EAX,005D13E0
    FF D0           // CALL EAX
    B8 86906100     // MOV EAX,00619086
    FFE0            // JMP EAX
end

С глобальной переменной надо будет убрать кое-что лишнее. Но, надо знать точный номер переменной. Если устроит - расскажу, как это сделать.

Last edited by Voron295 (18-03-2014 23:38)


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

Offline

#4525 19-03-2014 09:03

d88
Registered: 15-12-2009
Posts: 254
Website

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

Три вопроса:
1. Нужно сделать так, чтобы актёр, созданный одним скриптом, мог попасть в группу, созданную в другом скрипте. Можно ли как-то это сделать?
2. Создаю примерно такой пак действий:

0615: define_AS_pack_begin 0@ 

0633: AS_actor -1 exit_car 
0643: set_AS_pack 0@ loop 0 
0618: assign_actor 1@ to_AS_pack 0@ 
061B: remove_references_to_AS_pack 0@

Перед 0633: нужен опкод, заставляющий актёра некоторое время продолжать сидеть в машине. Пробовал 05B9: AS_actor -1 stay_idle 1000 ms, но здесь он не действует.
3. Можно ли сделать так, чтобы взорванная машина не исчезала до конца миссии?

Offline

Board footer

Powered by FluxBB