Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Everything posted by meatball

  1. Think I found a bug, seems to be repeatable, but wondering if anyone else can verify. 1) Set the player invulnerable (player allowdamage false;) 2) Drop the player from height. 3) Don't use/open a parachute... Basically what I've found is you'll hit the ground and stay stuck in the spread eagle parachuting animation. You can throw grenades, switch weapons, etc., but you can't move or change the animation.
  2. meatball

    Bad vehicle type

    Know this is an old thread, but running into this problem as well and I know what's causing it, just can't seem to get around it. For simplicity sake, here's the basic script: _backpack = backpack player; removeBackpack player; sleep 5; player addBackpack _backpack; If the player has a backpack originally, works fine and re-adds the backpack. But, if the player initially did not have a backpack, the game spits out a generic "Bad Vehicle Type" error when it goes to add the backpack for those players. So, I tried to remedy that with changing the last line to: if (!isNull _backpack) then {player addbackpack _backpack;}; // Also tried !isNil here This gets rid of the error message for players without a backpack, but...it doesn't add back the backpack for players that did have one. Any thoughts?
  3. Hey Sol, sure thing, have at! I can almost say Nomads was a bit of an inspiration for Force Recon. I never got to play Nomads, but a few ST friends told me about the basic concept of just having a whole lot of available missions without a set goal and it sounded fun, so I ran with it.
  4. meatball


    Anyone know if it's possible to force the briefing for all players to open up on a specific diary entry or task? Be nice if the briefing could open to a created Situation or Mission diary note by default.
  5. meatball

    Vehicles Spawn Around Map?

    I made some edits to Zealot's script to make it spawn all the civilian vehicles, seemed to work fine for me. // v1c Civilian Vehicles from [sTELS]Zealot if(!isServer) exitWith{}; zlt_civveh_round = 0; zlt_civveh_vehicles = []; zlt_civveh_spawnedloc = []; zlt_rnd_seed = 1; zlt_fnc_random = { private ["_a","_c","_m"]; _a = 75; _c = 0; _m = 65537; zlt_rnd_seed = ( zlt_rnd_seed * _a + _c ) mod (_m); (zlt_rnd_seed / _m) ; }; zlt_fnc_selectrandom = { _this select floor ( ([] call zlt_fnc_random) * count (_this)); }; zlt_fnc_civvehs = { _debug = [_this, 1, false] call bis_fnc_param; _lrange = _this select 2; _cars = _this select 3; _t1 = diag_ticktime; _startpos= _this select 0; _houses = _startpos nearobjects ["House",_lrange]; //_vehmax = _cars; _vehmax = (round ((sqrt (count _houses)) * 0.5)) max 1; _classes = ["C_Offroad_01_F","C_Quadbike_01_F","C_Hatchback_01_F","C_Hatchback_01_sport_F","C_SUV_01_F","C_Van_01_transport_F","C_Van_01_box_F","C_Van_01_fuel_F"]; _vehs = 0; _attemps = 0; zlt_rnd_seed = ((_startpos select 0) + (_startpos select 1) mod 65537); while {_vehs < _vehmax and _attemps < 10} do { _class = (_classes call BIS_fnc_selectRandom); //diag_log ["CV",_startpos, _lrange, _houses]; _house = _houses call zlt_fnc_selectrandom; _housepos = _house modeltoworld [0,0,0]; _newpos = _housepos findEmptyPosition [ 3 , 15, _class ]; _houses = _houses - [_house]; if (count _newpos == 0) then { _attemps = _attemps + 1; } else { _veh = _class createVehicle (_newpos ) ; _veh setvariable ["zlt_civveh", true]; zlt_civveh_vehicles set [count zlt_civveh_vehicles, _veh]; _direction = (random 360); _nearRoads = _newpos nearRoads 10; if(count _nearRoads > 0) then { _road = _nearRoads select 0; _roadConnectedTo = roadsConnectedTo _road; if (count _roadConnectedTo > 0) then { _connectedRoad = _roadConnectedTo select 0; _direction = [_road, _connectedRoad] call BIS_fnc_DirTo; }; }; _veh setdir _direction; _attemps = 0; _vehs = _vehs + 1; if (_debug) then { ["crt"+str(_newpos), _newpos] call zlt_fnc_createmarkerlocal; }; }; }; _t2 = diag_ticktime; if (_debug) then { diag_log str ["civeh.sqf", _t2-_t1]; }; }; zlt_civ_checkloop = { zlt_civveh_notemptyloc = []; { _veh = vehicle _x; _isInVeh = (vehicle _x != _x); // or _veh getvariable ["zlt_civ_round", -1] != zlt_civveh_round if (not _isInVeh or {(_veh getvariable ["zlt_civ_round", -1]) != zlt_civveh_round and _veh isKindOf "LandVehicle"}) then { _dist = 1000; _locations = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], _dist]; _locations2 = nearestLocations [(getpos vehicle _x), ["NameCityCapital","NameCity","NameVillage"], 2500]; { if ( not (_x in zlt_civveh_spawnedloc) ) then { _lrange = 50; _cars = 1; switch (type _x) do { case ("NameCityCapital") : {_lrange = 250; _cars = 7;}; case ("NameCity") : {_lrange = 150; _cars = 3;}; }; _pos = position _x; [ [_pos select 0, _pos select 1, 0], false, _lrange, _cars] call zlt_fnc_civvehs; zlt_civveh_spawnedloc set [count zlt_civveh_spawnedloc, _x ]; // _x setside east; }; } foreach _locations; { zlt_civveh_notemptyloc set [count zlt_civveh_notemptyloc, _x]; } foreach _locations2; if (_isInVeh) then { _veh setvariable ["zlt_civ_round", zlt_civveh_round];}; }; } foreach playableunits; { _pos = [(position _x) select 0, (position _x) select 1, 0]; _ent = ( (_pos) nearEntities [["C_Offroad_01_F","C_Quadbike_01_F","C_Hatchback_01_F","C_Hatchback_01_sport_F","C_SUV_01_F","C_Van_01_transport_F","C_Van_01_box_F","C_Van_01_fuel_F"], 300] ); { if ( _x getvariable ["zlt_civveh", false] and {count crew _x == 0 and fuel _x == 1}) then { deletevehicle _x; }; } foreach _ent; zlt_civveh_spawnedloc = zlt_civveh_spawnedloc - [_x]; } foreach (zlt_civveh_spawnedloc-zlt_civveh_notemptyloc); zlt_civveh_round = zlt_civveh_round + 1; }; while {true} do { //scan loop sleep 3.4; //magic number [] call zlt_civ_checkloop; };
  6. meatball

    =BTC= Revive

    Hmm, I'm not sure what's happened, but suddenly my A3 crashes every time my player gets knocked out ('dies') but before he respawns to be revived. Was working fine last night and I wonder if the hotfix caused any issues. It's definitely something to do with the way BTC handles respawn as I can mess with RespawnDelay in my description.ext and delay the crash on death for as long as I put in for a delay. Anyone else getting any issues?
  7. Believe I figured it out. Basically I had units in game with the this setDamage 1; to kill them to leave a few bodies around, but I'm also using Shuko's moveObjects script to move them around the map. What I'm guessing happened is the mission started, the setDamage on the units kicked in, and while the bodies were ragdolling to the ground, the moveObjects script fired and moved the unit/body elsewhere on the map, which left some sort of stretching graphic artifact on the moved body that actually appeared to be coming from the direction they were moved from. I simply put the units in, and then ran a small script to setDamage 1; to all of them _after_ the move and no more glitches...
  8. Anyone running into a graphical glitch with 'bodies' that are pre-placed in a mission by using 'this setdamage 1;' on them? They seem to be stretched way out and you can't interact with their inventory at all. This seems to have only started since the last patch and does not seem to happen for any bodies from units killed in the actual mission, only for those 'pre-placed' bodies. This also only happens when the mission is hosted on a dedicated server, but not when hosted locally.
  9. Yes, that works to start a game with a specific type of weather, but it doesn't help if you want to allow for random changes in weather from mission to mission or even during a mission. Some more followup to testing. Starting at 0.0, 0 setOvercast 1: Moves up ~ 0.0167/Minute Starting at 0.2, 0 setOvercast 1: Moves up ~ 0.0131/Minute Starting at 0.4, 0 setOvercast 1: Moves up ~ 0.0099/Minute Starting at 0.6, 0 setOvercast 1: Moves up ~ 0.0066/Minute Starting at 0.8: 0 setOvercast 1: Moves up ~ 0.0033/Minute Doing the reverse inverses the numbers (moving from 0.8 -> 0 at 0.0131, etc.) and there's definitely a pattern here. But even with the pattern, there's no way to use it because if you change the transition time, it throws it off. For example, starting a 0 and moving to 1 you get to 0.2 overcast in 20 minutes. Yet...if you toss in the command 1200 setOvercast 0.2;, (1200 seconds = 20 minutes) after the transition you are only up to .066 overcast (0.0033/minute). Le sigh...
  10. So, I did a bit more experimenting and it clears up some stuff, but raises more questions. The speed at which you can up / down in Overcast is directly related to the starting overcast level. The speed will stay consistent the entire time it's going up or down, but that speed will vary based on the starting level. For example: 1) Starting a 0 overcast, 0 setOvercast 1; still goes up about .0167 per minute as I mentioned before. But that stays constant the entire time and you'll reach one in about 60-61 minutes. 2) Starting at .5 overcast, 0 setOvercast 1; goes up just about half at .083. Going from .5 to 1 takes, you guessed it, 60-61 minutes. 3) Starting at .9 overcast, 0 setOvercast 1; goes up at about .00167 per minute (10x slower than when starting at 0) and takes....about 60-61 minutes to reach 1. Starting at 1 and going down works in the inverse with 1 to 0 going the fastest and 0.1 to 0 going the slowest. So, yes, that makes a bit more sense of what it's doing, but it makes it a mess to try to handle scripting of weather.
  11. meatball

    =BTC= Revive

    I don't know if this is a default Arma 3 deal, or something BTC related, but anyone notice that a lot of times if you run up to heal someone, your animation will actually throw you around in front of them? Led to a few deaths as people are trying to heal someone else in a firefight and it throws you in front of their muzzle :)
  12. meatball

    =BTC= Revive

    Working fine for me...just make sure you look over the last page or two.
  13. You need to create them if they don't already exist. By default when you save a mission, the only thing it will save is mission.sqm, everything else you need to create.
  14. Try using something that counts the number of players in the group and compares that to the number of players in the group in the heli. Something like: {_x in evacHeli} count units pgroup >= count units pgroup; This way it doesn't matter how many slots/players are being played.
  15. I could be wrong, but not that I know of. You have to package in pbo and pbo is open. Why do you really care? It's not like any of us are making money off of it and almost all of us are using someone else's scripts in some way, shape or form. If someone saves some time/effort by seeing how you did something, hopefully people will credit you if they use anything. Heck, one of my missions was 'borrowed' by one clan and for a while there wasn't even a mention who had made it. Bugs you a bit, but in all honestly, does it really matter? :) I'm just happy people are playing/enjoying something I made.
  16. meatball

    Arma 3 Headless Client

    Can you guys elaborate on this? I've been using a HC and it grabs the correct slot without a problem every time. Once I dropped forceHeadlessClient=1; into the class info for the HC slot in the mission.sqm and set joinUnassigned = false; in my description.ext, the HC just joins the right slot every time. Noone else can join that slot. Also to verify what a few other folks said, HC's can connect to a passworded server now. Been doing it since 1.10 dropped with no issues.
  17. 20 probably isn't a big deal, but when you start layering that on top of bodies, gear, etc., it adds up. You really should look into some sort of 'cleaner' script.
  18. Has anyone been able to get this to work fully with A3? I've found one problem. Have this as the first line of my init.sqf: elec_HC_detect = [] execVM "miscScripts\elec_HC_detect.sqf"; waitUntil {scriptDone elec_HC_detect}; Also have this as the top line of my "AI Spawning" scripts that are run at the end of of my init.sqf. if(elec_stop_exec == 1) exitWith{}; I'm getting the following results: 1) 'Server' / Game being hosted on a players machine, AI called in my scripts spawn correctly. 2) Dedicated Server with a Headless Client connected, AI called in my scripts spawn correctly. 3) Dedicated Server, no headless client connected. AI called in my scripts never spawn. Anyone run into anything similar, or have any ideas?
  19. meatball

    Make unit invicible

    Check out allowDamage
  20. meatball


    I was digging into the script a bit more and it seems like shk_pos_fnc_getpos.sqf is the key. // In: [position,distance,direction] // Out: position private ["_pos","_dst","_dir","_orgX","_orgY","_posX","_posY"]; _pos = _this select 0; _dst = _this select 1; _dir = _this select 2; _orgX = _pos select 0; _orgY = _pos select 1; _posX = _orgX + (_dst * sin _dir); _posY = _orgY + (_dst * cos _dir); [_posX,_posY,0] Shouldn't I be able to throw an isFlatEmpty check into that somehow so it'll keep checking till it finds a location that's somewhat flat/empty?
  21. Hmm, maybe it's just me, but it still does not appear to limit attachments based on what's in the config.sqf. I have a random guess too. In my case, I'm not limiting items by putting them in the restriction arrays (bottom sets), I'm limiting what's in the crates by putting everything I want in the crate in the limit arrays (top sets). Are you just looking at the restriction arrays to determine what to pull out?
  22. Have a few thoughts that players have given me and trying to figure out if there are some easy ways to handle them through scripting and want to solicit some ideas. 1) NVG's - Selectable parameter to completely remove/disable all NVG's from players and AI. 2) Orienteering - Selectable parameter to remove all GPS' as well as the marker that show the players location on the map. I know the map marker removal is built in if you choose 'veteran' skill level, but I'd like to be able to set that based on a parameter, regardless of the server skill setting. Anyone written anything to do something similar?
  23. meatball


    Yes it does. I've tried setting the 5th parameter to a vehicle (big Green transport chopper), or even just a set distance, 200-300 and it will still do it. My guess is that what's happening is the original check is finding a water location, so it's pulling in and then finding the closest location which is the shore. Basically what I'm doing is setting up an area of units (objects/players) I want to move and throwing in two small objects (pencils). I run the SHK_pos based off an objects I have at the center of Altis, then move the first pencil there. Then I use your move objects to move everything else based off the two pencils :) Not the cleanest, but it works pretty well. Maybe the pencils are so small the setPos on them doesn't care that the 'position' it found is under a rock and throws it there, then moveObjects throws everything around it. Here's the actual script that runs. It moves nine different batches of objects to random locations across Altis. Some include just objects, others move triggeers and markers as well. private ["_startPos","_startPos2","_nukePos","_pickupPos1","_pickupPos2","_pickupPos3","_tmpCheck","_randSide","_opSide","_bluSide"]; // Move Players _startPos = [randCent,random 12000,[0,359],0,[0,200],300] call SHK_pos; startObj2 setpos [_startPos select 0,_startPos select 1,0]; [startObj1,startObj2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; startTrig1 setpos [_startPos select 0,_startPos select 1,0]; startTrig3 setpos [_startPos select 0,_startPos select 1,0]; // Move Nuke Convoy / Material _tmpCheck = 1; while {_tmpCheck == 1} do { _nukePos = [randCent,random 12000,[0,359],0,[1,1500],200] call SHK_pos; nukeObj2 setpos [_nukePos select 0,_nukePos select 1,0]; [nukeObj1,nukeObj2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; _tmpNukeMark = [nukeObj2,(250+(random 100)),[0,359],0] call SHK_pos; "nukeMark" setMarkerPos _tmpNukeMark; if ((startObj2 distance nukeObj2) > 5000) then {_tmpCheck = 0}; }; // Move Depots _randSide = random 2; // Pick Random Spots if (_randSide > 1) then {_opSide = randSide1;_bluSide = randSide2;} else {_opSide = randSide2;_bluSide = randSide1;}; _opDepot1 = [_opSide,random 7000,[0,359],0,[1,1000],200] call SHK_pos; _opDepot2 = [_opSide,random 7000,[0,359],0,[1,1000],200] call SHK_pos; while {(_opDepot1 distance _opDepot2) < 5000} do {_opDepot2 = [_opSide,random 7500,[0,359],0,[1,500],200] call SHK_pos;}; _bluDepot1 = [_bluSide,random 7000,[0,359],0,[1,1000],200] call SHK_pos; _bluDepot2 = [_bluSide,random 7000,[0,359],0,[1,1000],200] call SHK_pos; while {(_bluDepot1 distance _bluDepot2) < 5000} do {_bluDepot2 = [_bluSide,random 7500,[0,359],0,[1,500],200] call SHK_pos;}; _greenDepot1 = [randCent,random 12000,[0,359],0,[1,1000],200] call SHK_pos; _greenDepot2 = [randCent,random 12000,[0,359],0,[1,1000],200] call SHK_pos; while {(_greenDepot1 distance _greenDepot2) < 9000} do {_greenDepot2 = [randCent,random 10000,[0,359],0,[0,500],200] call SHK_pos;}; // Move dummy object csatD1_2 setpos [_opDepot1 select 0,_opDepot1 select 1,0]; csatD2_2 setpos [_opDepot2 select 0,_opDepot2 select 1,0]; natoD1_2 setpos [_bluDepot1 select 0,_bluDepot1 select 1,0]; natoD2_2 setpos [_bluDepot2 select 0,_bluDepot2 select 1,0]; aafD1_2 setpos [_greenDepot1 select 0,_greenDepot1 select 1,0]; aafD2_2 setpos [_greenDepot2 select 0,_greenDepot2 select 1,0]; // Move depots to dummy objects [csatD1_1,csatD1_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; [csatD2_1,csatD2_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; [natoD1_1,natoD1_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; [natoD2_1,natoD2_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; [aafD1_1,aafD1_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; [aafD2_1,aafD2_2,25] execVM "SHK_pos\SHK_moveObjects.sqf"; // Move Markers "csatD1Mark" setMarkerPos getPos csatD1_2; "csatD2Mark" setMarkerPos getPos csatD2_2; "natoD1Mark" setMarkerPos getPos natoD1_2; "natoD2Mark" setMarkerPos getPos natoD2_2; "aafD1Mark" setMarkerPos getPos aafD1_2; "aafD2Mark" setMarkerPos getPos aafD2_2; // Move Pickup Points _pickupPos1 = [randCent,(2000 + (random 10000)),[0,359],0,[0,200],150] call SHK_pos; _pickupPos2 = [randCent,(2000 + (random 10000)),[0,359],0,[0,200],150] call SHK_pos; _pickupPos3 = [randCent,(2000 + (random 10000)),[0,359],0,[0,200],150] call SHK_pos; pickup1 setpos [_pickupPos1 select 0,_pickupPos1 select 1,0]; pickup2 setpos [_pickupPos2 select 0,_pickupPos2 select 1,0]; pickup3 setpos [_pickupPos3 select 0,_pickupPos3 select 1,0]; "pickupMark1" setMarkerPos getPos pickup1; "pickupMark2" setMarkerPos getPos pickup2; "pickupMark3" setMarkerPos getPos pickup3; pickupTrig1 setpos [_pickupPos1 select 0,_pickupPos1 select 1,0]; pickupTrig2 setpos [_pickupPos2 select 0,_pickupPos2 select 1,0]; pickupTrig3 setpos [_pickupPos3 select 0,_pickupPos3 select 1,0];
  24. meatball


    Yeah, I was just thinking it might be easier to throw some sort of 'isFlatEmpty' check in there as well, but it really chokes the process from what I can tell.
  25. meatball


    Hey Shuko, you have any plans of releasing a new version of this? I'm using this in conjunction with your moveObjects script to move players and objectives (objects/markers/etc) to random points on a map. For the most part it works really well, but it'll occasionally pick a bad location and even stick players inside of rocks (often along the shoreline).