Уроки моддинга
Основной раздел
Search
K
Links

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