В данной статье мы рассмотрим базовые примеры работы с транспортом, педами и объектами в GTA 5. Этот материал предназначен для новичков, кто прежде не создавал скрипты для GTA 5, но уже знаком с синтаксисом языка C#. Если вы пропустили первую статью из этого цикла,
советуем ознакомиться.
Создание педовЧтобы создать педа, используйте метод
World.CreatePed():
World.CreatePed(PedHash.Hooker02SFY, Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0)));
Чтобы изменить свойства педа, присвойте ему переменную при вызове метода
World.CreatePed():
var ped = World.CreatePed(PedHash.Hooker02SFY, Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0)));
// Устанавливаем некоторые свойства
ped.CanBeDraggedOutOfVehicle = false;
ped.Armor = 75;
ped.Weapons.Give(WeaponHash.APPistol, 500, true, true);
Чтобы заставить педа выполнять определенные действия, вам нужно использовать свойство Task:
// Заставляем педа целиться в игрока в течение 5 секунд
ped.Task.AimAt(Game.Player.Character, 5000);
// Заставляем педа драться с игроком
ped.Task.FightAgainst(Game.Player.Character);
Животные в GTA 5 также относятся к педам и создаются аналогичным образом.
Создание транспортаДля создания транспорта используется метод
World.CreateVehicle():
World.CreateVehicle(VehicleHash.Dubsta, Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0)));
Аналогично педам, транспорту можно изменять свойства:
var position = Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0));
var heading = Game.Player.Character.Heading - 90;
var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading);
vehicle.DirtLevel = 15f;
vehicle.Mods.CustomPrimaryColor = Color.White;
vehicle.Mods.CustomSecondaryColor = Color.Black;
vehicle.Mods.LicensePlate = "GTABuilder";
vehicle.PlaceOnGround();
Вы также с легкостью можете модифицировать созданное авто, используя свойство
Vehicle.Mods[VehicleModType]. Но прежде всего необходимо вызвать
Vehicle.Mods.InstallModKit(). В противном случае изменения тюнинга не будут отображаться в игре.
Чтобы узнать индекс детали тюнинга, которую вы хотите установить, посетите LS Customs в игре, откройте раздел с деталями, которые вы хотите применить к авто (например, бампера), и отсчитайте список до нужной вам детали, начиная с нуля.
vehicle.Mods[VehicleModType.FrontBumper].Index = 3;
vehicle.Mods[VehicleModType.RearBumper].Index = 1;
Полный пример:
var position = Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0));
var heading = Game.Player.Character.Heading - 90;
var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading);
vehicle.DirtLevel = 15f;
vehicle.Mods.CustomPrimaryColor = Color.White;
vehicle.Mods.CustomSecondaryColor = Color.Black;
vehicle.Mods.LicensePlate = "GTABuilder";
vehicle.PlaceOnGround();
Vehicle.Mods.InstallModKit();
vehicle.Mods[VehicleModType.FrontBumper].Index = 3;
vehicle.Mods[VehicleModType.RearBumper].Index = 1;
vehicle.Mods[VehicleModType.Hood].Index = 2;
Создание объектовПрежде всего вам нужно узнать хэш-код объекта, который вы хотите создать. Для поиска объектов воспользуйтесь такими сайтами, как GTA-OBJECTS.XYZ или gtahash.ru.
Если вы создаете любые физические сущности (педов, транспортные средства, объекты) путем прямого вызова нативных функций, вам следует загрузить модели, которые вы планируете использовать, иначе игра может не создать физическую сущность и вернуть 0.
// Объявление имени модели campfire и ожидание до 250 миллисекунд
var model = new Model("prop_beach_fire");
model.Request(250);
// Проверяем модель на валидность
if (model.IsInCdImage && model.IsValid)
{
// Необходимо убедиться, что модель была загружена
while (!model.IsLoaded) Script.Wait(50);
// Создаем объект
World.CreateProp(model, Game.Player.Character.GetOffsetPosition(new Vector3(0, 5f, 0)), true, true);
}
// Удаляем загруженную модель из памяти игры, так как она больше не нужна
model.MarkAsNoLongerNeeded();
В следующей вводной статье вы научитесь вызывать нативные функции из C++ напрямую в вашем скрипте, применять их в качестве условий, а также использовать необработанные хэши функций.