---
name: "BIS_fnc_destroyer01Init"
type: function
status: ok
groups: ["Destroyer"]
arma3_since: "1.84"
locality: {"argument": null, "effect": "global", "server_exec": false}
source: https://community.bistudio.com/wiki/BIS_fnc_destroyer01Init
revid: 379556
updated: 2026-10-31T13:49:06Z
---

# BIS_fnc_destroyer01Init

*Function · Destroyer · Arma 3 v1.84*

Locality: effect **global**

## Description

Main function that assembles a multi-part ship such as the destroyer. The ship's base object is a blank model with memory points; every other part is a separate object that is created and placed on one of these memory points.
The function is called by the `init` event handler of the ship's base class and does nothing outside the server. It is not meant to be called from scripts: calling it again creates a second set of parts.

The parts are read from the base class's `multiStructureParts[]` config array, where each entry has the format `{ "partClassName", "memoryPointName" }`. For each entry the function:

- creates the part with [createVehicle](../commands/createVehicle.md) (special "CAN_COLLIDE")
- gives it the base's direction, pitch and bank
- places it with [setPosWorld](../commands/setPosWorld.md) on the base's memory point
- disables its damage with [allowDamage](../commands/allowDamage.md)

Finally it stores the created parts on the base object as the public variable `"bis_carrierParts"`, format `[[part, memoryPointName], ...]`, which the other destroyer functions read.

## Syntax

```sqf
[ship] call BIS_fnc_destroyer01Init
```

**Parameters:**

- `ship`: [Object](../topics/Object.md) - the ship's base object (the init event handler passes it as `_this`)

**Returns:** [Nothing](../topics/Nothing.md)

## Examples

### Example 1

Event handlers of the ship's base class:

```cpp
class EventHandlers
{
    init = "_this call BIS_fnc_Destroyer01Init";
    AttributesChanged3DEN = "_this call BIS_fnc_Destroyer01EdenInit";
    Dragged3DEN = "_this call BIS_fnc_Destroyer01PosUpdate";
    RegisteredToWorld3DEN = "_this call BIS_fnc_Destroyer01EdenInit";
    UnregisteredFromWorld3DEN = "_this call BIS_fnc_Destroyer01EdenDelete";
};
```

### Example 2

Get the parts created by the function (server only):

```sqf
private _parts = myDestroyer getVariable ["bis_carrierParts", []];
{
    _x params ["_part", "_memoryPoint"];
    systemChat format ["%1 at %2", typeOf _part, _memoryPoint];
} forEach _parts;
```

## See also

[BIS_fnc_destroyer01EdenInit](../functions/BIS_fnc_destroyer01EdenInit.md) · [BIS_fnc_destroyer01PosUpdate](../functions/BIS_fnc_destroyer01PosUpdate.md) · [BIS_fnc_destroyer01EdenDelete](../functions/BIS_fnc_destroyer01EdenDelete.md) · [BIS_fnc_destroyer01GetShipPart](../functions/BIS_fnc_destroyer01GetShipPart.md) · [BIS_fnc_carrier01Init](../functions/BIS_fnc_carrier01Init.md)

<sub>Source: [BI Community Wiki — BIS fnc destroyer01Init](https://community.bistudio.com/wiki/BIS_fnc_destroyer01Init) (revision 379556).</sub>
