# Chapter 8. Exercises

In the last section we learned all about programming, and got a basic understanding of reading code, and how the VSCode intellisense works. Now in this section we're going to explain a problem, and you're going to try and build a solution. They'll be fairly straight forward exercises but it'll help with understanding the code a bit more.

# Spawn a Vehicle

# Problem

Given the code in the last section, there was a section on creating a vehicle. Spawn a vehicle and then use the setIntoVehicle function on the player and pass the vehicle and seat 1 which is the driver seat. You can spawn the vehicle when the player connects to the server.

Here's a few vehicle models: t20, akuma, infernus, washington.

# Solution

const spawnA = new alt.Vector3({
    x: -866.1100463867188,
    y: -172.2382354736328,
    z: 37.80417251586914,
});

alt.on('playerConnect', (player) => {
    player.model = 'mp_m_freemode_01';
    player.spawn(spawnA);

    const vehicle = new alt.Vehicle('akuma', spawnA, new alt.Vector3(0, 0, 0));
    player.setIntoVehicle(vehicle, 1);
});

# Flip Between Spawns

# Problem

Given the two positions below and some code, use them to teleport each player who joins the server to a different spawn.

You can use a boolean to switch between both positions.

const spawnA = new alt.Vector3({
    x: -866.1100463867188,
    y: -172.2382354736328,
    z: 37.80417251586914,
});

const spawnB = new alt.Vector3({
    x: -852.0750122070312,
    y: -141.91029357910156,
    z: 37.64464569091797,
});

let useSpawnA = true;

alt.on('playerConnect', (player) => {
    player.model = 'mp_m_freemode_01';
    player.spawn(spawnA);
});

# Solution

You can verify this solution by typing reconnect in the F8 in-game console menu.

const spawnA = new alt.Vector3({
    x: -866.1100463867188,
    y: -172.2382354736328,
    z: 37.80417251586914,
});

const spawnB = new alt.Vector3({
    x: -852.0750122070312,
    y: -141.91029357910156,
    z: 37.64464569091797,
});

let useSpawnA = false;

alt.on('playerConnect', (player) => {
    player.model = 'mp_m_freemode_01';

    if (useSpawnA) {
        player.spawn(spawnA);
        useSpawnA = false;
    } else {
        player.spawn(spawnB);
        useSpawnA = true;
    }
});

# Randomized Weapons

# Problem

You want to randomly give each player a weapon when they connect to the server.

Given the following list of weapons, use it to randomly give a player a weapon.

const weapons = ['WEAPON_BATTLEAXE', 'WEAPON_CROWBAR', 'WEAPON_BAT'];

Additionally, you can generate a random index for an array like this.

const index = Math.floor(Math.random() * weapons.length);

Use the index to distribute a weapon to the player.

# Solution

const spawnA = new alt.Vector3({
    x: -866.1100463867188,
    y: -172.2382354736328,
    z: 37.80417251586914,
});

const weapons = ['WEAPON_BATTLEAXE', 'WEAPON_CROWBAR', 'WEAPON_BAT'];

alt.on('playerConnect', (player) => {
    player.model = 'mp_m_freemode_01';
    player.spawn(spawnA);

    const index = Math.floor(Math.random() * weapons.length);
    player.giveWeapon(weapons[index], 1, true);
});