Jump to content
timmiej93

Adding a TEC station with rollback dropoff point.

Recommended Posts

Hey,

I'm trying to add a TEC station to my freeplay map.

I would like to spawn like 6 rollback trucks and 2 TEC vans there, with a return to Depot option, and:

When a rollback picked up a vehicle, i would like it to dispose of it and make it look like it does so into a building.

It doesnt have to be animated, just so that it moves its rear to the building and a few seconds later the vehicle disapears.

I dont know if it is possible to let a rollback do something like this, but it would be quite handy.

Tim

Link to comment
Share on other sites

Guest Francis

Sorry :D

Honestly, take a look at the way the battalion chief gets back to the station. You add a few lines and replace others and that's fully working. Even Xplorer4x4 would be able which means.. ANYBODY, BRAIN OR NOT! :D

Nah kidding. But take a look at the battalion's return to station, it backs up into position. Then, play the animation for the rollback, once that's done, make him go park somewhere else. A few seconds later, destroy its carried vehicle. :)

Link to comment
Share on other sites

Guest Francis

You might have to take a look at the script that drops the vehicle when you don't want it on the rollback anymore, because I don't remember how it acts script-wise to remove the car from there.

Link to comment
Share on other sites

Ok update:

I now have 3 rollbacks standing in the alley behind FS2, and they're all working fine so far.

