Jump to content

AlanReeder

Members
  • Posts

    53
  • Joined

  • Last visited

Everything posted by AlanReeder

  1. I am using la mod 2.0 start at station script: const char NAME_FIRESTATION[] = "fire_station"; const char NAME_FIRESTATION_ROOF[] = "fire_station_roof"; const char NAME_FIRESTATION2[] = "fire_station2"; const char NAME_FIRESTATION2_ROOF[] = "fire_station2_roof"; const char NAME_CONTROLPANEL[] = "fire_station_controlpanel"; const char NAME_CONTROLPANEL2[] = "fire_station_controlpanel2"; 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_BATTALION[] = "mod:Prototypes/Vehicles/02 LA Fire Department/battalion_chief_vehicle.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_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_OBJ_LADDER2[] = "mod:Prototypes/Vehicles/02 LA Fire Department/aerial_ladder2.e4p"; const char DUMMY_GATES[] = "DummyGates"; const char DUMMY_ALARM[] = "DummyDisableAlarm"; const char DUMMY_CALLCREW[] = "DummyCallCrew"; const char VO_BATTALION[] = "fs_battalion"; 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_USAR[] = "fs_usar"; const char VO_LADDER[] = "fs_ladder"; 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_HAZMAT[] = "fs_hazmat"; const char NAME_GATE01A[] = "fs_gate01a"; const char NAME_GATE02A[] = "fs_gate02a"; const char NAME_GATE03A[] = "fs_gate03a"; const char NAME_GATE04A[] = "fs_gate04a"; const char NAME_GATE05A[] = "fs_gate05a"; const char NAME_GATE06A[] = "fs_gate06a"; const char NAME_GATE07A[] = "fs_gate07a"; const char NAME_GATE08A[] = "fs_gate08a"; const char SND_ALARM[] = "mod:Audio/FX/Misc/fire_alarm.wav"; const char UNNAMED[] = "Unnamed"; object VcmdStart : CommandScript { VcmdStart() { } bool CheckPossible(GameObject *Caller) { return true; } bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { return true; } void PushActions(GameObject *Caller, Actor *Target, int ChildID) { VehicleList list3("Unnamed"); for(int i=0; i < list3.GetNumVehicles(); i++) { Vehicle *c = list3.GetVehicle(i); c->SetSmokeLevelDuration(25.f); } GameObjectList l1 = Game::GetGameObjects(NAME_FIRESTATION); for(int i=0; i < l1.GetNumObjects(); i++) { GameObject *obj = l1.GetObject(i); if (!obj->IsSpecialLightEnabled()) { obj->EnableSpecialLights(true); Vector AlarmSnd = obj->GetPosition(); int soundID = Audio::PlaySample3D(SND_ALARM, AlarmSnd, true); obj->SetUserData(soundID); obj->AttachSound(soundID); } } GameObjectList l2 = Game::GetGameObjects(NAME_FIRESTATION2); for(int i=0; i < l2.GetNumObjects(); i++) { GameObject *obj = l2.GetObject(i); if (!obj->IsSpecialLightEnabled()) { obj->EnableSpecialLights(true); Vector AlarmSnd = obj->GetPosition(); int soundID = Audio::PlaySample3D(SND_ALARM, AlarmSnd, true); obj->SetUserData(soundID); obj->AttachSound(soundID); } } GameObjectList l3 = Game::GetGameObjects(NAME_CONTROLPANEL); for(int i=0; i < l3.GetNumObjects(); i++) { GameObject *obj = l3.GetObject(i); obj->AssignCommand("VcmdAutoStaffOff"); obj->AssignCommand(DUMMY_ALARM); obj->PushActionWait(ACTION_NEWLIST, 1.5f); obj->PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 1, false); obj->PushActionWait(ACTION_APPEND, 16.0f); obj->PushActionExecuteCommand(ACTION_APPEND, DUMMY_ALARM, Caller, 1, false); } GameObjectList l4 = Game::GetGameObjects(NAME_CONTROLPANEL2); for(int i=0; i < l4.GetNumObjects(); i++) { GameObject *obj = l4.GetObject(i); obj->AssignCommand("VcmdAutoStaffOff"); obj->AssignCommand(DUMMY_ALARM); obj->PushActionWait(ACTION_NEWLIST, 1.5f); obj->PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 3, false); obj->PushActionWait(ACTION_APPEND, 16.0f); obj->PushActionExecuteCommand(ACTION_APPEND, DUMMY_ALARM, Caller, 1, false); } GameObjectList l5 = Game::GetGameObjects(NAME_FIRESTATION_ROOF); for(int i=0; i < l5.GetNumObjects(); i++) { GameObject *obj = l5.GetObject(i); if(obj->GetUserData() == 0) { obj->Hide(); obj->SetUserData(1); } } GameObjectList l51 = Game::GetGameObjects(NAME_FIRESTATION2_ROOF); for(int i=0; i < l51.GetNumObjects(); i++) { GameObject *obj = l51.GetObject(i); if(obj->GetUserData() == 0) { obj->Hide(); obj->SetUserData(1); } } GameObjectList gate01a = Game::GetGameObjects(NAME_GATE01A); for(int i=0; i < gate01a.GetNumObjects(); i++) GameObject *gate1 = gate01a.GetObject(i); GameObjectList gate02a = Game::GetGameObjects(NAME_GATE02A); for(int i=0; i < gate02a.GetNumObjects(); i++) GameObject *gate2 = gate02a.GetObject(i); GameObjectList gate03a = Game::GetGameObjects(NAME_GATE03A); for(int i=0; i < gate03a.GetNumObjects(); i++) GameObject *gate3 = gate03a.GetObject(i); GameObjectList gate04a = Game::GetGameObjects(NAME_GATE04A); for(int i=0; i < gate04a.GetNumObjects(); i++) GameObject *gate4 = gate04a.GetObject(i); GameObjectList gate05a = Game::GetGameObjects(NAME_GATE05A); for(int i=0; i < gate05a.GetNumObjects(); i++) GameObject *gate5 = gate05a.GetObject(i); GameObjectList gate06a = Game::GetGameObjects(NAME_GATE06A); for(int i=0; i < gate06a.GetNumObjects(); i++) GameObject *gate6 = gate06a.GetObject(i); GameObjectList gate07a = Game::GetGameObjects(NAME_GATE07A); for(int i=0; i < gate07a.GetNumObjects(); i++) GameObject *gate7 = gate07a.GetObject(i); GameObjectList gate08a = Game::GetGameObjects(NAME_GATE08A); for(int i=0; i < gate08a.GetNumObjects(); i++) GameObject *gate8 = gate08a.GetObject(i); ActorList l6 = Game::GetActors(VO_BATTALION); for(int i=0; i < l6.GetNumActors(); i++) { Vector Battalion = l6.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_BATTALION, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Battalion); m.UpdatePlacement(); m.SetMaxPassengers(2); m.SetSpeed(12.0f); m.PushActionExecuteCommand(ACTION_NEWLIST, DUMMY_CALLCREW, Caller, 4, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l7 = Game::GetActors(VO_AMBULANCE01); for(int i=0; i < l7.GetNumActors(); i++) { Vector Ambulance01 = l7.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_AMBULANCE02, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Ambulance01); m.SetRotation(gate1); m.UpdatePlacement(); m.SetMaxPassengers(2); m.SetMaxTransports(1); m.SetSpeed(12.0f); m.PushActionExecuteCommand(ACTION_NEWLIST, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 2, false); } ActorList l8 = Game::GetActors(VO_AMBULANCE02); for(int i=0; i < l8.GetNumActors(); i++) { Vector Ambulance02 = l8.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_AMBULANCE02, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Ambulance02); m.SetRotation(gate1); m.UpdatePlacement(); m.SetMaxPassengers(2); m.SetMaxTransports(1); m.SetSpeed(12.0f); m.PushActionWait(ACTION_NEWLIST, 1.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 2, false); } ActorList l9 = Game::GetActors(VO_LADDER); for(int i=0; i < l9.GetNumActors(); i++) { Vector Ladder = l9.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_LADDER, UNNAMED); //NOTE: Change OBJ_LADDER to OBJ_TILLER to replace the tower with the tiller m.EnableBlueLights(false); m.SetPosition(Ladder); m.SetRotation(gate3); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 1.4f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l10 = Game::GetActors(VO_ENGINE01); for(int i=0; i < l10.GetNumActors(); i++) { Vector Engine01 = l10.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_ENGINE01, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Engine01); m.SetRotation(gate4); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 3.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 1.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l11 = Game::GetActors(VO_ENGINE02); for(int i=0; i < l11.GetNumActors(); i++) { Vector Engine02 = l11.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_ENGINE02, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Engine02); m.SetRotation(gate5); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 3.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 1.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l12 = Game::GetActors(VO_USAR); for(int i=0; i < l12.GetNumActors(); i++) { Vector Usar = l12.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_USAR, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Usar); m.SetRotation(gate2); m.UpdatePlacement(); m.SetMaxPassengers(4); m.SetSpeed(9.0f); m.PushActionExecuteCommand(ACTION_NEWLIST, DUMMY_CALLCREW, Caller, 6, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 6, false); } ActorList l13 = Game::GetActors(VO_AMBULANCE04); for(int i=0; i < l13.GetNumActors(); i++) { Vector Ambulance04 = l13.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_AMBULANCE01, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Ambulance04); m.SetRotation(gate8); m.UpdatePlacement(); m.SetMaxPassengers(2); m.SetMaxTransports(1); m.SetSpeed(12.0f); m.PushActionWait(ACTION_NEWLIST, 4.5f); //m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); //m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 7, false); } ActorList l14 = Game::GetActors(VO_ENGINE05); for(int i=0; i < l14.GetNumActors(); i++) { Vector Engine04 = l14.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_ENGINE01, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Engine04); m.SetRotation(gate7); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 4.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 1.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 1.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 1.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l15 = Game::GetActors(VO_HAZMAT); for(int i=0; i < l15.GetNumActors(); i++) { Vector LADDER2 = l15.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_LADDER2, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Ladder2); m.SetRotation(gate6); m.UpdatePlacement(); m.SetMaxPassengers(4); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 1.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 10, false); m.PushActionWait(ACTION_APPEND, 3.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 11, false); } ActorList l16 = Game::GetActors(VO_ENGINE03); for(int i=0; i < l16.GetNumActors(); i++) { Vector Engine03 = l16.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_ENGINE01, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Engine03); m.SetRotation(gate4); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 3.0f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 1.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l17 = Game::GetActors(VO_ENGINE04); for(int i=0; i < l17.GetNumActors(); i++) { Vector Engine04 = l17.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_ENGINE02, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Engine04); m.SetRotation(gate5); m.UpdatePlacement(); m.SetMaxPassengers(6); m.SetSpeed(9.0f); m.PushActionWait(ACTION_NEWLIST, 3.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); m.PushActionWait(ACTION_APPEND, 1.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 3, false); } ActorList l18 = Game::GetActors(VO_AMBULANCE03); for(int i=0; i < l18.GetNumActors(); i++) { Vector Ambulance03 = l18.GetActor(0)->GetPosition(); Vehicle m = Game::CreateVehicle(OBJ_AMBULANCE02, UNNAMED); m.EnableBlueLights(false); m.SetPosition(Ambulance03); m.SetRotation(gate1); m.UpdatePlacement(); m.SetMaxPassengers(2); m.SetMaxTransports(1); m.SetSpeed(12.0f); m.PushActionExecuteCommand(ACTION_NEWLIST, DUMMY_CALLCREW, Caller, 1, false); m.PushActionWait(ACTION_APPEND, 0.5f); m.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CALLCREW, Caller, 2, false); } System::Log("Fire stations activated!"); } }; [color="#FFFF00"]To station Script: [/color] 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_OBJ_LADDER2[] = "mod:Prototypes/Vehicles/02 LA Fire Department/aerial_ladder2.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 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_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_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 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_HAZMATSQUAD) == 0 || 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_LADDER) == 0 || 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_LADDER2) == 0) { GameObjectList l4; Game::CollectObstaclesOnVirtualObject(VO_LADDER2, 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_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_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_LADDER) == 0 || 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_LADDER2) == 0) { GameObjectList l3; Game::CollectObstaclesOnVirtualObject(VO_LADDER2, l3, ACTOR_VEHICLE); if(l3.GetNumObjects() > 0) { Mission::PlayHint(HINT_NOSPACE); v.PushActionReturnToBase(ACTION_NEWLIST); return; } else { ParkinglotFound = true; ActorList l1 = Game::GetActors(VO_LADDER2); 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) { } };
  2. I am still having problems with the start at station and to station script.
  3. Thank you so much for the help.
  4. thank you both i will try both.
  5. Trying to put the tower at both stations. Almost got it. Can anyone help please. Here is the script } else if(StrCompare(v.GetPrototypeFileName(), OBJ_LADDER) == 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 l4; Game::CollectObstaclesOnVirtualObject(VO_LADDER, l4, ACTOR_VEHICLE); 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); }
  6. How do I add some new vehicle to LA Mod 2.0. I want to add the Glendale vehicles and keep the original ones. If anyone could help that would be great.
×
×
  • Create New...