2015-10-26

Hallo,

wisst ihr, ob das BF- Alarm- Script mit dem Startscript aus der Angänger Mod kompatibel ist?

Hier die Scripte:

BF- Alarm


Spoiler

/**************************************************

** Berufsfeuerwehr-Alarmierungsscript by Wingman **

** Das Alarmierungsscript ist stark vereinfacht, **

** sodass auch anfänger es verstehen sollten. **

** Regeln entnehmen sie der Readme, bei der zu **

** beachten ist das sie aktuell ist. Auch **

** mündlich oder schriftlich ausgesprochene **

** Verbote gelten. -Wingman- **

**************************************************/

const char *Startpunkt = "VOName"; // Hier der Name des Virtuellen Objektes an dem die Personen starten sollen

const char *Fahrzeugname = "Fahrzeug"; // Hier den Namen des Fahrzeuges, in dem die Personen einsteigen sollen

const char *PersonenProto1 = "modrototypes/Persons/Fire Department/firefighternorm_upgrade2.e4p"; // Hier den Pfad zu einem Prototypen von denen Personen erstellt werden soll

const char *PersonenProto2 = "modrototypes/Persons/Fire Department/firefighterabc_upgraded2.e4p"; // Hier den Pfad zu einem Prototypen von denen Personen erstellt werden soll. Falls nicht benötigt frei lassen

const char *PersonenProto3 = "modrototypes/Persons/Fire Department/firefightermask_upgraded2.e4p"; // Hier den Pfad zu einem Prototypen von denen Personen erstellt werden soll. Falls nicht benötigt frei lassen

int AnzahlProto1 = 3; // Hier die Anzahl der Personen die vonm Prototyp 1 erstellt werden soll. Wenn keine erstellt werden sollen einfach eine 0.

int AnzahlProto2 = 2; // Hier die Anzahl der Personen die vonm Prototyp 2 erstellt werden soll. Wenn keine erstellt werden sollen einfach eine 0.

int AnzahlProto3 = 1; // Hier die Anzahl der Personen die vonm Prototyp 3 erstellt werden soll. Wenn keine erstellt werden sollen einfach eine 0.

int ZurEst = 0; // Hier kannst du einstellen ob das Fahrzeug direkt zur Einsatzstelle fahren soll oder ob es vom user gesteuert wird. 0 = Direkt. 1 = User.

int SoSiAn = 0; //Hier kannst du einstellen ob das Fahrzeug ein Sondersignal einschalten soll. Hierzu wird ein zusätzliches Script benötigt. 0 = An. 1 = Aus.

const char *SoSiScript = "VCmdSiren"; // Hier muss der Name des Commandscripts vom SoSi-Script rein. Falls vorhanden.

float WarteZeit = 5.f; //Hier kannst du die Wartezeit einstellen bis die Personen erscheinen und zu den fahrzeugen laufen.

Vector EPos;

const char *SoundPfad = "mod:Audio/Alarm.wav"; // Hier den Sound der bei der Alarmierung abgespielt werden soll. Falls keiner einfach frei lassen.

int TorAuf = 1; // Hier stellen sie ein ob ein tor geöffnet werden soll. 0 = auf. 1 = Nichts.

const char *TorName = "GateFZ1"; // Hier den Namen des Tores, das geöffnet werden soll.

const char *TorAniName = "open"; // Hier den Namen der Animation von dem Tor.

object AlarmFahrzeug1 : CommandScript