But now i would like to have a loaded rollback (if i'm correct: rollback2.e4p) change to a unloaded rollback (rollback.e4p).

Doesn't have to be pretty,,, Yet.

Tim

Link to comment
Share on other sites

Ok thnx,

I've got it on PasteBin...

Or just the Spoiler:

Btw here's a screen of the situation:

post-5940-0-51084000-1290538236.jpg

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

// #Version 1.4#

//

// Includes: To fire station command.

//

// - VcmdToFireStation

//

// Script by Hoppah

//

// Usage of this script in other mods is NOT allowed without permission of Hoppah

//

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

const char CMD_SIREN[] = "VcmdSiren";

const char CMD_AUTOSIREN_OFF[] = "VcmdAutoSirenOff";

const char CMD_WARNINGLIGHTS[] = "VcmdWarningLightsOn";

const char DUMMY_WARNINGLIGHTS[] = "DummyHasWarningLights";

const char CMD_FLOODLIGHTS_OFF[] = "VcmdFloodLightsOff";

const char CMD_FLOODLIGHTS_ON[] = "VcmdFloodLightsOn";

const char CMD_GETTILLER[] = "VcmdGetTiller";

const char CMD_FLASHINGLIGHTS[] = "VcmdFlashingLights";

const char CMD_GOHOME[] = "GoHome";

const char CMD_TOHOSPITAL[] = "VcmdToHospital";

const char CMD_TOFIRESTATION[] = "VcmdToFireStation";

const char CMD_PATROL[] = "VcmdPatrol";

const char CMD_STANDBY_ON[] = "VcmdStandbyOn";

const char CMD_STANDBY_OFF[] = "VcmdStandbyOff";

const char CMD_GETTILLER[] = "VcmdGetTiller";

const char DUMMY_TILLERGOHOME[] = "DummyTillerGoHome";

const char DUMMY_DISABLE[] = "DummyDisableSiren";

const char DUMMY_HASSIREN[] = "DummyHasSiren";

const char DUMMY_PATROL[] = "DummyPatrol";

const char DUMMY_GATES[] = "DummyGates";

const char DUMMY_FIRESTATION[] = "DummyAtFireStation";

const char DUMMY_CHECKPARKED[] = "DummyCheckParked";

const char DUMMY_ISTRAILED[] = "DummyIsTrailed";

const char DUMMY_VCALLED[] = "DummyVehicleCalled";

const char DUMMY_HOSESON[] = "DummyHosesAreOn";

const char DUMMY_TILLER[] = "DummyTiller";

const char OBJ_BATTALION[] = "mod:Prototypes/Vehicles/02 LA Fire Department/battalion_chief_vehicle.e4p";

const char OBJ_ENGINE01[] = "mod:Prototypes/Vehicles/02 LA Fire Department/fire_engine1.e4p";

const char OBJ_ENGINE02[] = "mod:Prototypes/Vehicles/02 LA Fire Department/fire_engine2.e4p";

const char OBJ_USAR[] = "mod:Prototypes/Vehicles/02 LA Fire Department/usar_squad.e4p";

const char OBJ_LADDER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/aerial_ladder.e4p";

const char OBJ_TILLER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/tiller_cabin.e4p";

const char OBJ_BATTALION[] = "mod:Prototypes/Vehicles/02 LA Fire Department/battalion_chief_vehicle.e4p";

const char OBJ_TENDER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/water_tender.e4p";

const char OBJ_AMBULANCE01[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance01.e4p";

const char OBJ_AMBULANCE02[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance02.e4p";

const char OBJ_AMBULANCE03[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance03.e4p";

const char OBJ_AMBULANCE04[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance04.e4p";

const char OBJ_ROLLBACK[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p";

const char OBJ_LOADED_ROLLBACK[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback2.e4p";

const char VO_SPAWN01[] = "fs_spawn01";

const char VO_SPAWN02[] = "fs_spawn02";

const char VO_SPAWN03[] = "fs_spawn03";

const char VO_FP1[] = "fs_gate01";

const char VO_FP2[] = "fs_gate02";

const char VO_FP3[] = "fs_gate03";

const char VO_FP4[] = "fs_gate04";

const char VO_FP5[] = "fs_gate05";

const char VO_FP6[] = "fs_gate06";

const char VO_FP7[] = "fs_gate07";

const char VO_FP8[] = "fs_gate08";

const char VO_FP9[] = "fs_gate09";

const char VO_TURNTO1[] = "fs_vogate01a";

const char VO_TURNTO2[] = "fs_vogate02a";

const char VO_TURNTO3[] = "fs_vogate03a";

const char VO_TURNTO4[] = "fs_vogate04a";

const char VO_TURNTO5[] = "fs_vogate05a";

const char VO_TURNTO6[] = "fs_vogate06a";

const char VO_TURNTO7[] = "fs_vogate07a";

const char VO_TURNTO8[] = "fs_vogate08a";

const char VO_TURNTO9[] = "fs_vogate09a";

const char VO_AMBULANCE01[] = "fs_ambulance01";

const char VO_AMBULANCE02[] = "fs_ambulance02";

const char VO_AMBULANCE03[] = "fs_ambulance03";

const char VO_AMBULANCE04[] = "fs_ambulance04";

const char VO_ENGINE01[] = "fs_engine01";

const char VO_ENGINE02[] = "fs_engine02";

const char VO_ENGINE03[] = "fs_engine03";

const char VO_ENGINE04[] = "fs_engine04";

const char VO_ENGINE05[] = "fs_engine05";

const char VO_BATTALION[] = "fs_battalion";

const char VO_BATTALION2[] = "fs_battalion2";

const char VO_USAR[] = "fs_usar";

const char VO_LADDER[] = "fs_ladder";

const char VO_HAZMAT[] = "fs_hazmat";

const char VO_SQUAD01[] = "fs_squad01";

const char VO_SQUAD02[] = "fs_squad02";

const char VO_ROLLBACK01[] = "fs_rollback01";

const char VO_ROLLBACK02[] = "fs_rollback02";

const char VO_ROLLBACK03[] = "fs_rollback03";

const char SND_TOSTATION[] = "mod:Audio/FX/radio/1019.wav";

const char HINT_NOTVALID[] = "This vehicle doesn't belong in the fire station!";

const char HINT_NOSPACE[] = "No space at the fire station, vehicle returns to base!";

const char HINT_NOSPACE_AMBULANCE[] = "No space at the fire station, vehicle starts a patrol!";

const char HINT_TRANSPORTS[] = "The ambulance has transports, it will go to the hospital first!";

const char NAME_CONTROLPANEL[] = "fire_station_controlpanel";

const char NAME_CONTROLPANEL2[] = "fire_station_controlpanel2";

int DummyGroup = 32;

object VcmdToFireStation : CommandScript

{

VcmdToFireStation()

{

SetCursor("tofirestation");

SetIcon("tofirestation");

SetGroupID(DummyGroup);

SetGroupLeader(true);

SetRestrictions(RESTRICT_SELFEXECUTE);

}

bool CheckPossible(GameObject *Caller)

{

if (!Caller->IsValid())

return false;

if (!Game::IsFreeplay())

return false;

Vehicle v(Caller);

if (v.IsCollidingWithVirtualObject(VO_SQUAD01) || v.IsCollidingWithVirtualObject(VO_SQUAD02) || v.IsCollidingWithVirtualObject(VO_BATTALION) || (v.HasCommand(DUMMY_ISTRAILED) && !v.HasCommand(CMD_GETTILLER)) || v.HasCommand(DUMMY_HOSESON) || v.IsInstalled())

return false;

if (!v.HasCommand("MoveTo"))

return false;

if (v.HasCommand(CMD_FLOODLIGHTS_OFF) && (StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0))

return false;

return true;

}

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

{

if (!Caller->IsValid() || !Target->IsValid() || (Caller->GetID() != Target->GetID()))

return false;

return true;

}

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

{

Vector Pos = Caller->GetPosition();

Vehicle v(Caller);

if (v.GetVehicleType() == VT_AMBULANCE_RTW && v.GetNumTransported() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOHOSPITAL, Caller, 0, false);

Mission::PlayHint(HINT_TRANSPORTS);

return;

}

if (v.IsBlueLightEnabled())

Game::ExecuteCommand(CMD_FLASHINGLIGHTS, &v, &v);

if (v.HasCommand(DUMMY_TILLERGOHOME))

v.RemoveCommand(DUMMY_TILLERGOHOME);

if (v.HasCommand(CMD_STANDBY_OFF))

{

v.RemoveCommand(CMD_STANDBY_OFF);

v.AssignCommand(CMD_STANDBY_ON);

}

if (v.HasCommand(DUMMY_WARNINGLIGHTS))

{

v.EnableBlinker(BLT_NONE);

v.RemoveCommand(DUMMY_WARNINGLIGHTS);

v.AssignCommand(CMD_WARNINGLIGHTS);

}

if (v.HasCommand(CMD_FLOODLIGHTS_OFF))

{

v.EnableSpecialLights(false);

v.RemoveCommand(CMD_FLOODLIGHTS_OFF);

v.AssignCommand(CMD_FLOODLIGHTS_ON);

}

if (v.HasObjectPath(NULL))

Game::ExecuteCommand(DUMMY_PATROL, &v, &v);

if (v.HasCommand(DUMMY_HASSIREN) && v.HasCommand(CMD_AUTOSIREN_OFF))

Game::ExecuteCommand(DUMMY_DISABLE, &v, &v);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_BATTALION, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_BATTALION2);

ActorList l2 = Game::GetActors(VO_BATTALION);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_USAR, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP2);

ActorList l2 = Game::GetActors(VO_TURNTO2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_LADDER, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

Game::ExecuteCommand(CMD_GOHOME, &v, &v);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP3);

ActorList l2 = Game::GetActors(VO_TURNTO3);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TENDER) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_HAZMAT, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP6);

ActorList l2 = Game::GetActors(VO_TURNTO6);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ROLLBACK) == 0)

{

bool Possible = false;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK01, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK02, l5, ACTOR_VEHICLE);

if(l5.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK03, l6, ACTOR_VEHICLE);

if(l6.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP9);

ActorList l2 = Game::GetActors(VO_TURNTO9);

} else

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE02) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE03) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE04) == 0)

