Jump to content


  • Posts

  • Joined

  • Days Won


Chris07 last won the day on July 27 2018

Chris07 had the most liked content!


About Chris07

  • Birthday 02/15/1990

Profile Information

  • Gender
  • Location
  • Interests
    Medicine & Computer Science...what a combo!

Recent Profile Visitors

7,402 profile views

Chris07's Achievements


Newbie (1/14)

  • First Post Rare
  • Collaborator Rare
  • Dedicated Rare
  • Week One Done
  • One Month Later

Recent Badges



  1. Much appreciated my man. What were some significant bugs that were present in the original version? It's nice to know what's caused by me and whats to be expected and possibly fix.
  2. I'm trying really hard to move 100% to blender and get ZModeler out of my life so I have begun updating this script to be compatible with Blender v2.8+. Currently testing using Blender 3.0...which is amazing btw...and have import working. Working on export functionality and hope to eventually implement things like model compression/decompression and bones/animation. We'll see. The animation part will be a challenge. I'll post an update as soon as I get the base functionality this had before working.
  3. I would be very interested in knowing how you figured out/reverse engineered the eft format.
  4. A literal pain in the behind, but definitely doable. I have a similar feature planned. As of right now, the best way I can think to implement this is to name the squad vehicle and the paramedics so that they are linked. Vehicle Name: "Squad_51" Paramedic 1 name: "Squad_51_p1" Paramedic 2 name: "Squad_51_p2" When the ambulance transport command is selected, it checks to see if "Squad_51_p1" or "Squad_51_p2" are passengers. If one is, then it checks to see if the other is in vehicle "Squad_51". If the other is in the vehicle, both go to parking spots at the hospital lights and siren. If the other paramedic is not in the squad when the transport command is triggered, then the command is terminated and a message displayed stating that you can't leave until the squad has the other paramedic in it. This is so that the squad doesn't leave without a driver/leave the other paramedic behind. If neither paramedic is onboard, then the ambulance transports as normal. As for truly "following the ambulance" , that's a little harder, and I'm not exactly sure how I'd do that. One possible work around is add a small delay between the ambulance leaving and the squad and hope the the squad falls behind the ambulance most of the time? The squad leading the ambulance is not all that uncommon IRL, so it's not exactly super important to ensure the squad always follows the ambulance. That's how I initially plan on implementing it. I'll probably revise it as I go, but that's the basic idea.
  5. If you can't seem to fix it, rest assured the the shadow is limited to ZModeler. When you export and place the model in game it will not have a shadow.
  6. I'm not sure. I've heard of this happening but I'm not 100% sure as to why since I've never encountered this issue. By chance, do you and the other person have different versions of the game? Like one of you has 911 First Reponders and the other has EM4 Deluxe?
  7. Ok. Once I can get verification that the random CTDs stop, I’ll see if I can add logic to prevent collisions with existing markers and objects. Hopefully that should fix that problem.
  8. Hello everyone. I am attempting to put out a patch for this mod's parking script. I may have found the issue but I need some of you to play with it for a bit and tell me if: 1. You get a CTD (My priority to fix) 2. It starts behaving really weirdly I've played about 30 minutes without a CTD but that's not always reliable. So please. Try and break it! If you get an error or CTD I NEED to know the following: 1. What exactly did you do that caused it to CTD? Rotate the marker? Bring up the marker by CTRL+R Click? 2. Upload your log file (I put a lot of debug information there to narrow down the origin of the error)! 3. Did you notice the script act oddly before it caused the CTD? If so, how so? 4. If you have a video of any weird behavior, that may be helpful as well! I would really like MULTIPLE people to try this out, that way I can see if there is any pattern to the CTD or errors. Ultimately I'm going to need to rewrite this script for any future projects. This implementation is a bit too ambitious/complicated and has been a real nightmare to debug (about 16+ hours of headaches). My goal is to try and at least fix this. If you're still getting CTD I'm going to have to re-implement this script with a rewrite. The patch to test is attached to THIS post. Simply replace the included scripts and play as normal. Northview - South County v2.1.0.zip Northview - South County v2.1.0.zip
  9. I guess there’s only one way to find out! Time to experiment!
  10. For the sake of academic completeness, I'd like to add that lines that begin with "A" are the ones that indicated animation data. "P" lines indicate polygon data. I have these graphics I made a while ago for a brief tutorial on the "anatomy of a v3o" file that I never got around to completing. I figured I'd just drop these here. "D" lines indicate a vertex. The image below says "see explanation". That explanation is as follows: "D" lines are numbered 0 through the number of "D" lines minus 1. If we have 30 vertex points (30 "D" lines), then each "D" line is numbered 0 through 29. So the first vertex ("D" line) is 0, the second is 1, the third is 2, the fourth is 3, the fifth is 4......the twenty ninth is 28, and the thirtieth is 29. That "number" (0-29 in this example) is what I mean by the index value. so in the image, that polygon is made by connecting the 225th, 216th, and 226th vertex ("D" line) in the v3o file. Perhaps someone may find this information useful for some reason.
  11. Keep your questions public, if you can. 1. In order help anyone else that might be having similar issues, and so that others may learn from these problems as well. 2. So that others can help you and you’re not just waiting on me.
  12. I'm assuming you are attempting to have 1 of 4 possible sirens play when the siren is activated, which is selected at random? Get Ready! Super long answer that's designed to teach instead of just giving you an answer. I have a soft spot for people actively attempting to learn to script. Lets focus on the siren selection first, then we'll worry about the sound not following the vehicle problem later. Deal? Lets start with this part of the code first: if (random == 0) { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren01.wav", CarPos, true); } else { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren02.wav", CarPos, true); } else { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren07.wav", CarPos, true); } else { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren08.wav", CarPos, true); } I'm sure you may be aware, but for the sake of others, let me explain something. If-Else statements work by evaluating the condition statement in between the first set of parentheses as either true or false. if ( CONDITION TRUE ) Do something else Do something else If the statement next to "if" is true, then the code block (designated between an opening "{" and closing "}" set of curly braces) immediately following it is executed. Any subsequent "else" statements are ignored and skipped. If the "if" statement is false, then the preceding code block is ignored and instead the "else" code block (again, designated as being between an opening "{" and closed "}" set of curly braces) is executed. As a rule, every "if" statement may only have one else statement ("else if" statements don't count). Having more than one pure "else" statement leads to unpredictable behavior, or usually, an error. What you have in your code is an if statement with multiple "else" statements following it. In most programming languages this is not allowed and would result in an error. EM4, on the other hand, seems to have forgiven you for this and just executed all the else statements as if they were one giant code block. So we need to fix that...later...because we have another problem on our hands...the way you are generating your random selection between the 4 sirens. int random = Math::rand()%2; This is self explanatory. You're generating a random number and assigning it to a variable. This is correct. What you may not realize is that you are only generating 2 possible random numbers: 0 or 1. Math::rand() is a built in function that will generate a random number between 0 and some very large number. In your case, you only need to pick between 4 different numbers (1 number for each siren option). To do that we use math. The "%" is a mathematical operator called modulus. It gives you the remainder of a division. Division int a = 9 / 3; //This equals 3. ( 9 divided by 3 equals 3 ) int b = 10 / 3; //This actually equals 3. The decimal is dropped since its being assigned to an integer variable (which only stores whole numbers). 3 goes into 10 3 times with a remainder. Modulus int a = 9 % 3; //This equals 0, since 3 divides into 9 evenly and thus has no remainder. int b = 10 % 3; //This equals 2 since 3 goes into 10 3 times, but has a remainder of 2. Back to your problem: int random = Math::random() % 2; random will equal the remainder of whatever random number is generated divided by 2. This means that your options will only ever be 1 (if an odd number) or 0 (if an even number). You need to change this. Instead, you want to randomly select between 4 options so lets change it to: int random = Math::random() % 4; Now, no matter what number is generated, you'll only have 4 possible options: 0 (if the number is evenly divisible by 4), 1, 2, 3. Now that we have the script picking a siren sound, we need to fix our broken if-else statement so the proper one plays. Back to the if-else So we have a random number selected (0, 1, 2, or 3) and we want to play a different siren for each selection. Lets update our if-else statement to be correct: int random = Math::rand() % 4; if (random == 0) { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren01.wav", CarPos, true); } else if (random == 1) { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren02.wav", CarPos, true); } else if(random == 2) { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren07.wav", CarPos, true); } else { soundID = Audio::PlaySample3D("mod:Audio/FX/Sirens/Siren08.wav", CarPos, true); } - The first "if" statement asks: Is my random number 0? If so, play siren01. Otherwise, proceed to the "else" statement. - The first "else" says: Ok, the random number wasn't 0. Is the random number 1? If so, play siren02. If not, proceed to the next "else" statement. - The second "else" says: Fine, is the random number a 2? If so, play siren07. If not, proceed down to the next "else". - The third "else" doesn't ask a question (no "if" statement). It just says: I don't care what the value of the random number is. It's not what the above statements were looking for so I'll just play siren08. In this case, if the random number was 3, it would execute the final "else" statement since it is not 0, 1, or 2 which are being looked for in the preceding "if" and "else-if" statements. So after all that, it should make a proper selection. Try this and fix your script, then report back what else needs fixing. This was long winded! I apologize! I want to help you and others learn the basics of scripting. It is NOT an easy skill to learn or develop without some sort of programming background. I admire your effort to do something yourself instead of just asking for help making something without actually putting in the effort to figure it out. Scripting is probably among the rarest skills in the community, and perhaps one of the most sorely needed, so anything I can do to help develop a new scripter is a good thing IMO.
  13. We've got something we think will be pretty good in the planning stages right now. Luckily we've been building up models and stuff for years to do this project. As per my philosophy, the world will only find out what it is exactly when we are near release, which at this point, is very far off. 1. If someone can find the cause I will gladly fix it, but I've already invested HOURS into cleaning up the code and debugging it, but can't quite figure it out. If you want to see something fun, I'll show you a video of an issue the script used to have but has since been fixed. It might seem like a simple script, but it took a lot of time with trial and error to get it to a "workable" point. It works most of the time, but it sometimes just starts acting crazy. I've played for over and hour without an issue before, and I've also played for 5 minutes and had a CTD, so it's a real head scratcher that I just don't have the time to revisit right now. If someone comes up with a solution or can pinpoint the cause, I will definitely show my gratitude. 2. We removed the tiller completely, so I would have to re-add it. Is it possible? Yes, but the parking script wasn't written to accommodate the tiller, so theoretically I could make it an optional unit, but who knows how it would behave with the parking script. Additionally, there is another script in our current working copy of the mod that wouldn't quite work well with the tiller. 3. The new truck SHOULD be callable. Out of convenience and mostly laziness, I just swapped it with the Tiller. If you click on the tiller quint icon on the list, then it should show the ladder truck. , Let me let you in on a little secret. No sooner had we discussed, decided, and announced that this was the final release, losangelesi was already making edits and throwing new crap into the mod. I kid you not. I just went on this whole PR spiel about "that's it. We're done." and he was already working on it again. Yea, that's right @losangelesi, I'm calling you out! Since I can't possibly get mad at that idiot, I jokingly now call our working copy of the mod "Northview: South County, losangelesi's Cut" (In reference to a "Director's Cut" of a movie). As of right now he's using it as a test bed for testing new objects and such for our next project, but he did express the possibility of releasing it well into the future. The truth is, I don't know what the future will hold, so I won't say that we will or will not release an update. What I can say is that there may or may not be a growing list of things we need to fix or change if we came back to this. The bottom line is, treat this as the final update, that way you can be pleasantly surprised if we ever release something else.
  14. The crashing is something I spent days trying to fix. It's better now than it was...let me tell you. I did notice that before it crashes there is weird behavior that if noticed, can allow you to save your game from crashing. Typically, you'll notice that when sending one vehicle to park, another goes instead. Then when you try another vehicle, that same one tries to park again. If you notice this, send the vehicle that keeps trying to park instead of the intended one back to HQ and call it out again once it disappears. This fixes the issue and allows you to continue playing. Its really weird. I've played for over an hour with no problem, and have played with that problem appearing pretty quickly. I can't quite get to the bottom of it. Maybe someone else can. Thanks for the feedback.
  15. Hello everyone! After a long...long...long...time...losangelesi and myself decided to use a little (more like a lot) of our valuable spare time to create a new update for the South County mod! In summary we've made the following changes: 1. The biggest complaint we've gotten about the mod is that you have to call in units one by one on SINGLE PLAYER freeplay! We heard you, and I have written an autospawn script for single player freeplay, so now your vehicles will spawn and be fully staffed in their stations ready to go when freeplay loads! Be aware that your personnel will exit and enter their vehicles at the start. This is normal. Give them the 2-3 seconds to complete this and you're all set! 2. We received a lot of feedback that players were mostly against using the Tiller "Quint" and often replaced it with a ladder truck instead. With this and the buggy multiplayer performance in mind, we made the decision to remove it completely. We have since replaced it with a new ladder truck that Losangelesi put his heart and soul into! (Thanks to Firequi and Itchboy for their model assets!) 3. We removed the water tanker and replaced it with another standard Engine. We felt that without a limited water supply script, the tanker was a useless vehicle. With the Quint gone, we felt that another pumper apparatus was needed, so we created Engine 283. If you want, you can bring the tanker back by making a single edit to a script file (found below). 4. To give things a little spice I decided to try something new. Truthfully it's not new, but it's something that I haven't seen in any US themed mods yet, and that's vehicle parking. Watch the video change log for a demo. Note that I wrote this from scratch, so it may not be 100% perfect, but I tried to make it as stable as possible. In my testing it's been fairly stable. Also it's not a miracle worker, so don't expect to parallel park your ladder truck in a tiny space. To start Parking Mode, hold CTRL when clicking to move your vehicle. A marker will appear which you can move by right clicking or using the commands. To rotate the parking marker, hold CTRL and right click and the marker will rotate towards where you clicked. LEFT CLICK + RIGHT CLICK sends your vehicle to park. Holding shift while telling you vehicle to park sends it there without lights and sirens (if they are set to activate automatically). Alternatively you can tell you vehicle to park by hitting the green check mark on the command panel. Note that the move arrows on the command panel are in reference to default camera rotation so you'll have to play with it. CTRL click the buttons to move the vehicle in smaller increments. Performance in multiplayer is relatively untested so use at your own risk! 5. We made some changes to paths and the map to facilitate better path finding by vehicles. 6. I removed the bus accident on the bridge event in an attempt to cycle some other calls through. 7. We fixed a few existing bugs (too many to count). 8. Lincoln Heights is cleaning up a bit. It's still pretty ghetto but it's slowly getting better. 9. We've tweaked some settings and lights on some of the vehicles. 10. We've updated a lot of audio sound effects Now for a barrage of screenshots: The new state of affairs at Station 81. The Quint is gone and a new ladder truck has taken its place: Say hello to Truck 81 (Model by Itchboy - cab & Firequi - Body. UV Map, model splicing, lights, and edits by losangelesi) The new parking script in action: Please note that the campaign and deluxe freeplay are unsupported and in all likeliness are broken. Please use this mod for freeplay only. Thanks. So with that we have a little bad news: Unfortunately, we also decided to end any further development of this mod. We both felt that this modification has served its purpose and has grown enough for us to be satisfied in leaving it as it is. We appreciate all of your feedback and hope to one day create something bigger and better than this. I can tell you one thing for sure...whatever we come out with next will NOT be a glorified LA Submod. Instead, we hope to come up with some original content made from the ground up. Enjoy v2.1! DOWNLOAD LINK IS ON THE FIRST PAGE! How the heck do I use this new parking script thing? Here's a quick demo/tutorial for you. It's easy! Video not yet uploaded I can't save my progress in Police/Fire/EMS mode! Worst mod ever! The way we were able to implement two different modes was to replace Freeplay with Fire/EMS, and Challenge mode with Police/Fire/EMS mode. Unfortunately, the game is hard-coded to not allow saving of "Challenge Mode" progress, hence it is not possible for us to enable saving of Police/Fire/EMS mode since it is a limitation of the game itself. Sorry! How to replace E283 with the tanker: 1. Go to Scripts / Game / Command / SoCoStartup.script 2. Open this file in a text editor 3. Search for: const bool replaceTanker = true; Replace it with: const bool replaceTanker = false; 4. Save & Exit! How to staff the ambulances with two paramedics instead of a stretcher crew by default: 1. Go to Scripts / Game / Command / SoCoStartup.script 2. Open this file in a text editor 3. Search for: const bool spawnStretcher = true; Replace it with: const bool spawnStretcher = false; 4. Save & Exit! I don't like the staffing of the auto-spawned vehicles! How do I change them? 1. If you are proficient with editing scripts, you can figure out how to change staffing in my SoCoStartup.script. It's commented well and pretty easy to figure out. 2. If you don't like messing with scripts then send the vehicle back to HQ and call out a new one with your preferred staffing. 3. Disable autospawn and go back to the old way of spawning vehicles one by one. To do this simply delete: Scripts / Game / Command / SoCoStartup.script file
  • Create New...