Jump to content

Ghost Graphic Designs

European Modding
  • Posts

    888
  • Joined

  • Days Won

    4

Everything posted by Ghost Graphic Designs

  1. Actually I was at our anniversary, at the station. I'm uploading the mod at the moment. 802MB unzipped, seems good?
  2. Thanks guys... As promised: Emergency 5 soundtrack and personnel voices are included.
  3. Like Copenhagen, for example! I'll release a gameplay video soon.
  4. Precisely 2 years later, we're back! Welcome to the official RSB Simulator/Modification topic! This modification is a serious project which aims to recreate the emergency services infrastructure of Lisbon, the capital city of Portugal. The project is focused in Lisbonenses Volunteer Fire Department and Lisbon's Regiment Fire Brigade (professional F.D.), but you also have other services at your disposal (National EMS Institute, Police Department and some other Volunteer Fire Depts. from Lisbon). The mechanics are pretty different than what this community is used to, since I incorporated both several dispatchers (one for each service) and the modified limited water supply script, you can expect a challenging gameplay. The events on this modification are strictly EMS and FD; Police will control the traffic and bystanders. Units at your disposal: Lisbon's Regiment Fire Brigade on-map fire station: A medium-size fire station which houses the essencial to keep your operational area safe. 2 Ambulances, 2 Fire Engines, 1 Light Pumper, 1 Tanker, 1 Ladder, 1 Logistics Unit and 1 USAR Vehicle. Lisbon's Regiment Fire Brigade off-map fire station: This station houses some special vehicles that can be useful in large-scale emergencies. 1 Light-Pumper, 1 Engine (the newer MB Atego has firefighters that can change into HAZMAT suits), 1 Fire Engine, 1 Ladder, 1 HAZMAT Unit (which can deploy a tent), 1 Wildland Engine and 1 Brush Unit. Lisbonenses Volunteer FD: This is the Volunteer FD which I belong to. It's quickly growing since the new commander took over, none of the Volunteer FDs have support from the city hall, so all of the money that we get to buy new equipment comes from our hard work, some organized events and by some people who make some great donations. Only in 2014, we got 2 new Ambulances, 1 Personnel Carrier, 1 Wildland Engine, a Logistics trailer and he's planning on buying what seems to be the first Aerial Ladder in Lisbon that's owned by a Volunteer FD. This house has lots of vehicles, but you'll only be able to dispatch the 6 Ambulances, 1 Fire Engine, 1 Wildland Engine, 1 Light Pumper, 1 Tanker and the Command Vehicle. Beato Volunteer Fire Department: This is one of the VFDs which are dispatched off-map. I dare to say that these guys have the worst fire station in Portugal and the conditions in which they work on are pretty crappy. Nevertheless, Beato's firefighters/paramedics are always very professional and they know how work's done. They has the biggest volunteer ambulance fleet in the whole city, so they're always very busy with calls. You can only dispatch 2 of the 7 ambulances they have and a Light Pumper (all off-map). Ajuda Volunteer Fire Department: The people from this house are absolutely badass, only because they own the only past-German Fire Engine in Lisbon. Despite their conditions and monetary issues, Ajuda has an essencial role in keeping the city safe. Only the Fire Engine and one of their Ambulances will be able to be dispatched (off-map), but their fleet is slighty bigger. Cabo Ruivo Volunteer Fire Department: Cabo Ruivo has a big fleet of units, but I decided to only make this ambulance because of the siren. It's the only dispatchable unit from this VFD (off-map). Lisboa's Volunteer Fire Department: Not to be confused with Lisbonenses! I know some of the guys from this house and they're pretty cool. This is the oldest VFD in Lisbon, so it was obligatory to recreate atleast their most famous ambulance; the only one that you'll be able to dispatch (off-map). Campo de Ourique Volunteer Fire Department + São Francisco Xavier Fly-Car: Because both the VFD and the Hospital are located on the Western side of the city, I decided to keep them together. As you may know, these are dispatched off-map and only serve as backup, like the previous ones. Republican National Guard Intervention Unit: Despite being part of a Police/Military organization, the GIPS operatives are somewhat compared to special-firefighters. The guys on these two vehicles will be dispatched off-map and are responsible to support the HAZMAT and USAR operations that you'll encounter throughout the gameplay. The bigger vehicle will be able to deploy a decontamination tent (different from the RSB one) and the personnel also has different gear. Public Safety Police: The police station will have 4 playable units. 2 Cruisers, 1 Personnel Carrier (with some rapid-intervention police officers known as EIR) and 1 Coroner's van (with its own different "GoToHospital" script). St. Joseph's Fly-Car + Hospital: Also known as Central Lisbon's busiest Hospital, this unrealistic representation seems good enough to handle the victims. The Fly-Car will respond quickly to any serious calls and will be used to check and confirm dead victims (to be transported in the Coroner's van), for realism, mostly. This modification will be released on the 14th December 2014 (this Sunday, 2 days): the date was chosen because it is the same as Lisbonenses' VFD Birthday, since this modification was made specially for the men and women that belong to it. Credits will be added to the readme and I'm also currently working on the permissions. Special thanks: To the guys from the Lisbon's Regiment Fire Brigade 3rd Company for their time and patience to show me the ins and outs of the way how they operate, the station and vehicles. To all of my friends from Lisbonenses VFD, specially the Commander, who's supporting this project since the very beggining. ​ ​
  5. GNR (Portuguese National Guard) HAZMAT/USAR (Intervenção, Proteção e Socorro) unit: Models: Kobulwosza Mod (Lightbar), MikeyPI (Ford Explorer + wheels), EmC-Unit (top part, from Ukraine Rescue Mod [MNS UAZ Patriot])
  6. I still don't have a clue, but a few german modders already figured it out...
  7. I'm having some trouble importing the .mesh models in ZMod2... Any ideas? ^^ Sent from my iPhone 4 using Tapatalk.
  8. No problem! Thank you for the quick reply and keep up the great work.
  9. Erm... I don't mean to ruin anyone's fun but, I think that there are atleast two sirens in this modification that were created by me. The Whelen siren used by the police cars and the Q siren used by the older Mack Engine. If there are any doubts I'm willing to compare my sounds with these and I'm 99% positive that they're exactly the same.
  10. Hi. I've recently been working on some sort of german-style dispatch system The scripts are added via-freeplayscript, in which the dispatcher also has a custom name. You add the scripts that you'd like the dispatcher to have and also the group that it belongs to (1,2,3,4,etc.), after that, you're all set. for a private project and I've crossed into a problem: Whenever the dispatcher has more than 1 alarm-script on the commands section, it crashes right when I click the unit.If the dispatcher only has 1 alarm script it works fine.I also took a look into the logfile and the only thing that looks abnormal is the classic: !WARNING: global listener object is still registered! Unregister listener before destroying object! Two alarm scripts and part of the fp_freeplay script (the dispatcher group and script assignments) are below: ALARMSCRIPT 1: //////////////////////////////////////////////////////////////////////////////////////////////////////////// Script de alarme de viaturas //// ************************************************ //// //// 1.0| AlarmVIATURA X //// //// _____________________ //// original por a-rescue. Editado por Ghost Graphic Designs //// Edições não permitidas sem autorização ////////////////////////////////////////////////////////////////////////////////////////////////////////////const char IMG_ICON[] = "absc33"; // Name des Iconsconst char IMG_CURSOR[] = "sendto"; // Name des Cursorsconst char COMMANDABLE_TRUE[] = "DUMMYSetCommandableTrue";const char COMMANDABLE_FALSE[] = "DUMMYSetCommandableFalse";const char FREEFORALERT_TRUE[] = "DUMMYFPSetFreeForAlertTrue";const char FREEFORALERT_FALSE[] = "DUMMYFPSetFreeForAlertFalse";const char FREEFORALERT[] = "DUMMYFPIsFreeForAlert";const char INBASE_TRUE[] = "DUMMYFPSetInBaseTrue";const char INBASE_FALSE[] = "DUMMYFPSetInBaseFalse";const char INBASE[] = "DUMMYFPIsInBase";// 1.0object AlarmABSC03 : CommandScript // Name des Commands{ AlarmABSC03() // Name des Commands { SetIcon(IMG_ICON); SetCursor(IMG_CURSOR); SetValidTargets(ACTOR_FLOOR | ACTOR_STREET); } bool CheckPossible(GameObject *Caller) { GameObjectList ol; GameObject *o; ol = Game::GetGameObjects("ABSC03"); //Name des zu alarmierenden Fahrzeuges o = *ol.GetObject(0); Vehicle v(o); if (!v.HasCommand(FREEFORALERT)) return false; return true; } bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { if (Caller->GetID() == Target->GetID()) return false; return true; } void PushActions(GameObject *Caller, Actor *Target, int childID) { GameObjectList ol; GameObject *o; ActorList al; Actor spawnpoint; Vector spawnpos; float rot[9]; float childRot[9]; Vector tpos; PersonList pl; Person p; ActorList al; Actor spawnpoint; Vector spawnpos; ol = Game::GetGameObjects("ABSC03"); //Name des zu alarmierenden Fahrzeuges o = *ol.GetObject(0); Vehicle v(o); if (v.IsDestroyed()) { Mission::PlayHint("A viatura está inoperacional e não está disponível de momento."); return; } if (!v.HasCommand(FREEFORALERT)) { Mission::PlayHint("Veículo está ocupado numa ocorrência."); return; } else { Mission::PlayHint("Saída da ABSC 03!"); //Alarmmeldung die angezeigt werden soll Audio::PlaySample("mod:Audio/FX/sinos.wav"); //Pfad zum Alarmsound der abspielt werden soll v.PushActionExecuteCommand(ACTION_NEWLIST, FREEFORALERT_FALSE, &v, 1, true); al=Game::GetActors("lisbonenses_persons"); //Name des viruelles Objektes wo die EinsatzkrŠfte erstellt werden soll if(al.GetNumActors() > 0) { spawnpoint = *al.GetActor(0); spawnpos = spawnpoint.GetPosition(); } else { Mission::PlayHint("Pessoal não foi encontrado!"); return; } bool ob_personal = false; pl = v.GetPassengers(); for(int i=0; i < pl.GetNumPersons(); i++) { if (pl.GetPerson(i)->HasCommand("entercar")) { ob_personal = true; } } bool vinbase = false; if(v.HasCommand(INBASE)) { vinbase = true; }//Personal Block//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (!ob_personal && vinbase) { p = Game::CreatePerson("mod:Prototypes/Persons/01 TAS/TAS1.e4p","ABSC03"); //Pfad zum Prototyp der Einsatzkraft & Name der Einsatzkraft (wie Fahrzeug) p.GetRotation(rot[0], rot[1], rot[2], rot[3], rot[4], rot[5], rot[6], rot[7], rot[8]); Math::EulerToMatrix(0.f, 0.f, 0.f, childRot); Math::MultiplyMatrices(childRot, rot); p.SetRotation(childRot[0], childRot[1], childRot[2], childRot[3], childRot[4], childRot[5], childRot[6], childRot[7], childRot[8]); GameObject *px(p); Game::FindFreePosition(px, spawnpos, 100); p.SetPosition(spawnpos); p.PushActionExecuteCommand(ACTION_NEWLIST, COMMANDABLE_FALSE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, "entercar", o, 0, false); }//Personal Block//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (!ob_personal && vinbase) { p = Game::CreatePerson("mod:Prototypes/Persons/01 TAS/TAS1.e4p","ABSC03"); //Pfad zum Prototyp der Einsatzkraft & Name der Einsatzkraft (wie Fahrzeug) p.GetRotation(rot[0], rot[1], rot[2], rot[3], rot[4], rot[5], rot[6], rot[7], rot[8]); Math::EulerToMatrix(0.f, 0.f, 0.f, childRot); Math::MultiplyMatrices(childRot, rot); p.SetRotation(childRot[0], childRot[1], childRot[2], childRot[3], childRot[4], childRot[5], childRot[6], childRot[7], childRot[8]); GameObject *px(p); Game::FindFreePosition(px, spawnpos, 100); p.SetPosition(spawnpos); p.PushActionExecuteCommand(ACTION_NEWLIST, COMMANDABLE_FALSE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, "entercar", o, 0, false); }//FŸr weitere EinsatzkrŠfte einfach neue Blšcke hier hinzufŸgen bool ready = false; if (ob_personal) { ready= true; } if (vinbase) { v.PushActionWait(ACTION_APPEND, 8.0); //Zeit bevor Tor aufgeht v.PushActionExecuteCommand(ACTION_APPEND, "VcmdFlashingLights", o, 0, false); v.PushActionWait(ACTION_APPEND, 3.0); //Zeit bis Fahrzeug fŠhrt nachdem das Tor offen ist } if (!ready && !vinbase)) { Mission::PlayHint("Sem pessoal é impossível sair!"); } v.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &v, 1, true); if(!v.HasCommand("DUMMYHasSiren")) { v.PushActionExecuteCommand(ACTION_APPEND, "VCmdSiren", o, 0, false); } v.PushActionExecuteCommand(ACTION_APPEND, INBASE_FALSE, &v, 1, true); if (ready && !vinbase)) { if(!v.HasCommand("DUMMYHasSiren")) { v.PushActionExecuteCommand(ACTION_APPEND, "VCmdSiren", o, 0, false); } } tpos = Game::GetCommandPos(); v.PushActionMove(ACTION_APPEND, tpos); } }};ALARMSCRIPT2: //////////////////////////////////////////////////////////////////////////////////////////////////////////// Script de alarme de viaturas //// ************************************************ //// //// 1.0| AlarmVIATURA X //// //// _____________________ //// original por a-rescue. Editado por Ghost Graphic Designs //// Edições não permitidas sem autorização ////////////////////////////////////////////////////////////////////////////////////////////////////////////const char IMG_ICON[] = "absc01"; // Name des Iconsconst char IMG_CURSOR[] = "sendto"; // Name des Cursorsconst char COMMANDABLE_TRUE[] = "DUMMYSetCommandableTrue";const char COMMANDABLE_FALSE[] = "DUMMYSetCommandableFalse";const char FREEFORALERT_TRUE[] = "DUMMYFPSetFreeForAlertTrue";const char FREEFORALERT_FALSE[] = "DUMMYFPSetFreeForAlertFalse";const char FREEFORALERT[] = "DUMMYFPIsFreeForAlert";const char INBASE_TRUE[] = "DUMMYFPSetInBaseTrue";const char INBASE_FALSE[] = "DUMMYFPSetInBaseFalse";const char INBASE[] = "DUMMYFPIsInBase";// 1.0object AlarmABSC01 : CommandScript // Name des Commands{ AlarmABSC01() // Name des Commands { SetIcon(IMG_ICON); SetCursor(IMG_CURSOR); SetValidTargets(ACTOR_FLOOR | ACTOR_STREET); } bool CheckPossible(GameObject *Caller) { GameObjectList ol; GameObject *o; ol = Game::GetGameObjects("ABSC01"); //Name des zu alarmierenden Fahrzeuges o = *ol.GetObject(0); Vehicle v(o); if (!v.HasCommand(FREEFORALERT)) return false; return true; } bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { if (Caller->GetID() == Target->GetID()) return false; return true; } void PushActions(GameObject *Caller, Actor *Target, int childID) { GameObjectList ol; GameObject *o; ActorList al; Actor spawnpoint; Vector spawnpos; float rot[9]; float childRot[9]; Vector tpos; PersonList pl; Person p; ActorList al; Actor spawnpoint; Vector spawnpos; ol = Game::GetGameObjects("ABSC01"); //Name des zu alarmierenden Fahrzeuges o = *ol.GetObject(0); Vehicle v(o); if (v.IsDestroyed()) { Mission::PlayHint("A viatura está inoperacional e não está disponível de momento."); return; } if (!v.HasCommand(FREEFORALERT)) { Mission::PlayHint("Veículo está ocupado numa ocorrência."); return; } else { Mission::PlayHint("Saída da ABSC 01!"); //Alarmmeldung die angezeigt werden soll Audio::PlaySample("mod:Audio/FX/sinos.wav"); //Pfad zum Alarmsound der abspielt werden soll v.PushActionExecuteCommand(ACTION_NEWLIST, FREEFORALERT_FALSE, &v, 1, true); al=Game::GetActors("lisbonenses_persons"); //Name des viruelles Objektes wo die EinsatzkrŠfte erstellt werden soll if(al.GetNumActors() > 0) { spawnpoint = *al.GetActor(0); spawnpos = spawnpoint.GetPosition(); } else { Mission::PlayHint("Pessoal não foi encontrado!"); return; } bool ob_personal = false; pl = v.GetPassengers(); for(int i=0; i < pl.GetNumPersons(); i++) { if (pl.GetPerson(i)->HasCommand("entercar")) { ob_personal = true; } } bool vinbase = false; if(v.HasCommand(INBASE)) { vinbase = true; }//Personal Block//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (!ob_personal && vinbase) { p = Game::CreatePerson("mod:Prototypes/Persons/01 TAS/TAS1.e4p","ABSC01"); //Pfad zum Prototyp der Einsatzkraft & Name der Einsatzkraft (wie Fahrzeug) p.GetRotation(rot[0], rot[1], rot[2], rot[3], rot[4], rot[5], rot[6], rot[7], rot[8]); Math::EulerToMatrix(0.f, 0.f, 0.f, childRot); Math::MultiplyMatrices(childRot, rot); p.SetRotation(childRot[0], childRot[1], childRot[2], childRot[3], childRot[4], childRot[5], childRot[6], childRot[7], childRot[8]); GameObject *px(p); Game::FindFreePosition(px, spawnpos, 100); p.SetPosition(spawnpos); p.PushActionExecuteCommand(ACTION_NEWLIST, COMMANDABLE_FALSE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, "entercar", o, 0, false); }//Personal Block//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (!ob_personal && vinbase) { p = Game::CreatePerson("mod:Prototypes/Persons/01 TAS/TAS1.e4p","ABSC01"); //Pfad zum Prototyp der Einsatzkraft & Name der Einsatzkraft (wie Fahrzeug) p.GetRotation(rot[0], rot[1], rot[2], rot[3], rot[4], rot[5], rot[6], rot[7], rot[8]); Math::EulerToMatrix(0.f, 0.f, 0.f, childRot); Math::MultiplyMatrices(childRot, rot); p.SetRotation(childRot[0], childRot[1], childRot[2], childRot[3], childRot[4], childRot[5], childRot[6], childRot[7], childRot[8]); GameObject *px(p); Game::FindFreePosition(px, spawnpos, 100); p.SetPosition(spawnpos); p.PushActionExecuteCommand(ACTION_NEWLIST, COMMANDABLE_FALSE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &p, 1, true); p.PushActionExecuteCommand(ACTION_APPEND, "entercar", o, 0, false); }//FŸr weitere EinsatzkrŠfte einfach neue Blšcke hier hinzufŸgen bool ready = false; if (ob_personal) { ready= true; } if (vinbase) { v.PushActionWait(ACTION_APPEND, 8.0); //Zeit bevor Tor aufgeht v.PushActionExecuteCommand(ACTION_APPEND, "VcmdFlashingLights", o, 0, false); v.PushActionWait(ACTION_APPEND, 3.0); //Zeit bis Fahrzeug fŠhrt nachdem das Tor offen ist } if (!ready && !vinbase)) { Mission::PlayHint("Sem pessoal é impossível sair!"); } v.PushActionExecuteCommand(ACTION_APPEND, COMMANDABLE_TRUE, &v, 1, true); if(!v.HasCommand("DUMMYHasSiren")) { v.PushActionExecuteCommand(ACTION_APPEND, "VCmdSiren", o, 0, false); } v.PushActionExecuteCommand(ACTION_APPEND, INBASE_FALSE, &v, 1, true); if (ready && !vinbase)) { if(!v.HasCommand("DUMMYHasSiren")) { v.PushActionExecuteCommand(ACTION_APPEND, "VCmdSiren", o, 0, false); } } tpos = Game::GetCommandPos(); v.PushActionMove(ACTION_APPEND, tpos); } }};DISPATCHER SCRIPT: // DISPATCHERS - GROUP & SCRIPTS GameObject *ofz; GameObjectList lfz; lfz=Game::GetGameObjects("central"); //Dispatcher 1 name if(lfz.GetNumObjects() > 0) { ofz = *lfz.GetObject(0); ofz->AssignCommand("AlarmABSC01"); //AlarmScript ofz->AssignCommand("AlarmABSC02"); //AlarmScript ofz->AssignCommand("AlarmABSC03"); //AlarmScript ofz->AssignCommand("AlarmABSC04"); //AlarmScript ofz->AssignCommand("AlarmABSC05"); //AlarmScript ofz->AssignCommand("AlarmVUCI04"); //AlarmScript //Add aditional scripts here Game::AddToGroup(ofz,0); System::Log("STARTSCRIPT: Disponenten Platz 1 wurde erfolgreich eingerichtet."); } else System::Log("STARTSCRIPT - FEHLER: Disponenten 1 Platz wurde nicht gefunden ! ! ! !"); lfz=Game::GetGameObjects("central_psp"); //Name des 2. Dispo if(lfz.GetNumObjects() > 0) { ofz = *lfz.GetObject(0); ofz->AssignCommand("rufe_psp1"); //Name des Commands um das 4.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_psp2"); //Name des Commands um das 3.Fahrzeuge zu alarmieren //Weitere Commands hier einfügen Game::AddToGroup(ofz,1); System::Log("STARTSCRIPT: Disponenten Platz 2 wurde erfolgreich eingerichtet."); } else System::Log("STARTSCRIPT - FEHLER: Disponenten Platz 2 wurde nicht gefunden ! ! ! !"); lfz=Game::GetGameObjects("disp3"); //Name des 3. Dispo if(lfz.GetNumObjects() > 0) { ofz = *lfz.GetObject(0); ofz->AssignCommand("rufe_inem1"); //Name des Commands um das 5.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_inem2"); //Name des Commands um das 6.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_inem3"); //Name des Commands um das 5.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_vmer"); //Name des Commands um das 6.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_vmer2"); //Name des Commands um das 5.Fahrzeuge zu alarmieren //Weitere Commands hier einfügen Game::AddToGroup(ofz,2); System::Log("STARTSCRIPT: Disponenten Platz 3 wurde erfolgreich eingerichtet."); } else System::Log("STARTSCRIPT - FEHLER: Disponenten Platz 3 wurde nicht gefunden ! ! ! !"); lfz=Game::GetGameObjects("disp4"); //Name des 4. Dispo if(lfz.GetNumObjects() > 0) { ofz = *lfz.GetObject(0); ofz->AssignCommand("rufe_absc1"); //Name des Commands um das 7.Fahrzeuge zu alarmieren ofz->AssignCommand("rufe_absc2"); //Name des Commands um das 8.Fahrzeuge zu alarmieren //Weitere Commands hier einfügen Game::AddToGroup(ofz,3); System::Log("STARTSCRIPT: Disponenten Platz 4 wurde erfolgreich eingerichtet."); } else System::Log("STARTSCRIPT - FEHLER: Disponenten Platz 4 wurde nicht gefunden ! ! ! !");Don't mind the German commentaries, basically it's just some guidelines to add variables like vehicle names, prototypes, other scritps and stuff like that. Thanks in advance.
  11. Very nice! Don't forget to change the lightbar colours so that the blue is on the passenger side and red is on the driver's side. Good luck!
  12. He's speaking portuguese. EN: Please post in english, this is an english forum. PT: Por favor fale em inglês, sendo que a língua falada neste fórum é inglesa.
  13. That would be awesome! I'm currently doing that for my future modifications, it's a pain in the ass, but it's worth it. Not to mention the custom alarm sounds for each unit and being able to call multiple units at once: I love that stuff.
  14. I'll stick with EM4 untill I get a new rig to run EM5 smoothly. Still not quite sure, but I'll see if it's worth it to get EM5 and start practicing.
  15. Shitty, huh..? I wanna see one american fire engine competing with Rosenbauer's AT3 or operating in an European city. An AT3 can operate everywhere, while on the other hand, if you put a North-American engine in one random european city, it would get stuck everywhere, more precisely in tiny and tight streets (a tiller couldn't even make the turn to the street without crashing into something). Watch this to expand your (little) knowledge about european emergency vehicles before insulting them. On-topic: this one belongs to my VFD. It's kind of old but it still does the job. Carries about 1500 to 2000L. But it's still beaten by the pumper in my signature, which carries 3000L, extrication gear, paramedic bags, etc. and it's also very compact, has all of the necessary equipment and is really maneuverable, making it perfect for Lisbon's historical centre and operational area.
  16. About 10 unarmed (and awesome) security guards, but also a police and fire station about 3 minutes away. Security's pretty tight, not everyone has access to our facilities, so it would be very unlikely for something like that to happen.
  17. You can always try to make the roof act as a sliceable door, adapt the X,Y,Z coordinates and change the revolving angle.
  18. Correct me if I'm wrong, but I think that they actually transport the defused (or not) bomb and then make the device go boom inside that thingy.
×
×
  • Create New...