{

bool Possible = false;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE01, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l5, ACTOR_VEHICLE);

if(l5.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l6, ACTOR_VEHICLE);

if(l6.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP1);

ActorList l2 = Game::GetActors(VO_TURNTO1);

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE01) == 0)

{

bool Possible = false;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP8);

ActorList l2 = Game::GetActors(VO_TURNTO8);

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE01) == 0)

{

GameObjectList cpl1 = Game::GetGameObjects(NAME_CONTROLPANEL);

if(cpl1.GetNumObjects() > 0)

GameObject cp1 = cpl1.GetObject(0);

GameObjectList cpl2 = Game::GetGameObjects(NAME_CONTROLPANEL2);

if(cpl2.GetNumObjects() > 0)

GameObject cp2 = cpl2.GetObject(0);

bool FS1Closer = false;

bool FS2Closer = false;

if (Math::dist(Pos.x, Pos.y, cp1.GetPosition().x, cp1.GetPosition().y) > Math::dist(Pos.x, Pos.y, cp2.GetPosition().x, cp2.GetPosition().y))

FS2Closer = true;

else

FS1Closer = true;

bool FS1Possible = false;

bool FS2Possible = false;

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE01, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() == 0 && !FS1Possible)

FS1Possible = true;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !FS1Possible)

