000137. Группы в GTA San Andreas

Группы в GTA San Andreas|Всем привет! В этот юбилейный, сотый урок по скриптингу GTA SA от меня, я хотел-бы посвятить группам, известные Вам ещё как банды.|wmysterio|wmysterio||||Максимальное количество людей в банде составляет 8 человек. Создаётся группа следующим опкодом:

062F: 0@ = create_group_type 0

Здесь: 0@ - имя группы 0 - тип группы. Я пока не разобрался что значит этот параметр

Группа всегда состоит из её лидера и людей, слушающихся его. Для добавления лидера в группу существует опкод:

0630: put_actor 1@ in_group 0@ as_leader

Здесь: 1@ - актёр, который будет лидером 0@ - имя группы

Чтобы добавить члена группы, нужно использовать опкод:

0631: put_actor 2@ in_group 0@

Здесь: 2@ - актёр, который подчиняется лидеру 0@ - имя группы

Дать группе соответствующие команды:

07B3: set_group 0@ give_command 2

Здесь: 0@ - имя группы 2 - команда группе ( см. таблицу ниже )

НомерОписание

0, 1

Следовать за лидером, пока не знаю чем отличаются типы 0 и 1

2, 4

Тупо стоят

3

Члены группы будут жестикулировать руками, общаються в общем между собой

5

Самая интересная на мой взгляд команда - лидер начинает набирать ближайших пешеходов себе в банду. Собирает примерно 6-7 человек, но не больше и подбирает, я так заметил людей, которые имеют одинаковый тип пешехода

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

0940: set_group 0@ enters_leaders_vehicle 1

Здесь: 0@ - имя группы 1 - будут садится, 0 - запретить садится

Чтобы выгнать актёра из группы, используем:

06C9: remove_actor 1@ from_group

Можно распустить группу опкодом:

0632: release_group 0@

Обычно ещё задают группе максимальный лимит дистанции от лидера:

06F0: set_group 0@ distance_limit_to 30.0

Здесь: 0@ - имя группы 30.0 - максимальная дистанция

Среди проверок можно отметить следующие:

06EE: actor 1@ in_group 0@ // Актёр 1@ в группе 0@?
06EF: actor 1@ leading_group 0@ // Актёр является лидером группы?
07FD: group 0@ alive // Группа существует?

Давайте напишем простенький скрипт, где возле игрока будет создаваться группа. Лидер будет набирать людей к себе в банду.

{$CLEO}
04C4: store_coords_to 10@ 11@ 12@ from_actor $PLAYER_ACTOR with_offset -2.0 2.0 0.0
04C4: store_coords_to 13@ 14@ 15@ from_actor $PLAYER_ACTOR with_offset 0.0 2.0 0.0
04C4: store_coords_to 16@ 17@ 18@ from_actor $PLAYER_ACTOR with_offset 2.0 2.0 0.0
0376: 1@ = create_random_actor_at 10@ 11@ 12@
0376: 2@ = create_random_actor_at 13@ 14@ 15@
0376: 3@ = create_random_actor_at 16@ 17@ 18@
062F: 0@ = create_group_type 0
0630: put_actor 1@ in_group 0@ as_leader
0631: put_actor 2@ in_group 0@
0631: put_actor 3@ in_group 0@
07B3: set_group 0@ give_command 5 // даём группе команду
0A93: end_custom_thread

Результат:

На этом урок окончен. Спасибо, что не поленились почитать этой материал :)|1615|1|0|95563313png500281400`224``||gruppy_v_gta_san_andreas|1504593040

Last updated