# 00088. Интересные опкоды (Часть 1)

Интересные опкоды (Часть 1)|В этом уроке перечислены самые интересные и полезные опкодов, на мой взгляд.|wmysterio|wmysterio||||Всем привет! Этот урок будет посвящен исключительно опкодам.

1. Все мы помним, как тяжело иногда набрать 6 звёзд, не используя читы. Вот этот опкод позволит вам набрать все шесть звёзд за два убийства:

```
03C7: set_sensitivity_to_crime 20.0
```

Здесь:\
20.0 - процент возрастания криминального рейтинга. Если поставить 0.0, то, естественно, криминальный рейтинг возрастать не будет ( или будет возрастать, но очень долго )

1. Возможно так же записать в переменные текущие координаты трупа:

```
04A5: store_dead_actor 0@ position_to 1@ 2@ 3@
```

Здесь:\
0@ - мёртвый актёр\
1@ 2@ 3@ - переменные, в которых будут хранится координаты

1. Иногда возникает необходимость узнать текущую цену автомобиля. Пожалуйста:

```
09E1: get_car_model 0@ price_to $PRICE
```

Здесь:\
0@ - хендл автомобиля\
$PRICE - в эту переменную и заносится цена автомобиля ( целое число )

1. Вот интересные опкоды, которые убирают некоторый транспортный поток:

```
099E: enable_police_patrols 0 // Патрули полиции не будут встречаться по дороге
072C: generate_police_bikes 0 // Тоже самое, что и опкод 099E, только убирает полицейские байки
06D0: enable_emergency_traffic 0 // На убийства и пожары перестанут приезжать медики и пожарные
06D7: toggle_train_traffic 0 // Поезда перестанут ездить
0923: unknown_toggle_air_traffic 0 // Убирает воздушный трафик ( самолёты и вертолеты )
```

Здесь:\
0 - выключить, 1 - включить

1. Иногда нужно, что бы вертолёт начал падать. Не проблема:

```
0564: heli 0@ simulate_crash_landing
```

Опкод заставляет симулировать падение ( как это было в одной из миссий )

1. Хотите, чтобы звёзды уровня розыска мигали, как после перекраски, держите:

```
09D4: suspend_wanted_level
```

1. Вот ещё одна неплохая проверка:

```
0A29: player $PLAYER_CHAR climbing
```

Проверяет: "Игрок лезет на что то ( перелазит через что то )?".

1. Вот этот опкод вы не найдете в SASCM.INI, но SB не вызовет никаких ошибок:

```
0488: model 205 exists
```

Проверка: "Модель 205 существует?".

Здесь:\
205 - модель ID ( которое используется в команде Model.Load )

1. Вот ещё интересный опкод, связаный с Гидрой:

```
0745: set_hydra 0@ thrust_to_horizontal
```

Поворачивает турбины Гидры "0@" ( истребителя, если кто не понял :) ) по горизонтали.

1. Очень часто у меня спрашивали, как заставить актёра стрелять куда то. Вот:

```
0668: AS_actor 0@ rotate_and_shoot_at 374.2905 -125.681 1001.308 2000 ms
```

Актёр "0@" будет стрелять в точку "374.2905 -125.681 1001.308" на протяжении "2" секунд.

1. Бывает необходимость запретить возможность перекрашивать автомобиль:

```
0294: set_car $car sprayable 0
```

Если установить значение на "1" - разрешает перекраску.

1. Следующие три опкода связаны с оружием:

```
0881: set_player $PLAYER_CHAR able_to_shoot_weapons 0 // 1 - обратное действие
0992: set_player $PLAYER_CHAR weapons_scrollable 0 // 1 - обратное действие
01B9: set_actor 0@ armed_weapon_to 30
```

Первый опкод запрещает игроку стрелять. Второй опкод запрещает игроку менять слоты оружия. Третий опкод устанавливает актёру "0@" оружие с номером "30". Оно не даёт само оружие, а только имитирует выбор. Полезно использовать, когда Вы дали актёру несколько типов оружия и хотите, что бы он начал стрелять именно с нужного номера.

1. Следующие опкоды связаны с автомобилями:

```
01E9: 1@ = car 0@ num_passengers // Записать в переменную 1@ текущее количество пассажиров в автомобиле 0@
01EA: 1@ = car 0@ max_passengers // Записать в переменную 1@ максимальное количество мест в автомобиле 0@
01E0: 1@ = car 0@ occupied_seats // Записать в переменную 1@ количество зянятых мест в автомобиле 0@
0431: car 0@ passenger_seat_free 0 // Проверка: "Место с номером 0 занято в автомобиле 0@?"
```

1. Так же есть ряд опкодов, связанных с шинами автомобиля:

```
04FE: deflate_tire 2 on_car 0@ // Повредить шину с номер 2 в автомобиле 0@
0699: set_car 0@ repair_tire 2 // Отремонтировать шину с номер 2 в автомобиле 0@
053F: set_car 0@ tires_vulnerability 0 // Устанавливает всем покрышкам автомобиля 0@ иммунитеты к выстрелам
0496: tire 0 on_car 0@ deflated // Проверка: "Шина 0 в машине 0@ повреждена?"
```

1. Так же есть возможность создать и удалять объектные группы:

```
0776: create_objects_in_object_group "BARRIERS1"
0777: delete_objects_in_object_group "BARRIERS1"
```

Опкод создаёт/удаляет препятствия на дороге. Например: барьер, который не даёт автомобилям ездить между городами. Все барьеры выставляются автоматически в нужных местах. Вот список известных мне объектных групп:

| Имя          |
| ------------ |
| "BARRIERS1"  |
| "BARRIERS2"  |
| "TRUTHSFARM" |
| "CRACK"      |

1. Если вас достало выскакивающее окошко статистики ( по-умолчанию кнопка TAB\` ), то вы можете отключить эту возможность опкодом:

```
0960: toggle_player_stats_box $PLAYER_CHAR flag 0 // 1- включить. Опкод нужно использовать в цикле!
```

Как видите, получился неплохой списочек =) Всё это я собирал на протяжении всей моей скриптерской деятельности. И, конечно же, это не всё! Так что время от времени я буду делится этой коллекцией с Вами, а пока, так сказать, урок, закончен. Надеюсь вы откроете что то новое для себя.|2595|1|0||interesnye\_opkody\_perechislenie\_na\_moj\_vzgljad\_samykh\_interesnykh\_i\_poleznykh\_opkodov|1500729419
