Рейтинг - 5.0 (3)

Этот урок я посвящу бандам, то есть мы научим банды контролировать улицы, указывать отношение банд к игроку ( CJ ).

Пришло время нам немного бросить теорию и начать делать что то с игрой :)

Для начала нужно знать кто такой актёр ( 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. Думаю бессмысленно указывать отношение СЖ к другим педам, так как управляете им вы! =)


Теги: acquaintance, Номера банд, actor types, отоношение между актёрами, ТИПЫ ПЕШЕХОДОВ, ped types

KiLLeR96   (30.04.12 16:26)
Quote
P.S Думаю бессмысленно указывать отношение СЖ к другим педам, так как управляете им вы! =)

СиДжей сам решит кого пощадить а кого уничтожить. happy

MixWeb   (01.09.12 15:16)
Спасибо за урок! Очень понятно все написано !

doc   (30.09.12 14:24)
А как создать свою зону ? по координатам вот я на пример создал новую мапу и хочу чтобы там ошивались Groove , или ballas . Как мне это сделать ? Скажите плиззз

wmysterio   (30.09.12 17:18)
doc, нужно отредактировать файл "info.zon", что в папке "data". Там копируешь любую строку и вставляешь её в конец файла(перед end). Там есть координаты (шесть дробных чисел). Первая координата - это точка А(начало условного куба), следующие координаты - точка B(конец условного куба)

Первый параметр - имя зоны, которое используется в скрипте; последний параметр - название зоны, которое видит игрок на экране.

mumba1313   (24.08.14 20:02)
Я начинающий скриптер, до этого урока все подробно расписывалось, а в этом что то не совсем понятно, особенно с первой половиной скрипта

0
wmysterio   (24.08.14 20:57)
Если вы о коде, где нет выделения зелёным цветом, то тот участок кода либо уже встречался ранее, либо будет рассмотрен в последующих уроках. Можете кинуть участок кода с которым у вас затруднения и я попытаюсь детальнее объяснить.

mihannnn   (29.03.15 18:17)
Чтобы не было проблемы с не отображением зон на карте нужно перед опкодами 076C: вставить опкод 08CA:reset_zones_info

BalashovM   (27.12.15 22:24)
Почему-то всё равно ни зоны не отображаются, ни банды не торчат там, где им следовало бы.

SINGER   (04.05.15 16:00)
Классный тутор!

Dyabda   (09.08.17 03:03)
Уважаемый Wmysterio.
Я начал изучать ваш урок, добавил в очищенный мейн из ваших первых уроков данный код.
Ничего не произошло, зоны на карте цветными не стали.
Потом я решил скопировать весь мейн из этого урока с кодом.
И вновь ничего не произошло! Зоны карты по прежнему не цветные!
В чём проблема?

Dyabda   (09.08.17 03:08)
И ещё, что это за команда "fade 1 0"?

Dyabda   (09.08.17 03:12)
С цветными районами разобрался, нужно вставить опкод "0879: enable_gang_wars 1"
После опкодов "076C". Простите что пишу так много комментариев.
И всё же, что это за команда "fade 1 0"?

0
wmysterio   (09.08.17 12:14)
Нужно поместить игрока в дргугой интерьер и обрато на 0. Сразу не всегла применяется окраска.

Он отвечает за осветление(1) или затеменение(0) экрана. Читайте урок о видеороликах в GTA SA.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какая GTA Вам понравилась больше всего?
Всего ответов: 9
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Рекомендую
Реклама