FS1Possible = true;

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE05, l5, ACTOR_VEHICLE);

if(l5.GetNumObjects() == 0 && !FS2Possible)

FS2Possible = true;

if (!FS1Possible && !FS2Possible)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

}

else if ((FS1Closer && FS1Possible) || (FS2Closer && !FS2Possible))

{

ActorList l1 = Game::GetActors(VO_FP4);

ActorList l2 = Game::GetActors(VO_TURNTO4);

}

else if ((FS2Closer && FS2Possible) || (FS1Closer && !FS1Possible))

{

ActorList l1 = Game::GetActors(VO_FP7);

ActorList l2 = Game::GetActors(VO_TURNTO7);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE02) == 0)

{

bool Possible = false;

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE02, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP5);

ActorList l2 = Game::GetActors(VO_TURNTO5);

} else

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

}

} else

{

Mission::PlayHint(HINT_NOTVALID);

return;

}

if(l1.GetNumActors() > 0)

Vector FirstPoint = l1.GetActor(0)->GetPosition();

if(l2.GetNumActors() > 0)

Vector TurnTo = l2.GetActor(0)->GetPosition();

Audio::PlaySample3D(SND_TOSTATION, Caller->GetPosition());

v.PushActionmove(ACTION_NEWLIST, FirstPoint);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

if (StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_TILLER, Caller, 3, false);

v.PushActionWait(ACTION_APPEND, 1.0f);

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CHECKPARKED, Caller, 0, false);

}

};

object DummyCheckParked : CommandScript

{

DummyCheckParked()

{

SetGroupID(DummyGroup);

}

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

{

}

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

{

bool ParkinglotFound = false;

Vector Pos = Caller->GetPosition();

GameObjectList cpl1 = Game::GetGameObjects(NAME_CONTROLPANEL);

if(cpl1.GetNumObjects() > 0)

GameObject cp1 = cpl1.GetObject(0);

GameObjectList cpl2 = Game::GetGameObjects(NAME_CONTROLPANEL2);

if(cpl2.GetNumObjects() > 0)

GameObject cp2 = cpl2.GetObject(0);

bool FS1Closer = false;

bool FS2Closer = false;

if (Math::dist(Pos.x, Pos.y, cp1.GetPosition().x, cp1.GetPosition().y) > Math::dist(Pos.x, Pos.y, cp2.GetPosition().x, cp2.GetPosition().y))

FS2Closer = true;

else

FS1Closer = true;

Vehicle v(Caller);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_BATTALION, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_BATTALION);

ActorList l2 = Game::GetActors(VO_BATTALION2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE02) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE03) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE04) == 0)

{

ActorList l2 = Game::GetActors(VO_TURNTO1);

if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE01);

}

else if (Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

}

else if (Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE03);

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE03);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

ActorList l4 = Game::GetActors(VO_AMBULANCE02);

if(l4.GetNumActors() > 0)

Vector Forward2 = l4.GetActor(0)->GetPosition();

float rot[9];

float childRot[9];

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l5, ACTOR_VEHICLE);

for (int i = 0; i < l5.GetNumObjects(); i++)

{

Vehicle m = l5.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l6, ACTOR_VEHICLE);

for (int i = 0; i < l6.GetNumObjects(); i++)

{

Vehicle c = l6.GetObject(i);

c.PushActionWait(ACTION_NEWLIST, 0.7f);

c.PushActionmove(ACTION_APPEND, Forward2);

}

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

/*

else if(strCompare(v.GetPrototypeFileName(), OBJ_LOADED_ROLLBACK == 0)

{

}

*/

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ROLLBACK) == 0)

{

ActorList l2 = Game::GetActors(VO_TURNTO1);

if (!Game::IsSquadInVirtualObject(VO_ROLLBACK01) && !Game::IsSquadInVirtualObject(VO_ROLLBACK02) && !Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK01);

}

else if (Game::IsSquadInVirtualObject(VO_ROLLBACK01) && !Game::IsSquadInVirtualObject(VO_ROLLBACK02) && !Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK02);

}

else if (Game::IsSquadInVirtualObject(VO_ROLLBACK01) && Game::IsSquadInVirtualObject(VO_ROLLBACK02) && !Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK03);

}

