timmiej93 Posted June 22, 2010 Report Share Posted June 22, 2010 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 Quote Link to comment Share on other sites More sharing options...
Guest Francis Posted June 22, 2010 Report Share Posted June 22, 2010 It's always possible. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted June 22, 2010 Author Report Share Posted June 22, 2010 lol XDbut ur sure that the dropoff point is possible?? Quote Link to comment Share on other sites More sharing options...
Guest Francis Posted June 22, 2010 Report Share Posted June 22, 2010 Yes it is, because it's only a matter of animation. (v.SetAnimation() required in a script and that's done. ) Quote Link to comment Share on other sites More sharing options...
Xplorer4x4 Posted June 22, 2010 Report Share Posted June 22, 2010 Francis, you always have a way of making things sounds so easy. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted June 22, 2010 Author Report Share Posted June 22, 2010 I definatly agree on that one Quote Link to comment Share on other sites More sharing options...
Guest Francis Posted June 22, 2010 Report Share Posted June 22, 2010 Sorry 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! 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. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted June 22, 2010 Author Report Share Posted June 22, 2010 allright i'll give that a try.it really doesnt sound so difficult when you say it Quote Link to comment Share on other sites More sharing options...
Guest Francis Posted June 22, 2010 Report Share Posted June 22, 2010 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. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted June 22, 2010 Author Report Share Posted June 22, 2010 how do you mean??isnt it possible to quickly change the loaded rollback to an unloaded rollback?? Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted July 2, 2010 Author Report Share Posted July 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
Guest Francis Posted July 2, 2010 Report Share Posted July 2, 2010 v.ChangePrototype("mod:Prototypes/Vehicles/......../*.e4p);If you give me the whole code that returns to station, I'll make it pretty also. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted July 3, 2010 Author Report Share Posted July 3, 2010 Ok thnx,I've got it on PasteBin...Or just the Spoiler:Btw here's a screen of the situation://******************************************************************************************// #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) { }}; Quote Link to comment Share on other sites More sharing options...
Xplorer4x4 Posted July 4, 2010 Report Share Posted July 4, 2010 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. Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted July 6, 2010 Author Report Share Posted July 6, 2010 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 Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted July 7, 2010 Author Report Share Posted July 7, 2010 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] Quote Link to comment Share on other sites More sharing options...
timmiej93 Posted July 13, 2010 Author Report Share Posted July 13, 2010 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?? Quote Link to comment Share on other sites More sharing options...