00020. Типы пешеходов, номера банд и отношение между ними
Типы пешеходов, номера банд и отношение между ними|Этот урок я посвящу бандам, то есть мы научим банды контролировать улицы, указывать отношение банд к игроку ( CJ ).|wmysterio|wmysterio||||Пришло время нам немного бросить теорию и начать делать что то с игрой :)
Для начала нужно знать кто такой актёр ( actor ). Актёр — это любой персонаж в игре, в том числе и СЖ. Каждый такой актёр имеет свой тип, то есть какую роль он будет выполнять в игре. Таблицу всех известных типов можно найти в справке SB или в нашей базе данных).
Банда — это небольшое количество людей, в которых общие цели. Всего в игре есть около 10 банд. И каждая банда имеет свой уникальный номер. Номера банд можно узнать со справки компилятора или посмотреть нашу базу данных. Обратите внимание, что счёт ведётся с нуля.
Итак, давайте укажем зону, которую будут контролировать банды. Делается это опкодом:
076C: set_zone 'GAN1' gang 1 density_to 80
Здесь: 'GAN1' — это имя зоны, которую будут контролировать банды ( имя игровые зоны можно найти в справке или в нашей базе данных ) 1 — номер банды, которая будет контролировать, в нашем случаи это гроув 80 — это плотность ( сила ) банды. Советую брать диапазон от 1 до 100. Учтите, что чем меньше плотность, тем реже будут появляться члены банд на улице.
Чтобы в банд было какое-то оружие, нужно написать опкод:
0237: set_gang 1 weapons_to 24 29 4
1 — номер банды 24 - номер первого оружия 29 - номер второго оружия 4 - номер третьего оружия
Все номера оружия вы сможете просмотреть в нашей базе данных ( см. колонку "Номер оружия" ).
Если мы хотим, что бы велась война за территории ( их можно было захватить ), то используйте опкод:
0879: enable_gang_wars 1
Здесь: 1 - включить возможность ( если поставить 0, то такой возможности не будет ).× **Примечание:** Можно отбирать территории только в Баллас и Вагос. Менять цвет или добавлять новый опкодом нельзя! Ещё нету такой возможности, что бы СЖ стал представителем какой то банды ( не гров ). Такие возможности скорее можно делать только через игровую память, но там я не силён.× **ВАЖНО:** Чтобы увидеть окраску зон, нужно зайти в любой интерьер ( например, дом Карла ) и снова выйти на улицу. Если эффект не достигается, то как правило, достаточно убить игрока и зоны окрасятся в нужные цвета. Также иногда помогает загрузка сохранения.
Давайте напишем скрипт, что бы было парочка районов, которых можно захватить:
// WMYSTERIO, ru-script.3dn.ru
DEFINE OBJECTS 1
DEFINE OBJECT SANNY BUILDER 3.04
DEFINE MISSIONS 0
DEFINE EXTERNAL_SCRIPTS 0
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 3072
//-------------MAIN---------------
thread 'MAIN'
set_wb_check_to 0
set_weather 0
select_interior 0
fade 0 0
0180: set_on_mission_flag_to $ONMISSION
00C0: set_current_time_hours_to 8 minutes_to 0
04E4: unknown_refresh_game_renderer_at 2491.1572 -1670.3434
Camera.SetAtPos(2491.1572, -1670.3434, 12.3359)
$PLAYER_CHAR = Player.Create(#NULL, 2491.1572, -1670.3434, 12.3359)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Actor.Angle($PLAYER_ACTOR) = 66.3548
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group
Camera.SetBehindPlayer
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
fade 1 0
// старт нового кода
0879: enable_gang_wars 1
076C: set_zone 'GAN1' gang 1 density_to 40
076C: set_zone 'GAN2' gang 1 density_to 80
076C: set_zone 'IWD1' gang 0 density_to 40
076C: set_zone 'IWD2' gang 0 density_to 80
076C: set_zone 'IWD3A' gang 2 density_to 40
076C: set_zone 'IWD3B' gang 2 density_to 80
0237: set_gang 0 weapons_to 22 31 14
0237: set_gang 1 weapons_to 30 28 17
0237: set_gang 2 weapons_to 36 15 27
// конец нового кода
end_thread
Давайте проверим наш скрипт. Как видим, наша задача выполнена. Просмотрев карту, мы увидим примерно такое:
Всё, что нам осталось - это захватить их. Как это делается, думаю, вам известно :) Давайте напишем как будут относится к СЖ банды или другие педы ( актёры(люди) ). Вот опкод, который отвечает за это:
0746: set_acquaintance 1 of_actors_pedtype 8 to_actors_pedtype 0
Здесь: 1 — это само отношение. Таблица возможных отношений приведена ниже 8 — тип актёра, который относится к кому-то 0 — тип актёра, к которому относятся
Номер
Отношение
0
Превознесение ( не будут нападать )
1
Уважение ( могут отвечать на атаки в их сторону )
2
Ранодушее ( будут нападать только тогда, когда атакуют их )
3
Неприязнь ( есть шанс напасть без причины )
4
Ненависть ( будут нападать при первой возможности )
В нашем примере банда гров относится к СЖ с уважением. Если мы хотим, что бы СЖ-я ненавидела банда Гров, то 1 нужно поменять на 4.
Давайте сделаем так, что бы были постоянно перестрелки между бандами и копами, то есть что бы они ненавидели друг друга. То же самое касается и банд:
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 6
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 6
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 6
После этого, как только банды ( гров, вагос, баллас ) увидят копов, сразу же попытаются их убить. Что бы копы тоже ненавидели банды, допишем строки:
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 9
Таким образом мы сделали поставленную задачу. Теперь нам осталось только написать отношение банд к другим бандам, а так же отношение банд к СЖ:
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 9
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 9
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 0
0746: set_acquaintance 0 of_actors_pedtype 8 to_actors_pedtype 0
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 0
Вот мы и написали отношение банд к СЖ, к другим бандам и копам. Нам осталось только вставить результат в скрипт и проверить.
// WMYSTERIO, ru-script.3dn.ru
DEFINE OBJECTS 1
DEFINE OBJECT SANNY BUILDER 3.04
DEFINE MISSIONS 0
DEFINE EXTERNAL_SCRIPTS 0
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 3072
//-------------MAIN---------------
thread 'MAIN'
set_wb_check_to 0
set_weather 0
select_interior 0
fade 0 0
0180: set_on_mission_flag_to $ONMISSION
00C0: set_current_time_hours_to 8 minutes_to 0
04E4: unknown_refresh_game_renderer_at 2491.1572 -1670.3434
Camera.SetAtPos(2491.1572, -1670.3434, 12.3359)
$PLAYER_CHAR = Player.Create(#NULL, 2491.1572, -1670.3434, 12.3359)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Actor.Angle($PLAYER_ACTOR) = 66.3548
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group
Camera.SetBehindPlayer
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
fade 1 0
0879: enable_gang_wars 1 // наш новый код!
076C: set_zone 'GAN1' gang 1 density_to 40
076C: set_zone 'GAN2' gang 1 density_to 80
076C: set_zone 'IWD1' gang 0 density_to 40
076C: set_zone 'IWD2' gang 0 density_to 80
076C: set_zone 'IWD3A' gang 2 density_to 40
076C: set_zone 'IWD3B' gang 2 density_to 80
0237: set_gang 0 weapons_to 22 31 14
0237: set_gang 1 weapons_to 30 28 17
0237: set_gang 2 weapons_to 36 15 27
// старт нового кода
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 6
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 6
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 6
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 6 to_actors_pedtype 9
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 9
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 9
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 7
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 8
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 0
0746: set_acquaintance 0 of_actors_pedtype 8 to_actors_pedtype 0
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 0
// конец нового кода
end_thread
С таким кодом в игре обязательно должны случатся массовые перестрелки, что повышает криминальность города. Так же можно сделать, что бы банды не приставали к СЖ, когда он возле них. Экспериментируйте с отношениями и типами актёров. Если есть вопросы по этой теме пишите комментарии или обращайтесь на форум.
P. S. Думаю бессмысленно указывать отношение СЖ к другим педам, так как управляете им вы! =)|2637|1|0|09129058png
1314788
400`239``||tipy_peshekhodov_i_band|1498566085
Last updated
Was this helpful?