else if (!Game::IsSquadInVirtualObject(VO_ROLLBACK01) && Game::IsSquadInVirtualObject(VO_ROLLBACK02) && !Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK02);

ActorList l3 = Game::GetActors(VO_ROLLBACK01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK02, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_ROLLBACK01) && !Game::IsSquadInVirtualObject(VO_ROLLBACK02) && Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK02);

ActorList l3 = Game::GetActors(VO_ROLLBACK01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK03, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_ROLLBACK01) && Game::IsSquadInVirtualObject(VO_ROLLBACK02) && Game::IsSquadInVirtualObject(VO_ROLLBACK03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ROLLBACK03);

ActorList l3 = Game::GetActors(VO_ROLLBACK01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

ActorList l4 = Game::GetActors(VO_ROLLBACK02);

if(l4.GetNumActors() > 0)

Vector Forward2 = l4.GetActor(0)->GetPosition();

float rot[9];

float childRot[9];

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK02, l5, ACTOR_VEHICLE);

for (int i = 0; i < l5.GetNumObjects(); i++)

{

Vehicle m = l5.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_ROLLBACK03, l6, ACTOR_VEHICLE);

for (int i = 0; i < l6.GetNumObjects(); i++)

{

Vehicle c = l6.GetObject(i);

c.PushActionWait(ACTION_NEWLIST, 0.7f);

c.PushActionmove(ACTION_APPEND, Forward2);

}

} else

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE01) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE04, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE04);

ActorList l2 = Game::GetActors(VO_TURNTO8);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_USAR, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_USAR);

ActorList l2 = Game::GetActors(VO_TURNTO2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_LADDER, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

Game::ExecuteCommand(CMD_GOHOME, &v, &v);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_LADDER);

ActorList l2 = Game::GetActors(VO_TURNTO3);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TENDER) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_HAZMAT, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_HAZMAT);

ActorList l2 = Game::GetActors(VO_TURNTO6);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE01) == 0)

{

if(FS1Closer)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE01, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE03);

ActorList l2 = Game::GetActors(VO_TURNTO4);

}

} else

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

ActorList l1 = Game::GetActors(VO_ENGINE03);

ActorList l5 = Game::GetActors(VO_ENGINE01);

Vector Move = l5.GetActor(0)->GetPosition();

l4.GetObject(0)->PushActionmove(ACTION_NEWLIST, Move, true);

} else

ActorList l1 = Game::GetActors(VO_ENGINE01);

ActorList l2 = Game::GetActors(VO_TURNTO4);

ParkinglotFound = true;

}

}

else if(FS2Closer)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE05, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE05);

ActorList l2 = Game::GetActors(VO_TURNTO7);

}

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE02) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE02, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE04);

ActorList l2 = Game::GetActors(VO_TURNTO5);

}

} else

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

ActorList l1 = Game::GetActors(VO_ENGINE04);

ActorList l5 = Game::GetActors(VO_ENGINE02);

Vector Move = l5.GetActor(0)->GetPosition();

l4.GetObject(0)->PushActionmove(ACTION_NEWLIST, Move, true);

} else

ActorList l1 = Game::GetActors(VO_ENGINE02);

ActorList l2 = Game::GetActors(VO_TURNTO5);

ParkinglotFound = true;

}

}

if(ParkinglotFound)

{

if(l1.GetNumActors() > 0)

{

if (StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

Vector Park = l1.GetActor(0)->GetPosition();

float dx = 125.f, dy = 0.f, dz = 0.f;

float r[9];

float childr[9];

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

Math::RotateVector(dx, dy, dz, r);

Math::EulerToMatrix(0.0f, 0.f, 0.f, childr);

Math::MultiplyMatrices(childr, r);

Park = Park + Vector(dx, dy, 0);

} else

Vector Park = l1.GetActor(0)->GetPosition();

}

if(l2.GetNumActors() > 0)

Vector TurnTo = l2.GetActor(0)->GetPosition();

if (v.HasCommand(DUMMY_VCALLED))

v.RemoveCommand(DUMMY_VCALLED);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

v.PushActionmove(ACTION_APPEND, Park);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

} else

{

if(FS1Closer)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 7, false);

else

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 8, false);

v.PushActionWait(ACTION_APPEND, 1.8f);

v.PushActionmove(ACTION_APPEND, Park);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

v.PushActionWait(ACTION_APPEND, 0.5f);

