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 — тип актёра, к которому относятся

В нашем примере банда гров относится к СЖ с уважением. Если мы хотим, что бы СЖ-я ненавидела банда Гров, то 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|09129058png1314788400`239``||tipy_peshekhodov_i_band|1498566085

Last updated