{

AlarmFahrzeug1()

{

SetIcon("IconName"); // Hier den Icon Namen

SetCursor("CursorName"); // Hier den Cursorname

if (ZurEst == 0)

SetValidTargets(ACTOR_STREET || ACTOR_FLOOR);

else

SetActivationByLeftClick(true);

}

bool CheckPossible(GameObject *Caller)

{

GameObjectList gol;

gol = Game::GetGameObjects(Fahrzeugname);

GameObject *go;

go = *gol.GetObject(0);

Vehicle v(go);

if (v.HasCommand("DUMMYFPSetFreeForAlertFalse"))

return false;

return true;

}

bool CheckTarget(GameObject *Caller, Actor *Target, int ChildID)

{

return true;

}

void PushActions(GameObject *Caller, Actor *Target, int childID)

{

GameObjectList gol;

gol = Game::GetGameObjects(Fahrzeugname);

GameObject *go;

go = *gol.GetObject(0);

Vehicle v(go);

ActorList al = Game::GetActors(Startpunkt);

Actor a = *al.GetActor(0);

Vector SP = a.GetPosition();

EPos = Game::GetCommandPos();

v.AssignCommand("DUMMYFPSetFreeForAlertFalse");

v.SetMaxPassengers((AnzahlProto1 + AnzahlProto2 + AnzahlProto3));

Audio:laySample(SoundPfad);

if (TorAuf == 0)

{

GameObjectList gol = Game::GetGameObjects(TorName);

GameObject *go1;

go1 = *gol.GetObject(0);

go1->PushActionSwitchAnim(ACTION_APPEND, TorAniName);

}

for (int i = 0; i < AnzahlProto1 || i < AnzahlProto2 || i < AnzahlProto3; i++)

{

if (i < AnzahlProto1)

{

Person p = Game::CreatePerson(PersonenProto1,"Unnamed");

p.PushActionShowHide(ACTION_NEWLIST, true);

p.SetRole(ROLE_SQUAD);

p.SetUpgradeLevel(3);

p.PushActionWait(ACTION_APPEND, WarteZeit);

Game::FindFreePosition(&p, SP, 100.f);

p.SetPosition(SP);

p.PushActionShowHide(ACTION_APPEND, false);

p.PushActionMove(ACTION_APPEND, v.GetPosition());

p.PushActionEnterCar(ACTION_APPEND, &v);

p.PushActionExecuteCommand(ACTION_APPEND, "FahrenAlarmFahrzeug1", &v, 0, false);

}

if (i < AnzahlProto2)

{

Person p = Game::CreatePerson(PersonenProto2,"Unnamed");

p.PushActionShowHide(ACTION_NEWLIST, true);

p.SetRole(ROLE_SQUAD);

p.SetUpgradeLevel(3);

p.PushActionWait(ACTION_APPEND, WarteZeit);

Game::FindFreePosition(&p, SP, 100.f);

p.SetPosition(SP);

p.PushActionShowHide(ACTION_APPEND, false);

p.PushActionMove(ACTION_APPEND, v.GetPosition());

p.PushActionEnterCar(ACTION_APPEND, &v);

p.PushActionExecuteCommand(ACTION_APPEND, "FahrenAlarmFahrzeug1", &v, 0, false);

}

if (i < AnzahlProto3)

{

Person p = Game::CreatePerson(PersonenProto3,"Unnamed");

p.PushActionShowHide(ACTION_NEWLIST, true);

p.SetRole(ROLE_SQUAD);

p.SetUpgradeLevel(3);

p.PushActionWait(ACTION_APPEND, WarteZeit);

Game::FindFreePosition(&p, SP, 100.f);

p.SetPosition(SP);

p.PushActionShowHide(ACTION_APPEND, false);

p.PushActionMove(ACTION_APPEND, v.GetPosition());

p.PushActionEnterCar(ACTION_APPEND, &v);

p.PushActionExecuteCommand(ACTION_APPEND, "FahrenAlarmFahrzeug1", &v, 0, false);

}

}

}

};

object FahrenAlarmFahrzeug1 : CommandScript

{

FahrenAlarmFahrzeug1()

{

SetIcon("IconName");

SetCursor("CursorName");

}

bool CheckPossible(GameObject *Caller)

{

return true;

}

bool CheckTarget(GameObject *Caller, Actor *Target, int ChildID)

{

return true;

}

void PushActions(GameObject *Caller, Actor *Target, int childID)

{

Person p(Caller);

Vehicle v(Target);

if (v.GetNumPassengers() == (AnzahlProto1 + AnzahlProto2 + AnzahlProto3))

{

if (ZurEst == 0)

v.PushActionMove(ACTION_APPEND, EPos);

if (SoSiAn == 0)

v.PushActionExecuteCommand(ACTION_INSERT, SoSiScript, &v, 0, false);

}

}

};

SimComNet Startscript:

Spoiler

void Start()