PersonList passengers = v.GetPassengers();

if (passengers.GetNumPersons() > 0 && (FS1Closer && cp1.HasCommand("VcmdAutoStaffOff")) || (FS2Closer && cp2.HasCommand("VcmdAutoStaffOff")))

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_FIRESTATION, Caller, 0, false);

v.PushActionWait(ACTION_APPEND, 2.2f);

if(FS1Closer)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 9, false);

else

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 10, false);

if (v.HasCommand(DUMMY_WARNINGLIGHTS))

{

v.EnableBlinker(BLT_NONE);

v.RemoveCommand(DUMMY_WARNINGLIGHTS);

v.AssignCommand(CMD_WARNINGLIGHTS);

} else

v.EnableBlinker(BLT_NONE);

}

}

}

};

object DummyAtFireStation : CommandScript

{

DummyAtFireStation()

{

SetGroupID(DummyGroup);

}

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

{

}

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

{

Vehicle v(Caller);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

ActorList l1 = Game::GetActors(VO_SPAWN02);

else if(v.IsCollidingWithVirtualObject(VO_SQUAD01))

ActorList l1 = Game::GetActors(VO_SPAWN01);

else if(v.IsCollidingWithVirtualObject(VO_SQUAD02))

ActorList l1 = Game::GetActors(VO_SPAWN03);

else

return;

if(l1.GetNumActors() > 0)

Vector Delete = l1.GetActor(0)->GetPosition();

PersonList passengers = v.GetPassengers();

if (passengers.GetNumPersons() > 0)

{

for(int i=0; i<passengers.GetNumPersons(); i++)

{

Person *p = passengers.GetPerson(i);

p->PushActionLeaveCar(ACTION_NEWLIST, Caller);

p->PushActionmove(ACTION_APPEND, Delete);

p->PushActionDeleteOwner(ACTION_APPEND);

}

}

}

};

object DummyEngine : CommandScript

{

DummyEngine()

{

SetGroupID(DummyGroup);

}

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

{

}

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

{

}

};

Link to comment
Share on other sites

Maybe try looking at the change clothes scripts and alter it and throw in something like:

if (v.IsCollidingWithVirtualObject(VO_SQUAD01) && (v.GetVehicleType() == VT_FIREFIGHTERS_ASF))

{

insert changes clothes scripts parts here for changing one prototype to another

}

Just a thought, no promises.

Link to comment
Share on other sites

Maybe try looking at the change clothes scripts and alter it and throw in something like:

if (v.IsCollidingWithVirtualObject(VO_SQUAD01) && (v.GetVehicleType() == VT_FIREFIGHTERS_ASF))

{

insert changes clothes scripts parts here for changing one prototype to another

}

Just a thought, no promises.

Pff.. Doesn't work :(

Is there a script that loads the truck??

I'll have a look at that one and see if that helps :D

Link to comment
Share on other sites

Ok update:

I tried a butload of things too make this thing work, but it still doens't.

i tried this:

if(v.IsCollidingWithVirtualObject(VO_SQUAD02)) && (StrCompare(v.GetPrototypeFileName(), OJB_ROLLBACK) == 0)

{

v.ChangePrototype("mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p");

}

and this:

if(v.IsCollidingWithVirtualObject(VO_SQUAD02)) && (StrCompare(v.GetPrototypeFileName(), OJB_ROLLBACK2) == 0)

{

v.ChangePrototype("mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p");

}

With Rollback2 being the rollback2.e4p prototype.

(if you look at the big.dds picture of rollback2 you see a loaded rollback)

I don't know if the loadup.script script works for the rollback too, but i've been looking through that and i didn't find change to rollback2.e4p or something like that anywhere.

I don't know how this works with loadup and dropoff, but it would be great if it could be decoded.

Ps sorry for the people who get a double mail here, but i just wanna make sure that everyone knows.

Pps. I know about the

 bb code, but it gave me trouble here so i couldnt use it.[/font][/color]

[color=#383838][font=verdana, tahoma, arial, sans-serif]Pppps. Yes, the trucks are in the VO_SQUAD01[/font][/color]

Link to comment
Share on other sites

You might have to take a look at the script that drops the vehicle when you don't want it on the rollback anymore, because I don't remember how it acts script-wise to remove the car from there.

Ok thats an idea, but which script unloads the trucks??

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...