You are not logged in.
Voron295 wrote:1) Как узнать ид машины, только ид нужен.
Пробовал 1@ = Car.Id (0@) выдает ошибку при комплированиеЕсли идёт речь о ID модели машины, то это должно подойти:
10441:1@= car0@modelПри условии, что в 0@ записан хендл машины и эта машина существует.
Насчёт флагов - ты их читать хочешь или записывать?
По идее они же включаются и выключается, мне надо чтоб я мог включить каждый флаг и отключить и еще хотелось бы узнать статус определенного флага т.е, узнать включен ли флаг или выключен
Last edited by HH (04-02-2014 10:23)
Offline
Просьба подсказать, как протестировать нужный бит, когда характеристика определяется битовым флагом в VC? Например, наличие второй выхлопной трубы, ведь опкода подобного SA 08B7: test 1@ bit 13 в VC нет.
Offline
Там есть побитовые операции.
05F9: 1@ = 1@ AND 0@
05FA: 1@ = 1@ OR 0@
05FC: 1@ = NOT 0@
Вот с помощью них.
Вот, например, AND проверяет два числа, не важно в каком порядке, скажем, число 128 и число 4. В итоге будет ноль, так как если посмотреть на числа, у них не совпадают биты, вот например числа 2 и 3 совпадают первым битом, значит и результат будет итоговый 2. Или скажем числа 22 и 14 результат будет 6, так как только первый и второй совпадают. Ну итд. Вообще в итоге мы имеем такую картину: при операции AND те биты у двух чисел, которые совпадают, и дают итоговое число. Что это дает, например, тебе нужно проверить, что число 20@ имеет 3 бит. Что мы делаем, пишем...:
1 2 3 4 5 6 | 05F9: 1@ = 20@ AND 8 // здесь получается, что мы сравниваем два числа, одно из которых имеет лишь 3 бит, что нам и надо if // потом просто делаем проверку такую 1@ <> 0then //значит что 3 бит у числа 20@ есть end |
Операция OR делает следующее: два числа сравниваются тоже без разницы в каком порядке. Если биты не совпадают, все равно итог будет за существующим битом, т.е, например, числа 22 и 14 в итоге дадут 30, так как мы суммируем все биты.
Это можно применять для установки бита.
Например, тебе нужен 3 бит у числа 20@
Делаем...:
1 | 05FA: 20@ = 20@ OR 8 // в итоге число 20@ содержит 3 бит |
Ну и операция NOT. Как ты можешь догадаться, можно использовать для снятия бита.
Т.е. NOT переворачивает биты. Например, число 6 в итоге будет -7 из расчета, что число 4 байта (в игре используется именно 4 байта на любое число).
Чтоб снять бит делаем...:
1 2 3 | 05FC: 20@ = NOT 20@05FA: 20@ = 20@ OR 805FC: 20@ = NOT 20@ // в итоге в числе 20@ 3 бит пропадает |
Last edited by mfisto (09-10-2014 19:52)
I know everything and nothing...
Offline
Хочу сделать скрипт, чтобы лодка двигалась за лодкой игрока, но не могу найти команды. Для машины есть Car.Drive to. А вот для лодки какая? Видел, в игре полицейская лодка ж гонится за игроком, но увы, такого скрипта не нашёл в мейне, где он может быть? Спасибо.
Offline
например, тебе нужно проверить, что число 20@ имеет 3 бит
Нет, мне нужно проверить включен или выключен нужный бит. Вот, например, я прочитал значение из handling
1 2 3 4 5 6 7 8 9 10 | 05E7: 1@ = car 0@ struct 1@ += 0x12005E0: 1@ = read_memory 1@ size 4 virtual_protect 01@ += 0xCC05E0: 1@ = read_memory 1@ size 4 virtual_protect 0// дальше, как проверить, что 8-й бит вкл или выкл?// в SA я бы сделал так// if // 08B7: test 1@ bit 8 //then |
Offline
 Вопросы по скриптингу SannyBuilder.com Forums_files/3.png)
