Jump to content

meatball

Member
  • Content Count

    734
  • Joined

  • Last visited

  • Medals

Posts posted by meatball


  1. Alright, I've run across a strange issue and wanted to see if anyone had any thoughts. I'm using Taskmaster in my latest mission and it's working great. There's over 60 tasks throughout the mission and with Taskmaster I'm able to easily create, update and add tasks on the fly without a problem. I've got one task that's really giving me some issues though and it's not set up any differently than the rest. I'm going to dive a bit into some extra details just so it's apparent what I'm doing.

    So here's the task, there's four bridges on western Altis north of the city of Kavala, the task is to move in and blow up those four bridges. I've got the task defined in my init.sqf as follows:

    ["task_40","Destroy Bridges - Kavala","A major north-south road system <marker name=""task_40"">travels north from Kavala</marker> and crosses four bridges.  <marker name=""B40A"">Knock</marker> <marker name=""B40B"">out</marker> <marker name=""B40C"">all</marker> <marker name=""B40D"">four</marker> bridges to snarl enemy supply and troop transports along the west coast."]
    

    Additionally I've set up a variable in init.sqf : bridges40Down = 0;

    The task shows up in the list fine for everyone. Next I need to watch for the bridges to collapse. Unlike a lot of buildings, bridges need to be handled a bit differently to monitor when they are destroyed. So I have a piece of gameLogic parked on each of the four bridges that sets a variable for the bridge and then sets a secondary variable with the height of the bridge.

    bridge40A = nearestBuilding this;initHeightBridge40A = getPos bridge40A select 2;
    

    I then have a trigger watching each bridge to see when the height of the bridge is no longer the same as the initial height of that bridge with the following condition.

    getPos bridge40A select 2 != initHeightBridge40A;
    

    For the action I have:

    bridges40Down = bridges40Down +1;
    

    Last, but not least, I have one last trigger watching for when all four bridges go down with the following condition:

    bridges40Down == 4;

    Then in the On Action I have:

    nul = ["task_40","succeeded"] call SHK_Taskmaster_upd;"task_40" setmarkertype "hd_flag";"task_40" setmarkercolor "ColorBluFor";
    

    So here's the rub. In a regularly hosted game, when the players blow up all four bridges the task updates and the marker type/color change. When the mission is hosted on a dedicated server on the other hand, I still know that last trigger fires because the marker type/color change, but the Task never updates. I'm at a bit of a loss at this point. All the other tasks are set up in a similar fashion and working fine in mission, even when hosted on a dedicated box.


  2. v0.60/0.61 Released

    Changelog:

    v0.61

    - Disabled some AI debugging hints that had been left on.

    v0.6

    - Updated the starting locations. There are now 3 Insertion points available, north on Atsalis island, south on Monisi island, and west near Savri island. All gear is located on Atsalis, but you can teleport from island to island using the flag pole there and your action menu and step off from any of the island with boats available on each.

    - Some bug fixes and tweaked missions.

    - Fixed a problem with some of the militarize/caching not functioning properly.

    - Unlocked most of the civilian vehicles on the map for players to 'liberate'.

    - Made ambient forces a bit more aggressive, but dropped the number of patrols around the players. (Thanks for the suggestions Shadow.D.)

    Known Issues:

    - Problem with the "Destroy Bridges" mission in Kavala. You can destroy them and the marker will update on the map showing it's succeeded, but you will not get a pop up saying it's succeeded and the task will not check itself off. Seems to be an issue with the way bridges are 'destroyed' and I'm working on it.

    - Many missions still not fully tested in MP/Dedicated and my not work as intended.

    - Players will experience a few minutes of lag as mission start as AI is setup and cached.

    See updated initial post for full information and download links.


  3. Funny thing...I tried this exact same thing on the bridge on south Altis near Edessa and for some strange reason, when I'm on a dedicated server, the trigger fires immediately on that bridge, yet it doesn't fire with the exact same game logic/triggers for the bridges near Kavala.

    So, I have a game logic parked right next to the Edessa bridge with the following "bridge46A = nearestBuilding this;initHeightBridge46A = getPos bridge46A select 2;"

    And then a trigger that fires on "getPos bridge46A select 2 != initHeightBridge46A;"

    Why the trigger will fire right on mission start only in a dedicated server and not when locally hosted. And why just that trigger and not the other ones in Kavala go is beyond me. :)


  4. Hey guys, quick question on using simpleCache. Is there any type of limit to the # of militarize/fill houses that can be cached? Running into a problem with a larger mission of mine using it. I have a _lot_ (35) of militarize scripts that spawn around a bunch of locations on Western Altis. Have them all set to run on 'isServer' triggers and spaced out over about 90 seconds. I can actually see the militarize scripts spawn all the correct units around the proper locations.

    Then at about two minutes I have another 'isServer' trigger that runs the simplecache command for all of the militarize zones and it does cache all the units and they disappear. Here's the actual trigger action:

    nul = [[1,2,3,5,8,10,12,14,15,16,17,19,20,21,22,23,24,25,28,30,31,32,34,36,37,38,39,40,41,44,45,47,48,50,51],[fc1,fc2,fc3,fc4,fc5,fc6,fc7,fc8,fc9,fc10],1000,true,true] execVM "LV\LV_functions\LV_fnc_simpleCache.sqf";
    

    At that point, if I close to within the range (1000m), the cached units just never come back. I've tried it on both local hosted and dedicated server setups and see the same issue on both, and I've tried both true/false settings on the keep count variable and the MP flag both with the correct player unit names in the unit array.

    Not sure what else it could be, anyone have any thoughts?


  5. Here's some really basic scripts you can use for init.sqf to handle both JIP/Non JIP for time (assuming you have the info for selection of time in your class Params in description.ext) that has been working fine for me.

    // JIP Check (This code should be placed first line of init.sqf file)
    if (!isServer && isNull player) then {isJIP=1;} else {isJIP=0;};
    
    if(isJIP == 0) then {
    //Non JIP players code
    curTimeHour = (paramsArray select 2); //---Read the Time
    if (curTimeHour == 24) then {
    curTimeHour = floor(random 24)};
    setDate [2035, 7, 4, curTimeHour, floor(random(30))];
    } else {
    //JIP players code
    waituntil {!isnull player};
    
    };
    

    JIP players will just synch naturally on connect with the server time.


  6. Yeah, I am delaying the JIP players code runs with a "waituntil {!isnull player};". I've been messing around with publicVariables and the sort. Even tried to force JIP players to use "respawn_west" as the spawn location because that gets moved to the actual starting point without luck so far. I'll get it eventually. :) I'm wary to mess with forcing it to happen on Spawn as I'm using BTC revive and I believe that uses the spawn calls as well.


  7. That's actually not that difficult to do and I have it in all my missions. Simply add another parameter to your description.ext class Params section:

       // paramsArray[1]
           class TimeofDayHour {
              title = "Time of Day Hour";
              values[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
              texts[] = {"00:00","01:00","02:00","03:00","04:00","05:00","06:00","07:00","08:00","09:00","10:00","11:00",
              "12:00","13:00","14:00","15:00","16:00","17:00","18:00","19:00","20:00","21:00","22:00","23:00","Random"};
              default = 7;
    

    Then in your init.sqf add the following code:

    curTimeHour = (paramsArray select 1); //---Read the selected time from the time parameter
    if (curTimeHour == 24) then {
    curTimeHour = floor(random 24)};
    setDate [2035, 7, 4, curTimeHour, 00];
    

    That's it, and you'll have selectable times. The only thing to be wary of is that you only want that to only run for players that are originally connected and not JIP (Join in Progress), if you also run that init.sqf code for JIP players, they'll be out of synch because their time will get reset to the one set in the parameters while the mission may have progressed a few hours since the other players started. Search the forums for JIP/nonJIP code in init.sqf or just rip apart the pbo's for one of my missions and see how I do it :)


  8. There are no drastic transitions that I've seen at all in mine. The only time I use skipTime at all is at mission start and the players don't see any changes, they just start with the proper starting weather. Check out the script and see if it fits what you need. During missions everything just transitions slowly over time and I've played 4+ hour missions and never noticed any choppiness or drastic changes.


  9. randomWeather Script



    Random and Player Selectable Weather for SP/MP Missions

    by Meatball

    randomWeather.jpg

    Description:

    A simple/single script that allows you to add random weather for any SP/MP mission with the capability for players to choose initial weather settings.

    Features:

    - Server will create random and dynamic weather forecasts every 15 minutes and synchronize with clients.

    - Parameters available to change initial weather settings.

    - Demo Mission available to show weather in action.

    Installation:

    1) Copy the 'randomWeather.sqf' file into the root of your mission folder.

    2) Add the following to your init.sqf so it will run on the server and all clients.

    execVM "randomWeather.sqf";
    

    3) Add a 'parameter' in your description.ext file to the 'class Params' section:

    class Params
    {
    // paramsArray[0]
          class initialWeather {
             title = "Starting Weather";
             values[] = {1,2,3,4,5,6,7};
             texts[] = {"Clear","Overcast","Light Rain","Heavy Rain","Light Fog","Heavy Fog","Random"};
             default = 7;
          }; 		
    };
    

    NOTE: If you have multiple parameters in your class Params section and you do not put initialWeather as the first parameter, you must update Line 33 in your randomWeather.sqf file "initialWeather = (paramsArray select 0);" to 'select' the correct parameter number. Remember that 'selecting' from the paramsArray always starts at 0 for the first defined parameter and goes up from there. So if your initialWeather parameter is first in the class Params section, the default "initialWeather = (paramsArray select 0);" will work. If it is second in the list of class Params you'd need to change it "initialWeather = (paramsArray select 1);" and so on. For more information on Parameters, please see the description.ext biki

    Changelog:

    v0.8

    - Public Release

    Credits & Thanks:

    - Everyone here on the forums for the support and encouragement to figure out the A3 weather.

    Latest Version:

    - Armaholic Link (Thanks Big!): randomWeather Script


  10. NOTE: This mission is now part of the

    "Altis on Fire" Campaign. Please check out the AoF campaign thread for more information and support!

    Altis Force Recon: West

    COOP 2-10 Players

    by Meatball

    AltisForceReconWest.jpg

    Description:

    The invasion of Altis has begun! The 2nd Reconnaissance Battalion of the USMC 2nd Marine Division has been staged to support the larger invasion of Altis. The Force Recon Company of 2nd Recon Battalion has been sent in as the spearhead to create chaos, confusion and destruction throughout western Altis.

    Features:

    - Over 61 Missions/Sub Missions with randomized AI for long term replayability for 2 - 10 players!

    - Parameters available to change number of enemies (based on amount of players), enemy skill level, weather, time of day, and ambient Civilans

    - Headless Client support and auto detection.

    - Unlimited player revives, but player must be revived by other players.

    Installation:

    - Extract the .pbo file(s) to your Steam/SteamApps/common/ArmA 3/MPMissions folder.

    Changelog:

    v 0.91

    - No longer need to search through the huge task list to find task information when looking at your map. Simply click near the marker on your map and the task information will be displayed!

    - Tweaked VAS Box to limit available gear to Blufor equipment.

    - Added a Parameter to allow disabling of the VAS. Will limit roles to default loadouts.

    - Continued balancing of AI in an attempt to remove some of the AI load from the server.

    - Added in a few 'surprises' for players.

    - Tweaked the out of bounds triggers.

    - Few task and mission fixes.

    v0.9

    - Headless Client Support and auto detection now built in! To use a Headless client, load up the mission, connect to the mission as an admin and then connect the Headless client. The HC should connect to the Civilian Headless Client Slot. NOTE: If the HC crashes/disconnects during mission, you will need to restart the mission and reconnect the HC for AI to work properly.

    - New 'Recon Engineer' role should be able to handle all of your repair needs.

    - Players will now air drop at the Central Altis step off point as opposed to just being teleported there. Remember to open your chute!

    - JIP players can now air drop on the rest of the team as opposed to having to grab a boat and try to meet up with the team.

    - Added in parameter to turn ambient Civilians on/off as I found they were actually causing a decent hit on larger game FPS counts. Default setting is Off.

    - Added in Zealot's Civilian Vehicle Spawn script to add randomly spawned civilian vehicles into towns & cities.

    - Multiple AI spawning/caching improvements to speed up spawn and caching speeds.

    -Added in a handful of new missions and random events to the mission.

    - Lots of task and mission fixes.

    - AI balancing adjustments.

    - Removed edits to the base loadouts for each role since VAS is available for players to loadout any way they wish.

    v0.8

    - New starting location of "Central Altis" available that allows the team to step off inland. Be warned that choosing this starting location (from the flagpoles) is a ONE WAY TRIP and you cannot return the island starting locations once you are dropped inland.

    - Added in win conditions if someone completes all the tasks.

    - Added in new random events that occur during the mission.

    - Updated to VAS 2.2 and tweaked the VAS box contents.

    - Continued work to tweak AI balance and server FPS issues.

    - Various task and mission fixes and tweaks.

    v0.7

    - Replacement of old supply crates and implementation of Virtual Ammobox System (VAS) by Tonic. VAS boxes are located on each starting island.

    - Swapped out old cleaner script with new Repetitive Cleanup Script by Aeroson

    - Fixed problem with "Recon Ifestiona" mission. You will now fail the mission if you destroy any of the enemy vehicles prior to observing them all.

    - Added in a timed events/tasks including supply drops, naval artillery support and more caches that may occur during the mission.

    - Further tweaks to streamline AI creation and caching.

    - Minor bug fixes and tweaks to some objectives.

    v0.65

    - Fixed problem with "Destroyed Bridges" mission.

    - Some updates to streamline AI Enemy and Civilians. Particularly around lag/fps hits caused at the beginning of the mission caused by enemy AI creation and caching.

    - Minor tweaks to some objectives.

    - Updated to newest version of BTC Revive (0.96)

    v0.61

    - Disabled some AI debugging hints that had been left on.

    v0.6

    - Updated the starting locations. There are now 3 Insertion points available, north on Atsalis island, south on Monisi island, and west near Savri island. All gear is located on Atsalis, but you can teleport from island to island using the flag pole there and your action menu and step off from any of the island with boats available on each.

    - Some bug fixes and tweaked missions.

    - Fixed a problem with some of the militarize/caching not functioning properly.

    - Unlocked most of the civilian vehicles on the map for players to 'liberate'.

    - Made ambient forces a bit more aggressive, but dropped the number of patrols around the players. (Thanks for the suggestions Shadow.D.)

    v0.5

    - Expanded the operational area to all of western Altis and added in a huge amount of missions. Now up to 60 missions/sub-missions!

    - Added an AR/AAR to give the recon team some punch.

    - Added Satchel charges to starting kits and boxes for bigger booms.

    - Added a secondary starting location for players off the south coast. Available as a choice in the parameters.

    - Multiple bug fixes/tweaks.

    - New Name: 'Altis Force Recon: West' in case I ever get motivated to do an East version of the mission.

    v0.3 Alpha

    - Multiple bug fixes/tweaks.

    - Added about half a dozen new tasks/sub missions.

    - Updated starting player backpacks and gear carried to better match long range recon goals.

    Known Issues:

    - Players will occasionally lose their ability to revive or be revived unless they disconnect/reconnect to the server. Bug reported to BTC Revive script writer, Giallustio.

    - If you hijack a vehicle from a defended area and drive outside of the caching range, the vehicle may despawn. Bug reported to AI Spawn Script Pack writer, spunFin.

    Credits & Thanks:

    - AI Spawn Script Pack by spunFIN

    - =BTC= Revive by Giallustio

    - Civilian Vehicle Spawn by Zealot

    - Headless Client Auto Detector by elec

    - MAD Ambient Life by MAD T (Based on TPW's Work)

    - Repetitive Cleanup Script by Aeroson

    - SHK Taskmaster Script by Shuko

    - SLP Spawning Script by Nomadd

    - Virtual Ammobox System (VAS) by Tonic

    Latest Version:

    - Armaholic Link (Thanks Big!) - Altis Force Recon: West


  11. Thanks. I've used Shuko's random starting position scripts before. I've been able to use that as a template for making it work by adding this to my Params classes description.ext

    // paramArray[4]
    	class startingLocation {
    		title = "Starting Location?";
    		values[] = {0,1};
    		texts[] = {"Atsalis (North)","Monisi (South)"};
    		default = 0;
    		};
    

    And then the following in my init.sqf:

    _startingLocation = paramsarray select 4;
    "respawn_west" setmarkerposlocal getmarkerpos (str _startingLocation);
    if (_startingLocation == 1) then {
    private "_fncMove";
     _fncMove = {
       private ["_dir","_dst","_obj","_new","_old"];
       _obj = _this select 0;
       _old = _this select 1;
       _new = _this select 2;
       _dir = ((getpos _obj select 0) - (_old select 0)) atan2 ((getpos _obj select 1) - (_old select 1));
       _dst = _old distance _obj;
       _obj setpos [((_new select 0) + (_dst * sin _dir)),((_new select 1) + (_dst * cos _dir)),(getpos _obj select 2)];
     };
       _oldPos = getmarkerpos "0";
       _newPos = getmarkerpos "1";
     [player,_oldPos,_newPos] call _fncMove;
    };
    

    Seems to work great with the exception of JIP players end up at the default location no matter what...


  12. I tried the old methods, grouping the trigger to the bridge and a few other tricks but nothing seems to work.

    The bridge when destroyed still seems to register.

    Yeah, I've done that in the past, but there's a major issue with that. When you group a trigger to a building/object it groups it to the object ID #. And I've noticed that almost every patch, the ID's of the buildings change, which breaks all those triggers and they have to be redone. That's why I've found that using nearestObject with the object class name works the best, because that doesn't generally change from patch to patch.

    If you look in the config viewer there appears to be 4 bridge classnames. "Land_Bridge_01_PathLod_F", "Land_Bridge_Asphalt_PathLod_F", "Land_Bridge_Concrete_PathLod_F", "Land_Bridge_HighWay_PathLod_F". Setting the nearestObject to any of them but the Highway one immediately fires the trigger, and with the Highway one the trigger does not fire, which leads me to believe that that is the correct class for the bridge. I'm just not sure why the !alive trigger won't fire then when I do destroy the bridge.


  13. Trying to figure out how to fire a trigger based on the destruction of a bridge and the few old threads I've found don't seem to work. So the bridge in question is on the Altis map between Kavala and Aggelochori. Looking at the object ID's there appears to be two ID's associated with the bridge. So I've set up a game logic object next to each ID giving each object a name with the following Init:

    bridgeA = nearestObject [gl_bridgeA,"Land_Bridge_HighWay_PathLod_F"];
    

    I then have a "!alive bridgeA" that spawns some debug text.

    Through trial and error I figured out it was the Highway bridge because the other Bridge objects would fire the trigger before the I even blew up the bridge. But...when I do blow up the bridge, the !alive trigger never fires even though I see the bridge collapse.

    Any thoughts?

    Man, it sure would be nice if there was an easy way to translate object ID's from the editor into object class names...


  14. Satchel does 2000, explosive 1250.

    You would think a satchel would do at least double or triple what a plain charge does.

    I have been trying to find a way to harden a target..like small bunker and make it take X number of satchels to blow it up completely.

    Any methid for doing this? I know its a little off subject but its kinda , sorta related.

    I can think of a kludgey way to do it. Figure out how many satchels would normally blow it up. You can set up a game logic near the bunker object using nearestObject to give that specific building an object name. Then set up a trigger to watch the damage on that object and when it gets to a certain point, reset the object to full health with setDamage.

    So, let's say for example you have a building that can take 8000 damage (4 satchels) and you want it to hold up until 12000 damage (6 satchels) are used. After you have the game logic set up to assign the building an object name, set up a trigger to watch for "(damage objectname)>= 0.5", and on it's actions have it do a "objectname setDamage 0;"

    What should happen is as soon as the object hits 4000 damage (2 satchels worth), the trigger will reset it back up to 8000 and it will need 4 more to blow it up.

    Just takes a bit of experimenting to get things right.


  15. I've been trying to figure out the damage power of the explosive charge and the satchel and not getting very far and just leading me to more questions.

    1) I can't seem to see much of a difference in the power of satchels vs. charges. For example the wind turbines on Altis take 3-4 satchels or charges to come down.

    2) Does anyone know if placement of the explosives has any bearing on what it does to an object?

    3) Does anyone know if there's any type of force multiplier for multiple charges at once vs. single charges multiple times? As in, if you blow up two at once, will it deliver the same as one by itself, and then another one by itself?

    4) Damage has definitely been dropped on them or object damage soaking has gone up. You used to be able to knock down radio towers with 1-2 charges, now they take 3-5.

×