{

System::Log("Startscript - Start");

//Anfang Fahrzeug Generation

//Anzahl der Fahrzeuge insgesamt. Um Mehrere Fahrzeuge einzusetzen, muss die 1 zu der entsprechenden Fahrzeug hochgezählt werden. Bei 20 Fahrzeugen, muss hier also 20 stehen.

const int MAX_FZ = 1;

/*

Feld für die Fahrzeugnamen gennerieren

Aufbau:

+--------------+-----------+--------------+

+ Fahrzeugname + Prototype + PersonProto. +

+--------------+-----------+--------------+

+ ELW + modro.. + modroto... +

+--------------+-----------+--------------+

+ (...) + (...) + (...) +

*/

const char * kennung[MAX_FZ][4];

//Das Feld mit den Fahrzeugnammen befüllen

//Erstes Fahrzeug

kennung[0][0]="ELW_1"; //Name des Fahrzeuges

kennung[0][1]="modrototypes/Vehicles/Fire Department/mtw_elw.e4p"; //Prototype des Fahrzeuges

kennung[0][2]="modrototypes/Persons/Fire Department/firefighternorm.e4p"; //Prototype der Insassen (alle gleich)

kennung[0][3]="ausrichtung"; // Objekt zur Ausrichtung des Fahrzeuges

//Zweites Fahrzeug. Zum Aktivieren, die // vor den nächsten drei Zeilen entfernen.

//kennung[0][0]="LF_1"; //Name des Fahrzeuges

//kennung[0][1]="modrototypes/Vehicles/Fire Department/Chi_LF16_01.e4p"; //Prototype des Fahrzeuges

//kennung[0][2]="modrototypes/Persons/Fire Department/firefighternorm.e4p"; //Prototype der Insassen (alle gleich)

/*

Feld für die Sitzplätze gennerieren

Aufbau:

+------------+------------+

+ Passagiere + Transports +

+------------+------------+

+ 2 + 0 +

+------------+------------+

+ (...) + (...) +

*/

int platz[MAX_FZ][2];

//Das Feld mit den Sitzplätzen befüllen

//Erstes Fahrzeug

platz[0][0]=2; //Einsatzkräfte

platz[0][1]=0; //Verbrechner/Verletzte (etc)

//Zweites Fahrzeug. Zum Aktivieren, die // vor den nächsten drei Zeilen entfernen.

//platz[0][0]=9; //Einsatzkräfte

//platz[0][1]=0; //Verbrechner/Verletzte (etc)

System::Log("Startscript - Ende Felder");

//Nun sind alle Daten erfast und Emergency kann angeweisen werden, die Fahrzeuge zu generieren.

//Sonstige Variablen

Vehicle vec; //Das Fahrzeug ansich

Actor fz; //Die Prakposition ansich

GameObject *ofz; //Fahrzeug als Gameobjekt

GameObjectList lfz; //Liste von Objekten

ActorList fzl; //Liste der Prakpositionen

Vector Wache; //Die Position der Prakposition

float rot[9]; //Feld für Position 1

float childRot[9]; //Feld für Position 2

//Start der ersten Schleife zur Fahrzeug generation

System::Log("Startscript - Forschleife 1");

for(int i=0; i<MAX_FZ; i++)

{

System::Log("Startscript - Forschleife 1-1");

fzl=Game::GetActors(kennung[0]); // Parkposition auslesen

if(fzl.GetNumActors() > 0) //Wenn die Parkposition vorhanden ist, weiter machen.

{

System::Log("Startscript - Prakposition");

fz = *fzl.GetActor(0); //Parkposition umwandlen

Wache=fz.GetPosition(); //Parkposition abspeichern

}

//Erzeuge das Fahrzeuges ansich

System::Log("Startscript - Fahrzeug erzeugen");

vec = Game::CreateVehicle(kennung[i][1],kennung[i][0]); //Erst Prototype, dann Fahrzeugname

vec.SetSpeed(12.0.f); //Geschwindigkeit setzen

//Platz schaffen

System::Log("Startscript - Plätze");

vec.SetMaxPassengers(platz[i][0]); //Passagieranzahl setzen

vec.SetMaxTransports(platz[i][1]); //Transportanzahl setzen

//Personen erzeugen und ins Auto setzen (von anfang an im Fahrzeug)

System::Log("Startscript - Forschleife 1-2");

for(int j=0; j<platz[i][0]; j++)

{

System::Log("Startscript - Forschleife 2-1");

Person p = Game::CreatePerson(kennung[i][2], vec.GetName()); //Person erzeugen

vec.AddPassenger(&p); //Person ins Fahrzeug setzen

}

System::Log("Startscript - Licht");

//Lichter ausschlaten

vec.EnableBlueLights(false); //Blaulicht

vec.EnableBreakLights(false); //Bremslichter

vec.EnableSpecialLights(false);//Speziallscher, z.B. Umfeld.

//Fahrzeug Drehen

System::Log("Startscript - Drehen");

GameObject mBarrel;

GameObjectList bl = Game::GetGameObjects(kennung[i][3]);

if(bl.GetNumObjects() == 0)

System::Log("?Object ausrichtung not found!");

else

mBarrel = *bl.GetObject(0);

mBarrel.GetRotation(rot[0], rot[1], rot[2], rot[3], rot[4], rot[5], rot[6], rot[7], rot[8]);

Math::EulerToMatrix(0.0.f, 0.f, 0.f, childRot); //In Eulerische Matridx umwandlen

Math::MultiplyMatrices(childRot, rot); //Die Matrix multiplizieren

//vec.SetRotation(mBarrel);

vec.SetRotation(childRot[0], childRot[1], childRot[2], childRot[3], childRot[4], childRot[5], childRot[6], childRot[7], childRot[8]); //Fahrzeug schliesslich drehen

lfz = Game::GetGameObjects(kennung[i][0]); //Fahrzeug als Objekt umwandlen

//Position setzen

System::Log("Startscript - Position");

Game::FindFreePosition(&vec, Wache); //Prüfen ob die Position Frei ist, ansonsten sucht Emergency automatisch eine freie Position in der nähe (Da Auto steht an aber ggf. falsch)

vec.SetPosition(Wache); //Position endgültig setzen.

//umwandeln und schliesslich Frontscheinwerfer ausmachen

ofz=*lfz.GetObject(0); //Fahrzeug umwandeln

ofz->EnableHeadLights(false); //Frontscheinwerfer ausschalten

System::Log("Startscript - Forschleife 1-3");

}

System::Log("Startscript - Ende");

};

bool OnLoad()

{

Start();

Process::Kill();

return true;

}

Ich habe überhaupt keine Ahnung vom Scripting, versuche aber auch es zu lernen.

Grüße

SEK- Schütze

Show more