mfisto все правильно написал. Чтобы проверить установлен bit или нет, нужно сделать операцию AND (логическое умножение) двух чисел. Одним из этих чисел будет проверяемая переменная 1@, а другим - число, у которого нужный бит (восьмой) установлен в 1. Это число 0b10000000 или 0x80 или 128.
1 2 3 4 5 | 05F9: 2@ = 1@ AND 0x80if2@ > 0then// 8й бит установлен |
Операция AND побитово перемножит два числа. Поскольку у 0x80 только 8й бит равен 1, остальные биты при умножении дадут 0. Если в 1@ восьмой бит равен 0 результат умножения (2@) будет равен 0 (0 and 0 = 0), если равен 1, то 2@ будет больше 0.
На всякий случай таблица умножения:
0 and 0 = 0
1 and 0 = 0
0 and 1 = 0
1 and 1 = 1
Offline
mfisto, Seemann, спасибо.
С этим разобрался, но возник по-ходу дела ещё вопрос. Вот в SA
1 2 3 4 | 1st digit 1: IS_VAN 2: IS_BUS 4: IS_LOW 8: IS_BIG2nd digit 1: REVERSE_BONNET 2: HANGING_BOOT 4: TAILGATE_BOOT 8: NOSWING_BOOT3rd digit 1: NO_DOORS 2: TANDEM_SEATS 4: SIT_IN_BOAT 8: CONVERTIBLE4th digit 1: NO_EXHAUST 2: DOUBLE_EXHAUST 4: NO1FPS_LOOK_BEHIND 8: FORCE_DOOR_CHECK |
флаг DOUBLE_EXHAUST считывался 13-м битом, т.е. с нуля считал
08B7: test 1@ bit 13
В VC
1 2 3 | 1st digit = 1: 1G_BOOST 2: 2G_BOOST 4: REV_BONNET 8: HANGING_BOOT2nd digit = 1: NO_DOORS 2: IS_VAN 4: IS_BUS 8: IS_LOW3rd digit = 1: DBL_EXHAUST 2: TAILGATE_BOOT 4: NOSWING_BOOT 8: NONPLAYER_STABILISER |
почему-то этот флаг надо считывать с 1
05F9: 2@ = 1@ AND 0x100
Почему?
Offline
Хочу сделать скрипт, чтобы лодка двигалась за лодкой игрока, но не могу найти команды. Для машины есть Car.Drive to. А вот для лодки какая? Видел, в игре полицейская лодка ж гонится за игроком, но увы, такого скрипта не нашёл в мейне, где он может быть? Спасибо.
Вот этим опкодом можно заставить лодку плыть к точке.
1 | 02D3: boat $2696 drive_to 171.0578 942.3843 6.0 |
Или можно заставить лодку двигаться по записанному раннее маршруту, это работает только в GTA SA. Маршрут записывается в rrr скрипт, который можно потом добавить в img архив под соответствующим номером, и путем специальных опкодов лодка поплывет по этому маршруту. Для создания rrr скрипта есть cs скрипт. Он доступен для скачивания на сайте cleo.li.
I know everything and nothing...
Offline
Все верно биты считаются с 0, у тебя 0x100 это и есть 8 бит, а точнее 9 по порядку если.
число, у которого нужный бит (восьмой) установлен в 1. Это число 0b10000000 или 0x80 или 128.
С битами раньше не связывался.
Вот и запутался поэтому.  Вопросы по скриптингу SannyBuilder.com Forums_files/grin.gif)
Ну теперь разобрался, спасибо mfisto и Seemann
Offline
Hetzer wrote:Хочу сделать скрипт, чтобы лодка двигалась за лодкой игрока, но не могу найти команды. Для машины есть Car.Drive to. А вот для лодки какая? Видел, в игре полицейская лодка ж гонится за игроком, но увы, такого скрипта не нашёл в мейне, где он может быть? Спасибо.
Вот этим опкодом можно заставить лодку плыть к точке.
102D3: boat$2696drive_to171.0578942.38436.0Или можно заставить лодку двигаться по записанному раннее маршруту, это работает только в GTA SA. Маршрут записывается в rrr скрипт, который можно потом добавить в img архив под соответствующим номером, и путем специальных опкодов лодка поплывет по этому маршруту. Для создания rrr скрипта есть cs скрипт. Он доступен для скачивания на сайте cleo.li.
Спасибо. Однако, это к точке, а как быть с перемещающимся игроком/персонажем? Видать, надо через store_coords что-то думать?
Offline
может так?
03C0: 0@ = actor $PLAYER_ACTOR car
00AA: store_car 0@ position_to 1@ 2@ 3@
//0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 -3.0 0.0
02D3: boat 4@ drive_to 1@ 2@ 3@
Offline
Видать, надо через store_coords что-то думать?
Да видимо так и надо.
А насчет битов, то мне тоже когда-то объясняли, это был Alien. Вот с тех пор я стал разбираться. Вопрос битов стал меня волновать еще с СА. А вот в ВС этого действительно не было. И когда я стал выяснять, как применить побитовые опкоды, он мне и объяснил заодно и внедрил в клео ВС. А вот в третьей части таких опкодов нет, и там приходится делать асм вставки. Клео для 3 части разрабатывает на данный момент DK. Он уже эти опкоды добавил. Пока все на этапе тестирования.
I know everything and nothing...
Offline
а что ж, где можно найти скрипты действия полиции? Или они в экзе файле?
Offline
В базе для gta3 нет описания структур.
Или у меня левая база?  Вопросы по скриптингу SannyBuilder.com Forums_files/grin.gif)
Offline
А у кого есть с описанием структур? Поделитесь пожалуйста.
Offline
Когда нажимаю "Компилировать" выдаёт ошибку "Неизвестная команда" Причем любая команда, даже wait. Вопросы по скриптингу SannyBuilder.com Forums_files/miKwYjk.jpg)
Offline
 Вопросы по скриптингу SannyBuilder.com Forums_files/3.png)
Когда нажимаю "Компилировать" выдаёт ошибку "Неизвестная команда" Причем любая команда, даже wait.
http://i.imgur.com/miKwYjk.jpg
Какой стоит режим редактирования?
Offline
max99ru wrote:Когда нажимаю "Компилировать" выдаёт ошибку "Неизвестная команда" Причем любая команда, даже wait.
http://i.imgur.com/miKwYjk.jpgКакой стоит режим редактирования?
GTA SA SCR
Offline
Seemann wrote:max99ru wrote:Когда нажимаю "Компилировать" выдаёт ошибку "Неизвестная команда" Причем любая команда, даже wait.
http://i.imgur.com/miKwYjk.jpgКакой стоит режим редактирования?
GTA SA SCR
Выбери GTA SA.
Offline
 Вопросы по скриптингу SannyBuilder.com Forums_files/14112.jpg)
Подскажите опкод на полное отключение трафика, пожалуйста.
Your Banny Wrote
Offline
Подскажите опкод на полное отключение трафика, пожалуйста.
1 2 | 01EB: set_traffic_density_multiplier_to 0.0 // выключить трафик транспорта 0%03DE: set_pedestrians_density_multiplier_to 0.0 // выключить трафик актёров 0% |
Offline
 Вопросы по скриптингу SannyBuilder.com Forums_files/14112.jpg)
Спасибо, kenking.
А вот такой вопрос:
Как сделать так, чтобы при управлении игроком, он шел спокойно, как будто зажата клавиша Alt?
Your Banny Wrote
Offline