Jump to content

atmo

Member
  • Content Count

    82
  • Joined

  • Last visited

  • Medals

Everything posted by atmo

  1. Hi guys, What would be the best way to create a player specific variable at runtime? It might be better if I explain better like so; I want to spawn a "Land_BagFence_Short_F" for the player to rest his weapon on when in a building so that he can stand back from a window and shoot through a 'bolt hole' but I only want to spawn one, and each time he spawns another the previous one will get deleted. (He can also move it around and place it at will). So was thinking in multiplayer I would have to have a unique name for each player's sandbag. eg Player1Bag, Player2Bag... but obviously depends on the ID of the player... the script essentially is (from an addaction) deletevehicle bag; // delete the previous one dropped bag = "Land_BagFence_Short_F" createVehicle position player; bag attachto [player, [0, 1, 0.5]]; bag setVectorDirAndUp [ [1,0,0],[0,0,1] ]; detach bag; I want to initialize 'bag' to be unique for each player... bagplayer1. How do I do this? Or is there a much easier way I completely missing? Also; how do I make it just an outline of a bag until he drops it - therefore not being a mobile shield! Atmo
  2. I might try to find out as I have so much time in isolation..... I am interested in this because of this topic.. not just trolling.. but that said, I have five days in work from tomorrow, so next week! Atmo
  3. Also, worldToScreen would work I guess (^^ @Chewz ) Just test the base position and see if it's on the screen. I wonder which is the fastest method?
  4. The only one I know of which may be helpful is 'sunOrMoon' (https://community.bistudio.com/wiki/sunOrMoon) but I suspect you have already seen that. I am not sure of the number it returns. Atmo.
  5. I have a flag with a custom sector script which I animate the flag with [_area getVariable "flag", _sectorScore/100, 1] call BIS_fnc_animateFlag; where I've already set the 'flag' variable.... and then change the texture of the flag with I have spent quite a lot of time on the SectorModule but it didn't quite do what I wanted (can't lock and unlock areas depending on what they are connected to etc) so have made my own script. Hope above may help somehow but to raise the flag I would use [_area getVariable "flag", 1, 1] call BIS_fnc_animateFlag; or something similar.... It works well in MP. Atmo
  6. @devildog664 I've tried various things. What we did find was that a VR man can be changed including his skin... https://forums.bohemia.net/forums/topic/220418-create-see-through-object-or-ghost/?tab=comments#comment-3325182 There are lots of textures you can use. I tried using a glass window to some effect but it's not quite perfect. In A3\Data_F\ look for all the *.rvmat textures... eg mirror.rvmat default.rvmat and they are hidden in other folders to.. A3\Structures_F\Data\Windows\window_set.rvmat Atmo
  7. Thank you @phronk. I was inspired by the Line of Sight tool in Steel Division. It's very cool. I'll keep tweaking it to see it I can come up with a faster method or visually more appealing. I would like to be able to create 'blobs' with smooth filled curves but I notice you can't fill a drawPolygon so it's triangles or similar it seems. Unless anyone has any ideas how to do that, I would be interested.
  8. Hi all, I've made a script to check the visibility of positions on the map. An example mission is here I hope I've done this right. 1 min Video And the code is here for those interested. /* CheckVisibility.sqf Author: Atmo Date: April 2019 Version: 1.0 Params : None Description: Checks the visibility of a 2000m square around the position left clicked on in the map. It checks a position 2m off the ground to the test position. Checks 30m squares - could change the size if you want but it could get intensive... Running script toggles activation of the eventHandlers so running once turns it on, running it again stops it. Use: single left click (Default mode): - shows non-visible areas as red pressing 'alt' and left clicking: - shows visible areas in green. Some examples: 1) From an action in an players init this addAction ["Check Visibility", "fn_CheckVisibility.sqf"]; 2) compile the function from the description.ext and then call it - I'll let you do that. */ if (!hasInterface) exitWith {["fn_CheckVisibility only runs on client"] call BIS_fnc_error}; // Every time script runs toggle eventHandlers private _EHs = missionNamespace getVariable [format["BIS_stackedEventHandlers_%1", "onMapSingleClick"], []]; if (_EHs findIf {(_x select 0) isEqualTo "Atmo_CV_EH"} == -1) then { ["Atmo_CV_EH", "onMapSingleClick", { // _pos, _shift, _alt are parameters of onMapSingleClick EH private _positions = []; // Array of positions tested private _size = 30; // Size of squares (if you change this also change _size in Draw EH) // Set the drawing method for the ctrlEventHandler missionNamespace setVariable ["Atmo_CV_mode", _alt]; // Convert _pos to ASL + 2m private _origin = (ATLToASL _pos) vectorAdd [0,0, 2]; for "_i" from -1000 to 1000 step _size do { for "_j" from -1000 to 1000 step _size do { _testPos = ATLToASL (_pos VectorAdd [_i, _j, 2]); _visibility = 0; // Cast a line to the point _intersectPos = lineIntersectsSurfaces [_origin, _testpos, player, objNull, true, 1, "VIEW", "FIRE"] select 0 select 0; if (isNil "_intersectPos") then { // It didn't intersect anything = it is visible _visibility = 1; } else { // The line hit something - is thing it hit in the area we are testing? if (_intersectPos inArea [_testPos, _size, _size, 0, true, -1]) then {_visibility = 1}; }; if (_alt) then { if (_visibility == 1) then { _positions append [_testPos]; }; } else { if (_visibility == 0) then { _positions append [_testPos]; }; }; }; }; missionNamespace setVariable ["Atmo_CV_Positions", _positions]; }] call BIS_fnc_addStackedEventHandler; // Add draw EventHandler to the map display - Oooo, er, should I use displayAddEventHandler? private _map = findDisplay 12 displayCtrl 51; private _id = _map ctrlAddEventHandler ["Draw", { params ["_control"]; // Get the mode of drawing - false: 'alt' wasn't pressed show not visible in red, true: show visible in green private _mode = missionNamespace getVariable ["Atmo_CV_mode", false]; private _rgba = [[0.5,0,0,0.8], [0,0.5,0,0.8]] select _mode; private _positions = missionNamespace getVariable ["Atmo_CV_Positions", []]; private _size = 15; { _control drawRectangle [_x, _size, _size, 0, _rgba, "#(rgb,1,1,1)color(1,1,1,1)"] ; } forEach _positions; private _pos = missionNamespace getVariable ["Atmo_CV_cursorPos", [0,0]]; _control drawIcon ["#(rgb,1,1,1)color(1,1,1,1)", [0,0,1,1], _pos, 0, 0, 0, "Check Visibility (click +/- alt)"]; }]; // Save the EH id missionNamespace setVariable ["Atmo_CV_DrawEHid", _id]; _id = _map ctrlAddEventHandler ["MouseMoving", { params ["_control", "_xPos", "_yPos", "_mouseOver"]; _pos = _control posScreenToWorld [_xPos + 0.1, _yPos - 0.1]; missionNamespace setVariable ["Atmo_CV_cursorPos", _pos]; }]; // Save the EH id missionNamespace setVariable ["Atmo_CV_MouseMoveEHid", _id]; } else { // The event handler is already there - delete them all //remove onMapSingleClick private _removed = ["Atmo_CV_EH", "onMapSingleClick"] call BIS_fnc_removeStackedEventHandler; // remove Draw eventHandler on the map private _map = findDisplay 12 displayCtrl 51; _map ctrlRemoveEventHandler ["Draw", missionNamespace getVariable "Atmo_CV_DrawEHid"]; _map ctrlRemoveEventHandler ["MouseMoving", missionNamespace getVariable "Atmo_CV_MouseMoveEHid"]; missionNamespace setVariable ["Atmo_CV_Positions", []]; }; (Nice) Comments appreciated - scripters let me know if you see any glaring errors! Atmo
  9. I used lineIntersectsSurfaces because it returns a position, so if the ray hits something within the area you are testing you can say it is visible. It seems pretty fast altogether. The frame rate drop comes with more drawRectangles…. Atmo
  10. Nah ok... Result: 2.275 ms Cycles: 440/10000 Code: someList = allUnits apply {[trigger1 distanceSqr _x, _x]}; someList sort true; closestUnit = (someList select 0) param [1, objNull]; Result: 15.2576 ms Cycles: 66/10000 Code: [allUnits, trigger1] call BIS_fnc_nearestPosition; for about 1500 units.... 😞
  11. OK, for a small amount of units it is 'efficient' but....code wise you first go through the someList array once with the 'apply' that's O(n), then you sort with what I presume is a quicksort which on average works at O(n log n), and in the worst case scenario at O(n^2)… whereas BIS_fnc_nearestPosition goes through the list once O(n).. It may be faster with sorting and then pinching the first element for small numbers (in the tens maybe) but I'm not so sure about larger arrays.... (I will go and test this for fun) but I think the issue really is cleaner code? [allUnits,trigger1] call Bis_fnc_nearestPosition; one line, can accept objects/positions/markers. Shouldn't we encourage safe, clean code which will always work? Some day we may have 1000 people on a server and if 'legacy code' is not going to cripple a function in the future we should be wary maybe? The 'worst case scenario' has an O(n^2) efficiency in it. but I am probably picking hairs..An interesting discussion. Atmo 🙂
  12. Does BIS_fnc_nearestPostiion do the job? https://community.bistudio.com/wiki/BIS_fnc_nearestPosition Only one pass through the data.. no sorting...etc
  13. Edit ....Oh wow, necrothreading.... 1 year exactly....sorry but.. Although not answering your question specifically.... The issue I have found is that the 'string' part can't have any ' " in it. You can set up some code in the missionNameSpace such as missionNameSpace setVariable ["myTag_SomeCode", {hint "Hello"; hint "Goodbye";}]; then _text = "<execute expression = 'call myTag_SomeCode' >Long line of text which you can click goes here OK? </execute>"; player createDiaryRecord ["mySubject", ["myTitle", _text]]; and that works from the diary in the map.. haven't tried within a task... I may have missed a trick with the code as a string in the tag... it never seems to want to work if you have any ' or " characters in it but, as I say, I might be missing something simple here. I know I'll call up some superusers! @killzone_kid, @Larrow? Any ideas? (and the rest of you!) Atmo
  14. Yes, @pierremgi The issue I think I noticed was that sometimes, as above, objects seem to be their own crew..... This self referencing, I think, is the crux if the problem, but it seems to be able to delete <Null Objects> (thank god!) So the solution I have shown to work is in the first pass DeleteVehicleCrew - this will delete them *on the next frame* so you wait a bit and then *deleteVehicle*… Of course it shouldn't matter and you do it all together it will just wait until the next loop of deleteVehicle to delete the ones without a crew. (then the pd3 *will* be deleted). As an aside you obviously can control what and who gets deleted you can put a timestamp on the object or test how far it is from a player etc before trying to delete it.... in "Killed" EH // Set a time killed variable onto the killed unit. // We can use this in our cleanup script. _killed setVariable ["TOD", Servertime]; // TOD = Time Of Death then // Dead { _TOD = _x getVariable ["TOD", 0]; // Time Of Death - variable added in the 'Killed' Event Handler. //diag_log format ["allDead: %1, class %2, TOD %3, %4", _forEachIndex, typeOf _x, _TOD, _serverTime - _TOD]; if (_serverTime - _TOD > 600) then { {(vehicle _x) deleteVehicleCrew _x} foreach crew _x; }; //_netID = _x call BIS_fnc_netId; //_object = _netID call BIS_fnc_objectFromNetID; //diag_log format ["allDead: %1, class: %2, netID %3, object %4, crew %5, vehicle %6", _forEachIndex, typeOf _x, _netID, _object, crew _x, vehicle _x]; } forEach allDead; // MUST pause - each deletion above is done *next* frame (only if we really want it to show - obviously in the next pass it would delete it....just that *at least one frame must have passed for it to be deleted....*) sleep 1; // Second pass - now delete the vehicles. { deleteVehicle _x; } forEach allDead; etc etc.. that bit is trivial. Atmo
  15. Hi all, I have left a dedicated server running overnight for testing purposes and during the game (AI fight AI) I have logged some numbers. It seems that the AllDead and AllDeadMen collections just keep on getting bigger and I can't delete them with {deleteVehicle _x} forEach AllDead(men) For example in my .rpt file I have at the beginning of the game: 1:16:15 "------- 30.127 secs ------------------------------------------------------------" 1:16:15 "DEBUG: fps: 48.7805" 1:16:15 "DEBUG: AllUnits: 54" 1:16:15 "DEBUG: AllGroups: 23" 1:16:15 "DEBUG: AllVehicles: 16" 1:16:15 "DEBUG: AllDead: 1" 1:16:15 "DEBUG: AllDeadMen: 1" 1:16:15 "DEBUG: Scripts: [3,2,0,0]" 1:16:15 "DEBUG: Scripts: and after 8 hours or so I have: 10:40:07 "------- 33856 secs ------------------------------------------------------------" 10:40:07 "DEBUG: fps: 48.4848" 10:40:07 "DEBUG: AllUnits: 293" 10:40:07 "DEBUG: AllGroups: 102" 10:40:07 "DEBUG: AllVehicles: 5" 10:40:07 "DEBUG: AllDead: 1562" 10:40:07 "DEBUG: AllDeadMen: 1562" 10:40:07 "DEBUG: Scripts: [15,2,0,0]" If I use the console to try and debug using: {diag_log format["%4 Deadmen: %1, %2, %3", _x, typeOf _x, _x getVariable "effects", _forEachIndex]} forEach allDead; and use server exec; I get a report like: "0 Deadmen: O Bravo 1-1:1, O_Soldier_TL_F, <null>" 10:37:10 "1 Deadmen: B Bravo 2-2:3, B_Soldier_GL_F, <null>" 10:37:10 "2 Deadmen: 1aca6761940# 2096805: o_soldier_01.p3d, O_Soldier_AR_F, <null>" 10:37:10 "3 Deadmen: 1acabff95c0# 2098210: o_soldier_01.p3d, O_Soldier_GL_F, <null>" 10:37:10 "4 Deadmen: 1acabb31640# 2103841: b_soldier_01.p3d, B_Soldier_GL_F, <null>" 10:37:10 "5 Deadmen: O Alpha 3-3:1, O_Soldier_AT_F, <null>" 10:37:10 "6 Deadmen: B Alpha 1-1:3, B_crew_F, <null>" 10:37:10 "7 Deadmen: 1acbb588fc0# 2110146: b_soldier_03.p3d, B_Soldier_TL_F, <null>" 10:37:10 "8 Deadmen: B Alpha 4-4:4, B_soldier_AR_F, <null>" 10:37:10 "9 Deadmen: 1ad813b1500# 1813642: b_soldier_01.p3d, B_Soldier_F, <null>" 10:37:10 "10 Deadmen: 1adb814e2c0# 1813645: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "11 Deadmen: 1ad813c18c0# 1813651: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "12 Deadmen: 1ad81549a00# 1813657: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "13 Deadmen: 1ad81594100# 1813666: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "14 Deadmen: 1ad816306c0# 1813687: b_soldier_01.p3d, B_Soldier_F, <null>" 10:37:10 "15 Deadmen: 1ad7c5a8c00# 1813702: b_soldier_03.p3d, B_crew_F, <null>" 10:37:10 "16 Deadmen: 1ad7c625180# 1813729: b_soldier_03.p3d, B_crew_F, <null>" 10:37:10 "17 Deadmen: 1ad7c605340# 1813738: b_soldier_03.p3d, B_crew_F, <null>" 10:37:10 "18 Deadmen: 1ad7c6a1700# 1813756: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "19 Deadmen: 1ad7c5b1300# 1814984: o_soldier_01.p3d, O_Soldier_F, <null>" 10:37:10 "20 Deadmen: 1adf8536b80# 1814987: o_soldier_01.p3d, O_Soldier_F, <null>" 10:37:10 "21 Deadmen: 1ad81601980# 1816394: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "22 Deadmen: 1ad759b1a00# 1816397: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "23 Deadmen: 1ad764d4380# 1816407: o_soldier_01.p3d, O_crew_F, <null>" 10:37:10 "24 Deadmen: 1ad7f858ac0# 1816632: o_soldier_01.p3d, O_Soldier_F, <null>" 10:37:10 "25 Deadmen: 1ad723f4b80# 1816635: o_soldier_01.p3d, O_Soldier_F, <null>" etc up to... 10:37:11 "1548 Deadmen: 1aca7df4280# 2109613: o_soldier_01.p3d, O_crew_F, <null>" 10:37:11 "1549 Deadmen: 1acb72f4180# 2110083: o_soldier_01.p3d, O_crew_F, <null>" 10:37:11 "1550 Deadmen: 1acbb400300# 2110089: o_soldier_01.p3d, O_crew_F, <null>" 10:37:11 "1551 Deadmen: 1aca6f24f40# 2110771: b_soldier_03.p3d, B_crew_F, <null>" I'm also getting a lot of 10:43:26 Server: Object 2:32971 not found (message Type_93) 10:43:26 Server: Object 2:32970 not found (message Type_93) 10:43:26 Server: Object 2:32967 not found (message Type_93) 10:43:26 Server: Object 2:31427 not found (message Type_121) 10:43:26 Server: Object 2:32954 not found (message Type_121) 10:43:26 Server: Object 2:29991 not found (message Type_121) messages. I just can't seem to delete these objects. I have tried finding them with "WeaponHolder", "WeaponHolderSimulated" and "GroundWeaponHolder" but to no avail. I am concerned they would be slowing down my game (although the fps seems fine on the server (DEBUG fps)... but it does drop earlier in the game. Should I be worried? Have I missed something? The ever increasing nature of these make me worry. (Ah - just a thought actually, I do create a lot of vehicles (respawning them) and use createVehicleCrew to crew them - a lot of these objects are those and I haven't added to the remains collector(? Does this really work?) and I may have deleted a few groups before deleting all the dead in the group.... if I run {diag_log format["%4 Deadmen: %1, %2, %3", _x, typeOf _x, group _x, _forEachIndex]} forEach allDead; in the console it produces: 10:50:24 "0 Deadmen: 1ad813b1500# 1813642: b_soldier_01.p3d, B_Soldier_F, <NULL-group>" 10:50:24 "1 Deadmen: 1adb814e2c0# 1813645: o_soldier_01.p3d, O_crew_F, <NULL-group>" 10:50:24 "2 Deadmen: 1ad813c18c0# 1813651: o_soldier_01.p3d, O_crew_F, <NULL-group>" So they all belong to GrpNull.....hmmm. Any clues? I am sort of using this thread as a 'note to self' but if anyone else can chip in I would be grateful! Atmo
  16. Ah, @magicsrp So; finally, I got back to this.. Sorry. It seems you must have a pause between two passes of deleting stuff... [] spawn { while {true} do { scriptName "Cleanup"; sleep 5; _before = count allDead; // First pass - delete all vehicle crews in allDead collection { {(vehicle _x) deleteVehicleCrew _x} foreach crew _x; } forEach allDead; // MUST pause - each deletion above is done *next* frame sleep 1; // Second pass - now delete the vehicles. { deleteVehicle _x; } forEach allDead; diag_log format ["AllDead : %1 : %2", _before, count AllDead]; hint format["AllDead : %1, %2", _before, count allDead]; }; }; I forgot I had done that, I should correct the previous post A test mission is at,,,,Stress Test GC Let me know if it works your end. Sorry about being so late.... so so busy... ! Atmo
  17. You right... I copy and pasted then wrong thing... { {(vehicle _x) deleteVehicleCrew _x} foreach crew _x; deleteVehicle _x; } forEach allDead; I didn't reload the mission just looked through a likely candidate from my folders.... I was in a bit of a rush so my apologies. I do promise to set up a test mission. It isn't going to happened tonight (14th.... jeez)…. Atmo
  18. @magicsrp Hi,, did you try { _x deleteVehicleCrew _x; } forEach allDead; With the remains collector enabled in the mission editor? Running the above once in a while seems to fix the issue. Can't quite find where I put it now but I'll piece something together again and post it for you (maybe tomorrow). Atmo
  19. I probably being stupid again, and I suspect I have missed it already in the forums.. How do I test an object for the presence of an event handler? There seem to plenty of commands to add and remove them... I noticed @Larrow used !( isNil { _x getVariable "HitEH" } ) in a post recently.... Is that the same for all EHs? So reloaded would be "ReloadedEH"? I ask because I am transferring objects from servers to clients/HCs and I am not sure if they transfer with some or all of their respective EHs etc.... I am trying to test this but I would like to ask the community for a comprehensive answer before trying to test every single one.... Atmo
  20. @das attorney @Dwarden @pierremgi @killzone_kid Just to resurrect an old thread. I was still having a lot of trouble with this, but I think I have found the solution....(probably not knowing my luck) I know the wiki has been updated re deleteVehicle and deleteVehicleCrew but I think it should apply to everything, not just vehicles.... When deleting *anything* form the allDead collection you need to use deleteVehicleCrew - even if the class is a kind of man. I found that for some reason some objects have themselves as their own crew. This is especially so when the object is some type of ***.p3d. This makes them self-referential (as far as I understand - and when you use deleteVehicle _x, the next time it tries to find it, it can't find the crew object and so fails. (I reckon ) So when deleting anything... use: { {(vehicle _x) deleteVehicleCrew _x} foreach crew _x; deleteVehicle _x; } forEach allDead; for those who want to here is the output from a test mission where the code is: diag_log "****** DELETING DEADMEN *******"; { _netID = _x call BIS_fnc_netId; _object = _netID call BIS_fnc_objectFromNetID; diag_log format ["allDead: %1, class: %2, netID %3, object %4, crew %5, vehicle %6", _forEachIndex, typeOf _x, _netID, _object, crew _x, vehicle _x]; } forEach allDead; diag_log "****"; { {(vehicle _x) deleteVehicleCrew _x} foreach crew _x; deleteVehicle _x; } forEach allDead; { _netID = _x call BIS_fnc_netId; _object = _netID call BIS_fnc_objectFromNetID; diag_log format ["allDead: %1, class: %2, netID %3, object %4, crew %5, vehicle %6", _forEachIndex, typeOf _x, _netID, _object, crew _x, vehicle _x]; } forEach allDead; diag_log "******************************"; and the out put goes from each cycle.... "****** DELETING DEADMEN *******" "allDead: 0, class: B_Soldier_F, netID 2:1005, object B Alpha 4-1:2, crew [B Alpha 4-1:2], vehicle B Alpha 4-1:2" "allDead: 1, class: O_Soldier_F, netID 2:701, object O Alpha 2-6:2, crew [O Alpha 2-6:2], vehicle O Alpha 2-6:2" "allDead: 2, class: I_soldier_F, netID 2:729, object R Alpha 2-6:1, crew [R Alpha 2-6:1], vehicle R Alpha 2-6:1" "allDead: 3, class: O_Soldier_F, netID 2:1037, object O Alpha 4-1:2, crew [O Alpha 4-1:2], vehicle O Alpha 4-1:2" "allDead: 4, class: B_Soldier_F, netID 2:1053, object B Alpha 4-2:2, crew [B Alpha 4-2:2], vehicle B Alpha 4-2:2" "allDead: 5, class: O_Soldier_F, netID 2:1085, object O Alpha 4-2:2, crew [O Alpha 4-2:2], vehicle O Alpha 4-2:2" "allDead: 6, class: B_Soldier_F, netID 2:625, object B Alpha 2-5:3, crew [B Alpha 2-5:3], vehicle B Alpha 2-5:3" "allDead: 7, class: I_soldier_F, netID 2:298, object R Alpha 1-3:3, crew [R Alpha 1-3:3], vehicle R Alpha 1-3:3" "allDead: 8, class: O_Soldier_F, netID 2:841, object O Alpha 3-3:1, crew [O Alpha 3-3:1], vehicle O Alpha 3-3:1" "****" "allDead: 0, class: B_Soldier_F, netID 2:1005, object <NULL-object>, crew [21859d71400# 1814123: b_soldier_01.p3d], vehicle 21859d71400# 1814123: b_soldier_01.p3d" "allDead: 1, class: O_Soldier_F, netID 2:701, object <NULL-object>, crew [21856e50780# 1813952: o_soldier_01.p3d], vehicle 21856e50780# 1813952: o_soldier_01.p3d" "allDead: 2, class: I_soldier_F, netID 2:729, object <NULL-object>, crew [2185c5a1040# 1813967: ia_soldier_01.p3d], vehicle 2185c5a1040# 1813967: ia_soldier_01.p3d" "allDead: 3, class: O_Soldier_F, netID 2:1037, object <NULL-object>, crew [218565d51c0# 1814141: o_soldier_01.p3d], vehicle 218565d51c0# 1814141: o_soldier_01.p3d" "allDead: 4, class: B_Soldier_F, netID 2:1053, object <NULL-object>, crew [2185644d6c0# 1814150: b_soldier_01.p3d], vehicle 2185644d6c0# 1814150: b_soldier_01.p3d" "allDead: 5, class: O_Soldier_F, netID 2:1085, object <NULL-object>, crew [2185bae90c0# 1814173: o_soldier_01.p3d], vehicle 2185bae90c0# 1814173: o_soldier_01.p3d" "allDead: 6, class: B_Soldier_F, netID 2:625, object <NULL-object>, crew [2185c8f0b00# 1813910: b_soldier_01.p3d], vehicle 2185c8f0b00# 1813910: b_soldier_01.p3d" "allDead: 7, class: I_soldier_F, netID 2:298, object <NULL-object>, crew [21858c44500# 1813727: ia_soldier_01.p3d], vehicle 21858c44500# 1813727: ia_soldier_01.p3d" "allDead: 8, class: O_Soldier_F, netID 2:841, object <NULL-object>, crew [2185b1c5300# 1814030: o_soldier_01.p3d], vehicle 2185b1c5300# 1814030: o_soldier_01.p3d" "******************************" "****** DELETING DEADMEN *******" "allDead: 0, class: I_soldier_F, netID 2:737, object R Alpha 2-6:3, crew [R Alpha 2-6:3], vehicle R Alpha 2-6:3" "allDead: 1, class: B_Soldier_F, netID 2:961, object B Alpha 3-6:3, crew [B Alpha 3-6:3], vehicle B Alpha 3-6:3" "allDead: 2, class: I_soldier_F, netID 2:390, object 2185c0413c0# 1813778: ia_soldier_01.p3d, crew [2185c0413c0# 1813778: ia_soldier_01.p3d], vehicle 2185c0413c0# 1813778: ia_soldier_01.p3d" "allDead: 3, class: O_Soldier_F, netID 2:749, object O Alpha 3-1:2, crew [O Alpha 3-1:2], vehicle O Alpha 3-1:2" "allDead: 4, class: I_soldier_F, netID 2:929, object R Alpha 3-4:3, crew [R Alpha 3-4:3], vehicle R Alpha 3-4:3" "****" "allDead: 0, class: I_soldier_F, netID 2:737, object <NULL-object>, crew [2185c7b1040# 1813973: ia_soldier_01.p3d], vehicle 2185c7b1040# 1813973: ia_soldier_01.p3d" "allDead: 1, class: B_Soldier_F, netID 2:961, object <NULL-object>, crew [2185baf48c0# 1814099: b_soldier_01.p3d], vehicle 2185baf48c0# 1814099: b_soldier_01.p3d" "allDead: 2, class: I_soldier_F, netID 2:390, object <NULL-object>, crew [2185c0413c0# 1813778: ia_soldier_01.p3d], vehicle 2185c0413c0# 1813778: ia_soldier_01.p3d" "allDead: 3, class: O_Soldier_F, netID 2:749, object <NULL-object>, crew [2185c8aca80# 1813979: o_soldier_01.p3d], vehicle 2185c8aca80# 1813979: o_soldier_01.p3d" "allDead: 4, class: I_soldier_F, netID 2:929, object <NULL-object>, crew [2185ba1d240# 1814081: ia_soldier_01.p3d], vehicle 2185ba1d240# 1814081: ia_soldier_01.p3d" "******************************" "****** DELETING DEADMEN *******" "allDead: 0, class: O_Soldier_F, netID 2:354, object O Alpha 1-5:1, crew [O Alpha 1-5:1], vehicle O Alpha 1-5:1" "allDead: 1, class: I_soldier_F, netID 2:877, object R Alpha 3-3:2, crew [R Alpha 3-3:2], vehicle R Alpha 3-3:2" "****" "allDead: 0, class: O_Soldier_F, netID 2:354, object <NULL-object>, crew [218576fc8c0# 1813757: o_soldier_01.p3d], vehicle 218576fc8c0# 1813757: o_soldier_01.p3d" "allDead: 1, class: , netID , object <NULL-object>, crew [], vehicle <NULL-object>" "******************************" with none of the "Can't find object" spam in the log file.... and it seems to be able to delete a <NULL-object> type with out any problems..... In particular notice "allDead: 2, class: I_soldier_F, netID 2:390, object 2185c0413c0# 1813778: ia_soldier_01.p3d, crew [2185c0413c0# 1813778: ia_soldier_01.p3d], vehicle 2185c0413c0# 1813778: ia_soldier_01.p3d" where the .p3d object is it's own crew (and vehicle!)......you can now delete these if you delete the crew and then it becomes a <NULL-object> I'll set up a mission to test this thoroughly but I thought I would post for those interested. And I suspect this is no news at all to anyone! Atmo
  21. Hi All, How do you create a see though object. I understand that you can re-texture (and re-material) objects. I been fiddling in the editor to try to re-texture a man.... this setVariable ["BIS_enableRandomization", false]; this setObjectMaterial [0, "\a3\data_f\default.rvmat"]; this setObjectTexture [0,'#(argb,8,8,4)color(0,0.3,0.1,0.3)']; I'm not sure I fully understand the materials and the #(argb,8,8,4)color(0,0.3,0.1,0.3) statement... with the argb bit what are the 8,8,4..? I know the color bit...are they the size of the texture? What's the 4? Channels? (later: ok, I got it.... ignore me) https://community.bistudio.com/wiki/Procedural_Textures Could any one link me to where this is discussed? I've search forum and wiki.... I want to create a see through object.... man/vehicle etc... Cheers. And thanks in advance... Atmo
  22. Ah, no hiddenselections[] on buildings...
  23. @pierremgi Yes, I found also that with the mirror Material you don't need the Texture at all so { this setObjectMaterial [_x, "A3\Data_F\mirror.rvmat"]; } forEach [0,1,2,3,4,5,6,7,8,9,10]; works well. Haven't tried it on a house yet! <Opens Arma!>
  24. VR entity is maybe what I am looking for, nice one. Thanks. I'm imagining an army of Terminators right now.... It seems the 'glass.rvmat' and 'raindrop.rvmat' don't have enough 'opacity' especially when looking through it to the sky, it just disappears completely. It looks 'ghosty' but doesn't quite do it. I'll keep looking.. does anyone know of a 'smoky glass' material?
×