Jump to content

meatball

Member
  • Content Count

    734
  • Joined

  • Last visited

  • Medals

Everything posted by meatball

  1. Hadn't really considered that since the counter will only go up at most, once every 15 minutes. So for a server that's up 24 hours, that's 96 counter increments, a month would be 2,880. I agree it's not the best method, but it's the simplest way I could think of keeping Client/Server weather in synch. I'm still relatively new to Arma scripting as well, so I'm up for any suggestions :)
  2. meatball

    =BTC= Revive

    Ah, perfect, thanks! That seemed to do the trick. For some reason I still had the .94 files after the last download, but this most recent one is working like a champ. Thanks!
  3. meatball

    Vehicles in Trigger?

    Well, I figured it out by using the 'intrigger' function. In case anyone else is looking to do the same, simply put the following into the condition. {[thistrigger,_x] call bis_fnc_intrigger} count [name1,name2,name3,name4,name5] > 1; Where name1,name2, etc are the actual names of the trucks in the editor. I'm betting you can do the exact same thing with objects as well.
  4. Trying to work something out and having a bit of trouble figuring it out. Basic gist of it is this. Players are tasked with going taking over a location where there are half a dozen empty OpFor trucks. The trucks are a mix of O_Truck_02_covered_F and O_Truck_02_transport_F classes. I want the players to steal some of the trucks trucks and deliver at least two of them to another location on the map. I can't seem to get the end location trigger to fire when two of arrive at the end location. Any thoughts?
  5. meatball

    =BTC= Revive

    Awesome, thanks as always! Keep up the great work. Should "BTC_disable_respawn = 1;" disable the respawn button/capability for players or is it another setting? I've tried both and neither seems to actually disable players from respawning.
  6. Wanted to post my latest version of the multiplayer random weather script I'm using. _Seems_ to be working correctly player hosted or dedicated missions so far. This script will set initial weather based on a players choice in parameters (defaults to Clear), then every 15 minutes it will randomly adjust the weather a small amount and attempt to keep the server and all clients in synch. It's kludgey, but it seems to work. /* randomWeather.sqf v 0.8 - Multiplayer Mission Random Weather Generator - By Meatball Script Requirements: 1) Put this code/script in a file named "randomWeather.sqf" in root mission folder. 2) Create a call in init.sqf that will run for the server and all clients. execVM "randomWeather.sqf"; 3) Have the following code in the "class Params" section of your description.ext to create weather as a selectable parameter for the players. class Params { // paramsArray[0] class initialWeather { title = "Initial Weather (Bugged/Not Working When Hosted on a Dedicated Server)"; values[] = {1,2,3,4,5,6,7}; texts[] = {"Clear","Overcast","Light Rain","Heavy Rain","Light Fog","Heavy Fog","Random"}; default = 1; }; }; */ // Initial Server Weather Setup if(isServer) then { // Set initial weather values based on parameter choice. Make sure the # in the select below matches what # in the order of parameters (starting with 0) your initialWeather class is defined in the description.ext initialWeather = (paramsArray select 0); switch (initialWeather) do{ case 1: {forecastOvercast = 0;forecastRain = 0;forecastFog = 0;forecastWindE = 1;forecastWindN = 1;}; // Clear case 2: {forecastOvercast = .45;forecastRain = .45;forecastFog = 0;forecastWindE = 2;forecastWindN = 2;}; // Overcast case 3: {forecastOvercast = .70;forecastRain = .70;forecastFog = .05;forecastWindE = 3;forecastWindN = 3;}; // Light Rain case 4: {forecastOvercast = 1;forecastRain = 1;forecastFog = .05;forecastWindE = 4;forecastWindN = 4;}; // Heavy Rain case 5: {forecastOvercast = .75;forecastRain = .10;forecastFog = .30;forecastWindE = 1;forecastWindN = 1;}; // Light Fog case 6: {forecastOvercast = .85;forecastRain = .20;forecastFog = .50;forecastWindE = 0;forecastWindN = 0;}; // Heavy Fog case 7: {forecastOvercast = random(1);forecastRain = random(1);forecastFog = random(.20);forecastWindE = (random(14)-7);forecastWindN = (random(14)-7);}; // Random }; // Set up variable to track server weather updates. serverWeather = 0; // Broadcast initial weather settings that were set based on parameter choice. publicVariable "forecastOvercast"; publicVariable "forecastRain"; publicVariable "forecastFog"; publicVariable "forecastWindE"; publicVariable "forecastWindN"; publicVariable "serverWeather"; }; // Server and Client weather set based on initial weather parameter values. waitUntil {!isnil "serverWeather"}; skiptime -24; 86400 setOvercast forecastOvercast; 86400 setFog forecastFog; 86400 setRain forecastRain; setWind [forecastWindE,forecastWindN,true]; skipTime 24; simulWeatherSync; // Debug Hint //hint "Initial Weather Setup"; // Server Loop to create a new weather forecast every 15 minutes. if(isServer) then { while {serverWeather >= 0} do { // This will always be true and it will run as long as server runs. randOCorRain = random (2); // Pick a random number between 0 and 2 to update Overcast or Rain this cycle since you can't to both. If random value is Less than or equal to 1 Overcast will be updated this cycle, if value is greater than 1, update rain this cycle. // Configure weather settings on server to match next 15 minute weather forecast. 900 setFog forecastFog; if (randOCorRain <= 1) then { 900 setOvercast forecastOvercast;} else { 900 setRain forecastRain;}; sleep 900; setWind [forecastWindE,forecastWindN,true]; // Create random numbers for next forecast. _randOvercast = (round((random(0.2)-0.1)*100))/100; _randRain = (round((random(0.2)-0.1)*100))/100; _randFog = (round((random(0.1)-0.05)*100))/100; _randWindE = (round((random(1)-0.5)*100))/100; _randWindN = (round((random(1)-0.5)*100))/100; // Create next random overcast level and keep it between 0 and 1 forecastOvercast = forecastOvercast + _randOvercast; if (forecastOvercast > 1) then {forecastOvercast = forecastOvercast - (2*_randOvercast)}; if (forecastOvercast < 0) then {forecastOvercast = forecastOvercast + (abs(2*_randOvercast))}; // Create next random rain level and keep it between 0 and 1 forecastRain = forecastRain + _randRain; if (forecastRain > 1) then {forecastRain = forecastRain - (2*_randRain)}; if (forecastRain < 0) then {forecastRain = forecastRain + (abs(2*_randRain))}; // Create next random fog level and keep between 0 and 0.5 forecastFog = forecastFog + _randFog; if (forecastFog > 0.5) then {forecastFog = forecastFog - (2*_randFog)}; if (forecastFog < 0) then {forecastFog = forecastFog + (abs(2*_randFog))}; // Create next random E-W Wind level and keep between -10 and 10 forecastWindE = forecastWindE + _randWindE; if (forecastWindE > 10) then {forecastWindE = forecastWindE - (2*_randWindE)}; if (forecastWindE < -10) then {forecastWindE = forecastWindE + (abs(2*_randWindE))}; // Create next random N-S Wind level and keep between -10 and 10 forecastWindN = forecastWindN + _randWindN; if (forecastWindN > 10) then {forecastWindN = forecastWindN - (2*_randWindN)}; if (forecastWindN < -10) then {forecastWindN = forecastWindN + (abs(2*_randWindN))}; // Increment variable to track updates to server weather serverWeather = serverWeather + 1; // Debug Hint - Show Current and Forecast Overcast, Humidity, Fog and Wind Levels on the Server. // hint format ["Updating Server Forecast # %1 CO: %2 | CH: %3 | CR: %4 | CF: %5 |CW: %6 | FO: %7 | FH: %8 | FR: %9 | FF: %10 | FW: %11,%12 | OCorRain: %13",serverWeather,Overcast,Humidity,Rain,Fog,wind,forecastOvercast,forecastHumidity,forecastRain,forecastFog,forecastWindE,forecastWindN,randOCorRain]; // Broadcast server weather forecast information to clients. publicVariable "forecastOvercast"; publicVariable "forecastRain"; publicVariable "forecastFog"; publicVariable "forecastWindE"; publicVariable "forecastWindN"; publicVariable "serverWeather"; publicVariable "randOCorRain"; }; }; if (!isServer) then { // Client Weather forecast loop. // Set up counter on client to compare local client weather serverWeather counter. clientWeather = 0; // Run a continuous loop on the client to look for updated weather values from the server every 10 seconds. while {clientWeather >= 0} do { sleep 10; // If client Weather is older than the server weather, set client 15 minute weather forecast to match server. if (clientWeather < serverWeather) then { // Set clientWeather counter to match serverWeather counter so local client weather will not update until next server weather update. clientWeather = clientWeather + 1; // Debug Hint - Show Current and Forecast Overcast, Humidity, Fog and Wind Levels on the Client // hint format ["Updated Client Forecast # %1 - CO: %2 | CH: %3 | CR: %4 | CF: %5 |CW: %6 | FO: %7 | FH: %8 | FR: %9 | FF: %10 | FW: %11,%12 | OCorRain: %13",clientWeather,Overcast,Humidity,Rain,Fog,wind,forecastOvercast,forecastHumidity,forecastRain,forecastFog,forecastWindE,forecastWindN,randOCorRain]; // Set 15 minute forecast for the client. 900 setFog forecastFog; if (randOCorRain <= 1) then { 900 setOvercast forecastOvercast;} else { 900 setRain forecastRain;}; sleep 900; setWind [forecastWindE,forecastWindN,true]; }; }; };
  7. meatball

    [MP | COOP 2-8 | WIP] Static Loop

    New Release! v 1.1 - Steam Workshop Link: Static Loop v 1.1 - Armaholic Link (Thanks Big!): Static Loop Change Log - Tested and working with Arma III Official v 1.04.111668 - BI changed the amount of damage that towers can take. Instead of all towers taking 1 explosive charge to destroy, larger towers now take 3-4 explosive charges and smaller towers take 2-3 charges to knock down. Added lots of extra ammo/explosive crates to the map, so keep your eyes peeled. - Weather and Time of day are now set to "Random" by default. They can be changed with the Parameters available at mission start. - Tweaked weather script. Appears to be working correctly for both dedicated server and player hosted missions. - Removed SLP Spawn Script as it was no longer needed. Known Issues - None General Release Notes - If you were subscribing to the Steam Workshop version, you will need to resubscribe. Needed to change a few things, so it's been uploaded as a new mission. - I double checked everything with the new patch and with a few tweaks, I had no issues. - @Spectro, I tested a good amount, but never ran into the BodyRagdoll issue you saw. Maybe something off in DEV? Be interested to see if it's still an issue for you. - I will not be supporting the mission in the DEV branch since that changes so frequently and can cause a lot of issues. - I do have a new mission in the works :) so there will likely not be any new updates to Static Loop unless a patch comes out that breaks it. Enjoy, and as usual, let me know if you notice any issues!
  8. Static Loop v 1.1 COOP 2-8 Players by Meatball Features - Parameters available to change number of enemies (based on amount of players), enemy skill level, weather, time of day, medic personnel and required equipment. - Unlimited Players revives, but player must be revived by other players within 10 minutes to avoid capture. - Numbers and locations of starting and ending points, vehicles, supplies, and enemies, vary from game to game for re-playability. Situation The invasion is on! In an effort to destroy enemy communications and surveillance assets, your demolitions team has been inserted on shores of Stratis shortly after the start of the invasion. Your task, destroy all enemy transmission, communication and radar assets. Changelog v 1.1 (10/31/13) - Tested and working with Arma III Official v 1.04.111668 - BI changed the amount of damage that towers can take. Instead of all towers taking 1 explosive charge to destroy, larger towers now take 3-4 explosive charges and smaller towers take 2-3 charges to knock down. Added lot's of extra ammo/explosive crates to the map to compensate. - Weather and Time of day are now set to "Random" by default. They can be changed with the Parameters available at mission start. - Tweaked weather script. Appears to be working correctly, but is still a work in progress. - Removed SLP Spawn as it was not working properly. v 1.0 (9/22/13) - v 1.0 release, and first release to Steam Workshop. Tested and working with Arma III Official v 1.00.109911 - Weather, woot! Players can now choose starting weather and the weather will randomly change throughout the mission. Note though that this will NOT work if the mission is hosted on a dedicated server. Having trouble making that work with the new A3 weather system. - Updated to the latest version of AI Spawn Script Pack (v0.90) by SpunFin - Added in new vehicles and units from official release. - Various minor bug fixes and code tweaks. v 0.9 (8/28/13) - Minor tweaks to AI skills levels. Lowered Normal, Hard & Extreme Levels slightly. - Reconfigured triggers for destroyed towers/buildings so they should no longer break every time when the game is patched. - Fixed a problem with Starting script that would sometimes cause the insertion helicopter to crash. - Believe the BTC Revive error message is now fixed. v 0.85 (8/13/13) - Fixed broken triggers caused by patch (working on fixing it so it doesn't happen every time it's patched) - Added a new parameter that allows players to choose who can revive, all players or only the Combat Life Saver. Default is Everyone. v 0.8 (8/3/13) - Fixed Random starting points. Players will now randomly start at one of ten starting locations. - Enemy helicopter reinforcements will now randomly either land to drop off troops or air drop troops. - Redid Intro/Outro screens for mission start and end. - Updated to new AI Spawn Script Pack (.80). - Updated to new SLP Spawn (3.43) scripts for AI player hunter groups and made some minor tweaks. - Updated to latest =BTC= Revive script (.93RC). - Fixed a problem with the Ambient Radio script throwing errors. - Lot's of other minor fixes/tweaks. v 0.71 (7/29/13) - Fixed a problem with name of mission showing correctly. - Fixed a problem with the first aid kit required for revive parameter. - Fixed a problem with the mission name not showing up in the mission list. - Temporarily disabled random starting points. Working through some issues with it. v 0.7 (7/27/13) - Fixed a lot of the undefined variable messages with the help of spunFin! - May still be some bugs with the new patch and new functions. v 0.65 (7/26/13) - The latest patch (0.74.108135) really broke stuff in my opinion and makes the game hard to play in some cases. There's still stuff not working, and even though the scripts appear to be working fine, the engine continuously throws up tons of "Undefined variable" error messages. - Fixed the end game triggers that the latest patch broke. - Added Random extraction points! (May still be a bit buggy) - Added Parameter to choose whether or not First Aid Kits are required to revive other players. Default is No. - Added vehicles and enemy spawn locations to southern portions of island. - Made enemy heli reinforcement arrival more variable. Version 0.6 (7/22/13) - Added random starting points for player team using Shuko's SHK-randstapos script. - Tweaked the amount of 'hunters' so they will continue to spawn in longer games. Version 0.5 (7/9/13) - First 'Public' Release, tested on Arma 3 Beta version 0.72 - Minor tweaks to AI skill level and amount of hunter helicopters. Credits and Addons - AI Spawn Script Pack by spunFIN - Ambient Radio Chatter by Clarkey - =BTC= Revive by Giallustio - CLY Remove Dead Script by Celery - SHK-randstapos Random Starting Location Script by Shuko - Tons of help from spunFin (AI Spawn Script Pack), Genesis92x (Endless Survival Mission) and everyone on the BI and Armaholic forums. Known Issues - None Mods Needed None - Tested on Arma III Official v 1.04.111668 Installation Extract the .pbo file to your Steam/SteamApps/common/ArmA 3/MPMissions folder. Download link(s) Latest Version: - Steam Workshop Link: Static Loop - Armaholic Link (Thanks Big!): Static Loop
  9. Hey Engima, any update on your remade script? :)
  10. Norrin, question. There a way to have a convoy continuously loop through a circular route?
  11. meatball

    SHK_Taskmaster

    I think I figured it out. I needed to put quotation marks around the task name for some reason when it's in a trigger ON ACT. box, and when it's in script, you don't need the quotation marks. This works for triggers: nul = ["taskname","succeeded"] call SHK_Taskmaster_upd; Yet to test it out in MP yet though.
  12. meatball

    SHK_Taskmaster

    Yeah, I did test it with a hint and it did fire. And I had to add a 'nul = ' before the rest of the code. Worst case I can force it to spawn an additional script to run the Taskmaster_upd, just hoping to avoid the extra step. :)
  13. meatball

    SHK_Taskmaster

    Yeah, it is, was really just an example. Wondering what's the cleanest way to handle a mission with a lot of tasks that the players don't have to finish in any specific order. Can the [[taskname,"Succeeded"],"SHK_Taskmaster_upd",false] spawn BIS_fnc_MP; be called in a trigger's 'On Act." field? Seem to be having issues getting that to fire with a simple trigger watching for an object to blow up.
  14. meatball

    SHK_Taskmaster

    The syntax appears to at least be working right as it runs and updates the task for me. I'll test it with some MP this evening. Thanks! ---------- Post added at 11:56 ---------- Previous post was at 11:35 ---------- One quick followup question as well. Does anyone know if with the script or any BIS commands if there's any way to organize/format the tasks in the Briefing? For example, in a mission with 100 or so unrelated tasks, is there any way to group them together in any way so they don't all just show up in a huge list of 100 tasks? For example, Create four directional 'headings' for the tasks breaking them by what portion of the map the tasks are located. So, if there are 25 in each area when you open up the tasks you just see the four headings, N, S, E, W and then if you click on any of the headings it breaks out the tasks in that heading/area?
  15. meatball

    SHK_Taskmaster

    Alright, so started using this, and I love it. Thanks a ton Shuko! Did have one question. If I set up a task for something simple like gathering intel and then using an object with an addaction, I'm having issues with the updating of the task. So, in my init I have the following: [[ ["task_1","Search for Intel","Search for enemy intel at the small village."], ],[ ["Note1","Hello West",WEST], ["Credits","<br />Made by: Shuko of LDD Kyllikki<br />Contact: shuko@Quakenet<br />www.kyllikki.fi"] ]] execvm "shk_taskmaster.sqf"; Everyone sees the Task as well as the briefing info without a problem. I then drop an object at the location with the following in it's initialization field: this allowdamage false;this addaction ["Gather Intel","gatherIntel.sqf","task_1",1,true,true,"","_this distance _target < 3"]; Everyone can see the "Gather Intel" option when they are within 3 meters of the object and can trigger it. Finally, I have a simple script called "gatherIntel.sqf" in my root folder that's just this: _task = _this select 3; [_task,"succeeded"] call SHK_Taskmaster_upd; Seems to work with the caveat that only the person that is the host/server seems to be able to actually run that call because the update will only happen when that person does the addaction. Any thoughts?
  16. meatball

    [MP | COOP 2-8 | WIP] Static Loop

    Due to the amount of changes with the DEV version, I don't test or try to keep the mission up to date with the DEV version. My guess is it's probably something related to the BTC Revive script. When the new official patch hits later in the week I'll test the mission again and try to fix anything that has popped up.
  17. Engima, from what I can tell, waves are automatic based off of current wind and lightning is based off of overcast. So if you can figure out how to handle overcast, rain, fog and wind, I think you're most of the way there. At least until BI comes up with updates to it.
  18. Doh...heh, mixed that up. Fixed. Thanks @tortu
  19. Engima might be coming in to save the day. :)
  20. Woohoo! Looking forward to seeing it.
  21. It does, but it won't start immediately, but it should start raining relatively quickly (depending on your overcast/rain settings) ---------- Post added at 20:28 ---------- Previous post was at 20:17 ---------- The only place I've found simulWeatherSync to help is on loading the initial weather/script. And it definitely is required. If you start a mission with the following script: skiptime -24;86400 setOvercast 1;skipTime 24; You will get a dark dark sky, little sun, but not a cloud in the sky. As soon as you add the simulWeatherSynch; under the last skiptime the sky starts dark, little sun, and loaded with clouds.
  22. Here's the main issue. When you have a mission in the editor and export it you will actually see both missions in the mission list. The white one is the export .pbo that takes all the mission files/folders and compresses them into one file, the blue one is the full mission/editor with all the individual files/folders. The problem is, when you hit 'preview' in the edit mode, for some crazy reason, it doesn't load the 'blue' full file/folder version, it loads the pbo. So you're edits are there, but you're loading the older mission from the pbo. I've submitted a bug report on it if you want to go vote it up. In the meantime, the only workaround is to delete the .pbo so the preview button loads the right one, or exit out of the editor and manually launch the 'blue' mission from the mission list.
  23. Figured out a few things, but still experimenting. First, @tortu is right and simulWeathSync seems to do the trick and fix the problem with the mission start not having the correct cloud volume to match the overcast level. This block for starting weather seems to have cleared up the issues with that for me. // Set up starting weather on server and all clients using initial weather values. waitUntil {!isnil "serverWeather"}; skiptime -24; 86400 setOvercast forecastOvercast; 86400 setFog forecastFog; 86400 setRain forecastRain; setWind [forecastWindE,forecastWindN,true]; skipTime 24; simulWeatherSync; Second, I've figured out that the new weather still has the old restriction that you can't do a setOvercast and a setFog at the same time. Ceeeb's comment from the setOvercast biki still seems to be accurate, "Only one script command induced weather change (either setOvercast or setFog) can be happening at a time. Starting a new weather change will immediately halt the current weather change. SetRain changes are independent and can occur simultaneously to a weather change. " I know Enigma had that built into his old Dynamic weather script and I'll have to mess around with figuring out a better way to set server weather and push the changes to clients while not doing setOvercast and setFog changes at the same time.
  24. I think that's because you've got the parameters configured incorrectly. See my response to your third question below. I define the N/S and E/W winds in the paramsArray select and then run random values off those. You only need one value for N/S and one for E/W because the engine allows you to use positive and negative numbers. For example, a positive forecastWindN will blow to the North, where a negative forecastWindN will blow to the south. Review the setWind biki info for more details. That's not how parameters work. I may not be able to explain it well and there's probably better info out there, but in your description.ext file you code in selectable Parameters that the players can select from the unit selection screen. You set up a 'class' called 'Params' that is just an array of values. Each parameter option has values that can be chosen (and a default value) and the chosen value gets places in the Params array. Then you can grab that value for each specific parameter by selecting the correct value out of the 'paramsArray'. I know, confusing. But in my case, I have 6 selectable parameters in my description.ext. The first parameter's value gets stuck in the array at slot 0, the second parameter gets put in the array at slot 1, etc. My Weather parameter you listed above is actually the sixth parameter in my code block, so I have to select number 5 out of the array to get that value and pump that into the weather code. If you have no other parameters, that number would be 0 and you'd need the following code block in your description.ext: class Params { // paramsArray[0] class initialWeather { title = "Initial Weather (Work in Progress - Cloud cover not working correctly on mission start.)"; values[] = {1,2,3,4,5,6,7}; texts[] = {"Clear","Overcast","Light Rain","Heavy Rain","Light Fog","Heavy Fog","Random"}; default = 1; }; }; Then in the randomWeather.sqf just change the: initialWeather = (paramsArray select 5); to initialWeather = (paramsArray select 0); That's probably why you had problem number one. randomWeather.sqf was trying to pull information from an array that either didn't exist, or didn't have enough values. If you don't want the players to have any options and always want the weather to be random, just don't put anything in description.ext and change the randomWeather.sqf to just set the default values to the random ones. Change this block: if(isServer) then { // Make sure the # in the select below matches what # in the order of parameters your initialWeather class is in the description.ext initialWeather = (paramsArray select 5); switch (initialWeather) do{ case 1: {forecastOvercast = 0;forecastRain = 0;forecastFog = 0;forecastWindE = 1;forecastWindN = 1;}; // Clear case 2: {forecastOvercast = .45;forecastRain = .45;forecastFog = 0;forecastWindE = 2;forecastWindN = 2;}; // Overcast case 3: {forecastOvercast = .70;forecastRain = .70;forecastFog = .05;forecastWindE = 3;forecastWindN = 3;}; // Light Rain case 4: {forecastOvercast = 1;forecastRain = 1;forecastFog = .05;forecastWindE = 4;forecastWindN = 4;}; // Heavy Rain case 5: {forecastOvercast = .75;forecastRain = .10;forecastFog = .30;forecastWindE = 1;forecastWindN = 1;}; // Light Fog case 6: {forecastOvercast = .85;forecastRain = .20;forecastFog = .50;forecastWindE = 0;forecastWindN = 0;}; // Heavy Fog case 7: {forecastOvercast = random(1);forecastRain = random(1);forecastFog = random(.20);forecastWindE = (random(14)-7);forecastWindN = (random(14)-7);}; // Random }; To this: if(isServer) then { forecastOvercast = random(1); forecastRain = random(1); forecastFog = random(.20); forecastWindE = (random(14)-7); forecastWindN = (random(14)-7); }; ---------- Post added at 16:34 ---------- Previous post was at 16:26 ---------- Yep, I'm somewhat in the same place as well. At this point I don't think there is any way to fix the cloud coverage issue until BI fixes the problem or changes something with a patch.
×