You are not logged in.
HH wrote:Всем привет.
09BC: put_actor $PLAYER_ACTOR at 0.0 0.0 0.0Этот опкод не "подстраховывается" т.е. не увеличивается координату Z на 1.0. Нужен аналогичный опкод, только для машины. Кто может помочь??
00AB
Спасибо, попробую
Offline
По моим тестам этот опкод тоже увеличивает координату 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
Не надо писать несколько постов подряд, редактируй предыдущее сообщение (Кнопка Edit).
Попробуй вместо координаты Z указать число -100.0 Игра сама рассчитает нужную высоту.
Offline
Я всё-таки не понимаю, что мешает отнять единицу от высоты?
Не точно отнимается, машина например все равно чуть-чуть поднимается наверх(если в воздухе), мне нужна точность, если записал координаты машины, телепортнул её на эти координаты, чтоб машина была на тех же координатах, не выше и не ниже. Вообщем нужно подобие опкоду 09BC: только для машины.
Last edited by HH (25-02-2014 17:30)
Offline
Не точно отнимается, машина например все равно чуть-чуть поднимается наверх(если в воздухе), мне нужна точность, если записал координаты машины, телепортнул её на эти координаты, чтоб машина была на тех же координатах, не выше и не ниже. Вообщем нужно подобие опкоду 09BC: только для машины.
Как-то за всю историю своей скриптерской деятельности обходился без этой маленькой погрешности и всё нормально работало. Если вы сильный фанат точности, то координаты комбинацией ctrl shift c вам выводят уже округлённые значения. Работайте с тем что есть...
Offline
По идее опкод 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
Во общем вопрос закрыт, спасибо всем.
Offline
Пилю погодный мод для GTA 3. Хочу сдвинуть время включения уличного освещения и автомобильных фар - включаются в 8-9 вечера, а нужно в 5-6. Сам не нашел, возможно неправильно формулирую запрос поисковику. Если такое возможно, то буду рад опкоду или примеру.
Offline
помогите с опкодом, вот нашел такой опкод - 08E1, он должен вроде как, принимать кол-во закрашенных граффити, вот что я написал:
08E1: 1 total_tags_sprayed
В игре вылет, почему?
Offline
08E1: $STAT_TAGS_SPRAYED = total_tags_sprayed
первый параметр - переменная, в которую записывается результат (число закрашенных граффити)
Offline
понятно, спасибо!
Offline
Я всё-таки не понимаю, что мешает отнять единицу от высоты?
Я не знаю, как с автомобилями, а вот с актёром недавно у меня была одна проблема. Пытался переместить игрока в интерьер с низким потолком, так вот при использовании 00A1 (хоть с вычитанием единицы, хоть без) игра просто начинала глючить, портилось изображение. С 08C7 всё стало нормально.
Есть пара вопросов:
1. Можно ли заставить автомобиль ехать за актёром (не игроком)?
2. Можно ли сделать так, чтобы актёр шёл задом и при этом стрелял?
Offline
Offline
Offline
http://sannybuilder.com/forums/viewtopic.php?id=1046
Вот тут наиподробнейше расписано.
Offline
{$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)
Offline
Три вопроса:
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