Jump to content

TRexian

Member
  • Content Count

    1226
  • Joined

  • Last visited

  • Medals

Everything posted by TRexian

  1. OMFG F'n hilarious. bJTmV0qyz-0 The Rooster Teeth guys, who make Red v. Blue, and now other series, have always been funny. But this... this... it is just so... I was laughing so hard I cried. I mean, I don't even play this game, but we have all probably experienced the same kind of frustration. :)
  2. Update: Ver. 01e available: http://www.mediafire.com/file/moy5e2zmz0h/JTD_ACTON_01e.7z Thanks to the mirrors: Armaholic mirror: - JTD Ambient Civilian Traffic module RC 01e Oh - and we'll just call this a "release" version. :D If something's wrong, I'll just do my best to fix it. No sin in having a hotfix, eh? :D Details/changelog at the bottom. ---------------------- The idea for this was born of the great work BI did on the civilian modules. With civs and vehicles in the same town, it only made sense to have them drive around. (There is a small - VERY small - chance of this when you put the ALICE and SILVIE modules in together, but it wasn't enough for me.) :) So, I developed this. It relies on the ALICE module to spawn the civs and vehicles. I consider this a public release candidate. If there are no issues, I'll just update from here. (Fingers crossed.) Link to download (mirrors are welcome): <<old links removed>> Implementation: Place the ALICE module. Look further down in the module list and find the JTD Ambient Civilian Traffic module and place it on the map. It is optional to then also use the Ambient Civilian Traffic module. Also, some vehicles will have passengers. Also, some vehicles will have AK-47s. :) It probably requires CBA/XEH. And, if you don't have it anyway, you probably should. It *MIGHT* actually be MP compatible out of the box. Should be run on the server, as if it is run on a client, it should exit without doing anything (or more accurately, only execute the substantive parts if it is being run on a server). The package contains signature/key thingies, but I've never built a package like that before, so I may have goofed it up. The installation is a bit tricky - you not only need an addon folder for the pbo, but a userconfig\JTD folder for a hpp that has a bunch of configurable settings. From the readme: Youtube vid: Thanks to: JTD -- DMarkwick -- ReconPathFinder OFPEC SNKMAN for modulizing posts Rommel @ OFPEC for ideas public testing: DTM2801 neokika Master gamawa Chunk3ym4n DTM2801 --------------------------------- Ver. 01e Added ability for mission makers to force settings. By placing a game logic with certain global variables set, it will override the hpp values: JTD_percSpawn = JTD_ACTON_percent; JTD_maxSpawn = JTD_ACTON_max; JTD_maxCargo = JTD_ACTON_maxCargo; JTD_minCargo = JTD_ACTON_minCargo; JTD_civAK = JTD_ACTON_civAK; JTD_civArray = JTD_ACTON_civs; JTD_cars = JTD_ACTON_DEFAULT_vehicles;
  3. TRexian

    Choppers now affect particles :)

    You had me at "toroid-shaped effectors." You had me... at... "toroid." ;)
  4. JTD Building Search script (Updated to version .01g) This is a WIP script that will send members of an AI squad into an enterable building, and sequentially search through the building positions. It was developed in an effort to take advantage of all the enterable buildings that have been introduced into ArmA, and cultivate more of a CQB atmosphere. First - credits: OFPEC - one of the best resources available IMHO Rommel for CBA function searchNearby Tophe for random house patrol --- http://forums.bistudio.com/showthread.php?t=76423 Seriously, this script began by borrowing heavily from Rommel's CBA function, and was directly inspired by Tophe's house patrol. Any direct benefit people may get from this is really a product of those guys' work. Second - methodology: The script (which can be called as a function) receives at least one parameter - the group - with options for 3 other parameters - search distance, nearest building or a random one, and an initial position for the search for buildings. The script will create an array of buildings, select one, then create a waypoint for the group to a spot near that building. Upon reaching the waypoint, the leader of the group will remain outside, while members of the group enter the building, in combat mode. If there are more building positions than searchers, all available units other than the leader will enter the building. The searchers will basically trail through the building - not bound/overwatch. When the last building position is reached, the searchers will rejoin the leader. Third - a vid of a slightly older version of the script (the searching starts about a minute into it): lc0ZFdGldzE Finally - a download: http://www.mediafire.com/file/e6wuq2e5c7v8tt6/JTD_buildingSearchPackage_0124.7z (ArmaHolic) http://www.armaholic.com/page.php?id=13130 And the script itself (somewhat heavy on comments): /* JTD Building Search Script by Trexian Purpose: have an AI squad search a building. Implementation: executed from trigger or script (can be as a function) ooooooooooooooooooooooooooooooooooooooooooooooooooo Usage: Requires 1 parameter, with an option for 4 more: group(, searchRadius , "NEAREST" or "RANDOM", initial position, include leader, occupy building) group = group that will be searching the building (required) searchRadius = number that is radius around the leader to use to generate the array of buildings (default is 50) (optional) NEAREST/RANDOM = string that tells the script which building, either the nearest to the position or a random one (default is random) (optional) initial position = position array or object around which to search (default is leader's position at script execution) (optional) include leader = boolean, where 'true' includes the leader in the search (default is false, but if group has 2 or less, default is true) (optional) occupy building = boolean, where 'true' means that the group will stay in the building positions (default is false) ooooooooooooooooooooooooooooooooooooooooooooooooooo Credits: OFPEC Rommel for CBA function searchNearby Tophe for random house patrol Testers/Feedback: MadRussian GvsE Kremator Manzilla ooooooooooooooooooooooooooooooooooooooooooooooooooo Version: 01a POC (addWaypointHousePosition doesn't work) 01b used CBA searchNearby by Rommel for commandMove instead of waypoints 01c Improved methodology 01d - release version Improved the rejoining of the searchers Added ability to specify initial position of building search 01e Added optional parameter to include leader in search, also an option to occupy the building More robust error-checking Can pass object instead of intialposition Shuffles searcher array 01f - release version Added server check Added global JTD_lockedSearchGroups Added time check to make sure script ends at some point 01g - release version Added JTD_bldgsrchPath as variable for Manzilla Array functionality wrapper ooooooooooooooooooooooooooooooooooooooooooooooooooo TTD: ooooooooooooooooooooooooooooooooooooooooooooooooooo */ if !(isServer) exitWith {diag_log text "Not server, exiting building search.";}; //diag_log text "JTD bldg search activated"; private ["_grpFM", "_FunctionsManager", "_group", "_leader", "_ldrPos", "_behaviour", "_srchRad", "_whichOne", "_initialPos", "_andOne", "_occupy", "_bldgArray", "_tempArray", "_bldgLoc", "_bldgSelect", "_searchersT", "_searchers", "_searcherCount", "_s", "_checkTime", "_wpArray", "_currWP", "_wpCnt", "_d", "_t", "_b", "_bldg", "_bldgPos", "_bldgCnt", "_nameMarker", "_marker", "_bldgBB", "_wpRad", "_wp", "_p", "_totTime", "_activeBP", "_loop", "_cycle", "_unitSelect", "_units"]; if (isNil "JTD_bldgsrchPath") then {JTD_bldgsrchPath = "";}; // check for functions if (isNil "bis_fnc_init") then { createCenter sideLogic; _grpFM = createGroup sideLogic; _FunctionsManager = _grpFM createUnit ["FunctionsManager", [1, 1, 1], [], 0, "NONE"]; waitUntil {!isNil "bis_fnc_init"}; }; if (isNil "JTD_arrayShuffleFunc") then { JTD_arrayShuffleFunc = compile preprocessFileLineNumbers (JTD_bldgsrchPath +"JTD_arrayShuffle.sqf"); }; if (isNil "JTD_lockedSearchGroups") then {JTD_lockedSearchGroups = [];}; _group = _this select 0; JTD_lockedSearchGroups = JTD_lockedSearchGroups + [_group]; if ((typeName _group) == "OBJECT") then {_group = group (_this select 0)}; //diag_log text format ["group searching: %1", _group]; _leader = leader _group; //diag_log text format ["group leader: %1", _leader]; _ldrPos = getPos _leader; _behaviour = behaviour _leader; if ((count _this) >= 2) then { _srchRad = _this select 1;} else { _srchRad = 50;}; if ((count _this) >= 3) then { _whichOne = _this select 2; } else { _whichOne = "RANDOM";}; if ((count _this) >=4) then { _initialPos = _this select 3; } else { _initialPos = _ldrPos;}; if ((count _this) >=5) then { _andOne = _this select 4; } else { _andOne = false;}; if ((count _this) >=6) then { _occupy = _this select 5; } else { _occupy = false;}; _bldgArray = []; _tempArray = []; _bldgLoc = []; _bldgSelect = []; _searchersT = []; _searchers = []; _searcherCount = 0; _s = 0; // error catching if (isNil "_leader") exitWith { diag_log text "No valid leader selected!"; false }; if (isNil "_srchRad") then {_srchRad = 50}; if (_srchRad < 1) then {_srchRad = 1}; if (isNil "_whichOne") then {_whichOne = "RANDOM"}; if ((_whichOne != "NEAREST") || (_whichOne != "RANDOM")) then {_whichOne = "RANDOM"}; if (isNil "_initialPos") then {_initialPos = _ldrPos}; if ((typeName _initialPos) == "OBJECT") then {_initialPos = getPos (this select 3)}; if ((typeName _initialPos) != "ARRAY") then {_initialPos = _ldrPos}; if (isNil "_andOne") then { if ((count (units _group)) < 3) then { _andOne = true; } else { _andOne = false; }; }; if ((typeName _andOne) != "BOOL") then {_andOne = false}; if (isNil "_occupy") then {_occupy = false}; if ((typeName _occupy) != "BOOL") then {_occupy = false}; // gets time that script starts _checkTime = daytime; // remove group's waypoints _wpArray = waypoints _group; //_currWP = currentWaypoint _group; _wpCnt = count _wpArray; if (_wpCnt > 1) then { for [{_d = 0}, {_d <= _wpCnt}, {_d = _d + 1}] do { deleteWaypoint [_group, _d]; }; }; // building check _tempArray = nearestObjects [_initialPos, ["HOUSE"], _srchRad]; _t = count _tempArray; // count number of buildings in array //for each building, find building position //this should serially select each building in the array, then remove it if position 0 (1) is 0,0,0 _t = _t - 1; for [{_b = 0},{_b <= _t},{_b = _b+1}] do { _bldg = _tempArray select _b; _bldgPos = _bldg buildingPos 0; if (((_bldgPos select 0) != 0) && ((_bldgPos select 1) != 0)) then { _bldgArray = _bldgArray + [_bldg]; }; }; _bldgCnt = count _bldgArray; if (_bldgCnt == 0) exitWith { diag_log text "No buildings to search!"; false }; // select building - either the nearest or the randomest if (_whichOne == "NEAREST") then { _bldgSelect = _bldgArray select 0; // need to do a real distance check? //_bldgSelect = nearestBuilding (getPos _leader); } else { _bldgSelect = _bldgArray call BIS_fnc_selectRandom; }; _bldgLoc = getPos _bldgSelect; if (JTD_searchDebug) then { _nameMarker = format ["srch_%1", str _bldgSelect]; _marker = createMarkerLocal [_nameMarker, [_bldgLoc select 0, _bldgLoc select 1]]; _marker setMarkerShapeLocal "ICON"; _marker setMarkerTypeLocal "dot"; _marker setMarkerColor "ColorRed"; }; // set new waypoint for near the building for the group _bldgBB = boundingBox _bldgSelect; // [[minX, minY, minZ], [maxX, maxY, maxZ]] _wpRad = ((abs((_bldgBB select 0) select 0) + abs((_bldgBB select 1) select 0)) max (abs((_bldgBB select 0) select 1) + abs((_bldgBB select 1) select 1))) + 10; // gets the longest side of the building + 10 _wp = _group addWaypoint [_bldgLoc, _wpRad]; _wp setWaypointPosition [_bldgLoc, 1]; _wp setWaypointType "MOVE"; _group setCurrentWaypoint _wp; //_group lockwp true; waituntil {unitready _leader}; _group setbehaviour "combat"; // find building position max _p = 0; // will end up being the total number of building positions while {str(_bldgSelect buildingPos _p) != "[0,0,0]"} do {_p = _p + 1;}; // check if more units than positions (or equal), if so, select which ones to search // gets the lesser of available units or positions _totTime = _p * .009; // roughly 30 seconds per position scopeName "bldgSearchMainScope"; // loop through each unit to identify the searchers if (_andOne) then { _searcherCount = (count (units _group)) min _p; _s = 0; } else { _searcherCount = ((count (units _group)) - 1) min _p; _s = 1; }; //diag_log text format ["searchers = %1 (%2, %3)", _searcherCount, ((count (units _group)) - 1), _p]; while {_s <= _searcherCount} do { if !(isNull ((units _group) select _s)) then { // start at #2 (which is select 1) and add searchers up to number of house positions _searchersT = _searchersT + [(units _group) select _s]; }; _s = _s + 1; }; // shuffle //diag_log text format ["searcher temp array = %1", _searchersT]; _searchers = [_searchersT] call JTD_arrayShuffleFunc; //diag_log text format ["searcher array = %1", _searchers]; // loop to string out the units _activeBP = 0; // building position iterator while {_activeBP < _p} do { _s = 0; // searcher iterator _loop = 0; // searcher assignment loop _cycle = _activeBP; // cycle through searchers based on house position number while {_loop <= _activeBP} do { _bldgPos = _bldgSelect buildingPos _cycle; _unitSelect = _searchers select _s; //diag_log text format ["unit select %1 bpos %2 %3", _unitSelect, _bldgPos, _cycle]; if (unitready _unitSelect) then { _unitSelect commandmove _bldgPos; //_unitSelect domove _bldgPos; _unitSelect spawn { sleep 5; waituntil {unitready _this}; // try without this, too? }; }; _s = _s + 1; if (_s >= (count _searchers)) then {_loop = _activeBP}; // break out of loop if out of searchers _cycle = _cycle - 1; _loop = _loop + 1; // time check if (daytime > (_checkTime + _totTime)) then { breakTo "bldgSearchMainScope"; if (JTD_searchDebug) then { diag_log text "Building search taking too long, exiting"; }; }; if (! alive (leader group (_searchers select _s))) then { breakTo "bldgSearchMainScope"; _occupy = false; if (JTD_searchDebug) then { diag_log text "No leader of search group"; }; }; }; _activeBP = _activeBP + 1; }; //diag_log text "Out of bldgSearch loop"; _group setbehaviour _behaviour; // check if occupy is specified if !(_occupy) then { // need some sort of wait to make sure they are ready //waituntil {sleep 3; {unitready _x} count _units == count (units _group) - 1}; _ldrPos = getPos _leader; { //diag_log text format ["srcher loop %1", _x]; _x doMove _ldrPos; waitUntil {moveToCompleted _x}; _x doFollow _leader; } foreach _searchers; }; // waituntil ?? //_group lockwp false; JTD_lockedSearchGroups = JTD_lockedSearchGroups - [_group]; //diag_log text "bldg srch ended"; true Edit: The arrayShuffle script that is also necessary now: // JTD_arrayShuffle private ["_array", "_count", "_arrayT", "_arrayN", "_c", "_r"]; _array = _this select 0; _count = count _array; _arrayN = []; _arrayT = []; _c = 0; _r = 0; while {_c < (count _array)} do { while {_r in _arrayT} do {_r = floor (random (count _array)); }; _arrayT = _arrayT + [_r]; _arrayN set [_c, _array select _r]; _c = _c + 1; }; _arrayN Block search script: // JTD block search private ["_groupSelect", "_posSelect", "_radSrch", "_houseArray", "_c", "_searchFunc", "_nameMarker", "_marker"]; diag_log "Block search started"; if (isNil "JTD_bldgSearchFunc") then { JTD_bldgSearchFunc = compile preprocessFileLineNumbers "JTD_buildingSearch.sqf"; }; // needs group, position and radius _groupSelect = _this select 0; if ((typeName (_groupSelect)) == "OBJECT") then {_groupSelect = group (_this select 0)}; _posStart = _this select 1; _radSrch = _this select 2; _houseArray = []; _c = 0; diag_log text format ["groupSelect: %1", _groupSelect]; while {alive (leader _groupSelect)} do { // building check _houseArray = nearestObjects [_posStart, ["HOUSE"], _radSrch]; { _posSelect = getPos _x; diag_log text format ["selected position: %1", _posSelect]; _searchFunc = [_groupSelect, 10, "NEAREST", _posSelect, true, false] execVM "JTD_buildingSearch.sqf"; if (JTD_searchDebug) then { _c = _c + 1; _nameMarker = format ["srch_%1", str _c]; _marker = createMarkerLocal [_nameMarker, [_posStart select 0, _posStart select 1]]; _marker setMarkerShapeLocal "ICON"; _marker setMarkerTypeLocal "dot"; _marker setMarkerSizeLocal [10, 10]; _marker setMarkerColor "ColorGreenAlpha"; }; waituntil {scriptDone _searchFunc}; } forEach _houseArray; sleep (random 60) + 60; }; This is very much a Work In Progress, but the 7z contains a test mission and the current version of the script. With the test mission, the player has a couple minutes to move around. An array of his positions is created. The 6 opfor groups will randomly select one of those positions and search a nearby building. The mission is rather slow (there is also a playable civilian, if you want to watch), but you can get an idea of how it works. The parameters used in the mission are: _searchFunc = [_grpSelect, 20, "NEAREST", _posSelect] call JTD_bldgSearchFunc; Edit: there are several now! Oh, and the mission will spam your rpt with information. That's why it is a test mission. ;) Feedback is greatly appreciated. :) ============================ JTD: -- DMarkwick -- ReconPathFinder -- TRexian
  5. Has anyone tried adding the fuel can to a mission? I get an error that it can't find the texture....
  6. No worries! I'm glad people are still interested! :) I appreciate the patience. In going through the documentation myself, trying to figure out what I did, I realized that my documentation was pretty poor. Will try to post something soon, even if it is still pretty rough.
  7. @Shammy The scriptdone is probably the best way, maybe used conjunction with waituntil (scriptdone scriptvariablename). There is a global variable that keeps an array of units that are still occupied, and that may help. In all honesty, though, I never could figure out a way to have a group go through waypoints, take a break to search a building, then continue on with the waypoints. @ KING I would start by setting up the trigger, and onActivate have it start the script. You can use the group of the first unit in thisList as the group, then use the radius that you want. If you want to get fancy, you can probably have it use the radius of the trigger itself. Sorry that I can't be more helpful with the syntax. Six months out of scripting, and my script-fu is full of fail....
  8. Sorry I've been out of this for so long. Not sure when I'll be able to spend more time on this, but I'm gratified that there's still interest! I'll try to determine whether I have a newer version that I can post. I seem to recall it working quite well - notwithstanding AI issues falling off of rooftops.
  9. Ok. In order to release my mines/IEDs public beta package, I have to binarize it. Only... it won't work. Using cpbo, it works, but not with the BinPBO tool. In the log, it starts with this: Error reading binary file 'c:\documents and settings\...(trimmed, but it is the full pathname)...\config.cpp' And yes, the path is the entire path to the project folder. Here's another odd thing. I've separately bin'd the IED and trash pbo's, and they work properly. (Some warning messages about fonts, but nothing serious.) Here is the config: // JTD mines - based on Pingu's claymore // 05a #include "\JTD_Mines\dialogDefines.hpp" //=====useraction #define private 0 #define protected 1 #define public 2 #define true 1 #define false 0 class CfgPatches { class JTD_Mines { //name of the addon units[] = { //units which will get added "JTD_Claymore", "JTD_MON50", "JTD_warnSignRed", "JTD_warnPostRed", "JTD_M16ABetty", "JTD_OZM72" //, more stuff }; // added to weapons? //weapons[] = {"Claymore", "ClaymoreAmmoBox"}; weapons[] = {}; requiredVersion = 1; requiredAddons[] = {"CAWeapons"}; //addons which are required when using your addon. }; }; class CfgCloudletShapes { ClaymoreSmoke = "\JTD_mines\models\ClaymoreSmoke.p3d"; }; class PreloadTextures { class CfgCloudletShapes { ClaymoreSmoke = "@*"; }; }; class CfgAmmo { class Default; class JTD_DummyAmmo_Explosives: Default { scope = 1; hit = 0.001; indirectHit = 0.001; indirectHitRange = 0.01; }; class BulletBase; class B_BallBearing: BulletBase { hit = 6; indirectHit = 0; indirectHitRange = 0; visibleFire = 0.07; audibleFire = 0.07; visibleFireTime = 2; typicalSpeed = 1100; timeToLive = 1; }; class JTD_ClaymoreExplosion: Default { model = ""; hit = 600; indirectHit = 200; // indirectHitRange = 5; indirectHitRange = 15; typicalSpeed = 20; cost = 40; simulation = "shotShell"; simulationStep = 0.05; //soundHit[] = {"\JTD_Mines\sounds\explode",562.341,1}; soundHit[] = {"\JTD_Mines\sounds\explode",562.341,1}; soundEngine[] = {"",0.0001,4}; CraterEffects = "BombCrater"; //explosionEffects = "BombExplosion"; //explosionEffects = "HERocketExplosion"; //explosionEffects = "ATRocketExplosion"; //explosionEffects = "AAMissileExplosion"; explosionEffects = "NoExplosion"; visibleFire = 0.5; audibleFire = 0.05; visibleFireTime = 1; explosionTime = 0; }; class JTD_BoundingExplosion: Default { model = ""; hit = 150; indirectHit = 25; indirectHitRange = 5; typicalSpeed = 20; cost = 40; //simulation = "shotShell"; simulation = "shotBullet"; simulationStep = 0.05; //soundHit[] = {"\JTD_Mines\sounds\explode",562.341,1}; soundHit[] = {"\JTD_Mines\sounds\explode",562.341,1}; soundEngine[] = {"",0.0001,4}; CraterEffects = "GrenadeCrater"; //explosionEffects = "NoExplosion"; explosionEffects = "GrenadeExplosion"; visibleFire = 0.5; audibleFire = 0.05; visibleFireTime = 1; explosionTime = 0; }; }; class CfgMagazines { class Default; class CA_Magazine; // need to change to JTD_Claymore?? class JTD_ClaymorePrimary: CA_Magazine { scope = 2; displayName = "M18A1 Claymore"; picture = "\JTD_Mines\icons\JTD_gearClaymore.paa"; type = "2 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; class JTD_MON50Primary: CA_Magazine { scope = 2; displayName = "MOH-50 claymore"; picture = "\JTD_Mines\icons\JTD_gearMON50.paa"; type = "2 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; class JTD_M16APrimary: CA_Magazine { scope = 2; displayName = "M16A Bounding"; picture = "\JTD_Mines\icons\JTD_gearM16A.paa"; type = "1 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; class JTD_OZM72Primary: CA_Magazine { scope = 2; displayName = "O3M-72 Bounding"; picture = "\JTD_Mines\icons\JTD_gearOZM72.paa"; type = "1 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; class JTD_RedPostPrimary: CA_Magazine { scope = 2; displayName = "Red anti-mine post"; picture = "\JTD_Mines\icons\JTD_gearPost.paa"; type = "2 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; class JTD_RedSignPrimary: CA_Magazine { scope = 2; displayName = "Red anti-mine sign"; picture = "\JTD_Mines\icons\JTD_gearSign.paa"; type = "2 * 256"; value = 5; ammo = "JTD_DummyAmmo_Explosives"; count = 1; initSpeed = 0; maxLeadSpeed = 0; nameSoundWeapon = "Claymore"; }; }; class CfgWeapons { class Default; class Put: Default { class JTD_Mines_utility; class JTD_mines_put: JTD_mines_utility { magazines[] = { "JTD_ClaymorePrimary", "JTD_MON50Primary", "JTD_RedSignPrimary", "JTD_RedPostPrimary", "JTD_M16APrimary", "JTD_OZM72Primary" }; }; }; }; class CfgVehicleClasses { class JTD_mines { //Creates a new group under which it will be visible in the editor displayName = "JTD Mines"; }; }; class CfgVehicles { // Mines class Man; class CAManBase : Man { class UserActions { class JTD_PlaceClaymore { displayName = "Place claymore"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; // maybe try 2 and 3 condition = """JTD_ClaymorePrimary"" in (magazines player)"; //statement = "[this] execVM ""\@JTD\addons\testing\JTD_placeClaymore.sqf"";"; statement = "[this, ""CLAY""] execVM ""\JTD_mines\scripts\JTD_placeClaymore.sqf"";"; }; class JTD_PlaceMON50 { displayName = "Place MOH-50"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; // maybe try 2 and 3 condition = """JTD_MON50Primary"" in (magazines player)"; //statement = "[this] execVM ""\@JTD\addons\testing\JTD_placeClaymore.sqf"";"; statement = "[this, ""MON""] execVM ""\JTD_mines\scripts\JTD_placeClaymore.sqf"";"; }; class JTD_PlaceM16A { displayName = "Place M16A mine"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; // maybe try 2 and 3 condition = """JTD_M16APrimary"" in (magazines player)"; //statement = "[this] execVM ""\@JTD\addons\testing\JTD_placeClaymore.sqf"";"; statement = "[this, ""M16A""] execVM ""\JTD_mines\scripts\JTD_placeBounding.sqf"";"; }; class JTD_PlaceOZM72 { displayName = "Place O3M-72"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; // maybe try 2 and 3 condition = """JTD_OZM72Primary"" in (magazines player)"; //statement = "[this] execVM ""\@JTD\addons\testing\JTD_placeClaymore.sqf"";"; statement = "[this, ""OZM72""] execVM ""\JTD_mines\scripts\JTD_placeBounding.sqf"";"; }; class JTD_PlaceRedPost { displayName = "Place red post"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; // maybe try 2 and 3 condition = """JTD_RedPostPrimary"" in (magazines player)"; statement = "[this, ""RedPost""] execVM ""\JTD_mines\scripts\JTD_placeSign.sqf"";"; }; class JTD_PlaceRedSign { displayName = "Place red sign"; //onlyForPlayer = true; onlyForPlayer = 1; position = "this"; radius = 1; condition = """JTD_RedSignPrimary"" in (magazines player)"; statement = "[this, ""RedSign""] execVM ""\JTD_mines\scripts\JTD_placeSign.sqf"";"; }; }; }; class USBasicAmmunitionBox; class JTD_ClaymoreAmmoBox : USBasicAmmunitionBox { displayName = "JTD Mine Test box"; scope = 2; class TransportMagazines { class AmmoBoxClaymorePrimary { magazine = "JTD_ClaymorePrimary"; count = 50; }; class AmmoBoxMON50Primary { magazine = "JTD_MON50Primary"; count = 50; }; class AmmoBoxM16APrimary { magazine = "JTD_M16APrimary"; count = 50; }; class AmmoBoxOZM72Primary { magazine = "JTD_OZM72Primary"; count = 50; }; class AmmoBoxRedPostPrimary { magazine = "JTD_RedPostPrimary"; count = 5; }; class AmmoBoxRedSignPrimary { magazine = "JTD_RedSignPrimary"; count = 5; }; }; }; // Editor Claymore class Thing; //loading old class for inheritance class JTD_Claymore : Thing // USian M-81 { scope = 2; //2: Visible in the editor | 1: Not visible in the editor | 0: Not visible, can't be used for inheritance //scope = 1; armor = 5; // low amount of armor, relatively easy to destroy accuracy = 1; // never recognize .... vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="[b]M-81 claymore"; //name of the object // destrType = DestructNo; destrType = "DestructMan"; model = "\JTD_Mines\models\claymoreT"; //path to the binarized model@@ icon="\JTD_Mines\icons\JTD_Claymore_icon.paa"; //icon used in editor@@ - set to BIS icon for now class Eventhandlers { // for release init = "[_this select 0, ""CLAY""] execVM ""\JTD_mines\scripts\JTD_Claymore_init.sqf"""; // for development@@ //init = "(_this select 0) execVM ""\@JTD\addons\testing\JTD_Claymore_init.sqf"""; //killed = "_this execVM ""\JTD_mines\scripts\JTD_onDestroyed.sqf"""; }; }; class JTD_MON50 : Thing // Russian MON-50 { scope = 2; //2: Visible in the editor | 1: Not visible in the editor | 0: Not visible, can't be used for inheritance //scope = 1; armor = 5; // low amount of armor, relatively easy to destroy accuracy = 1; vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="[R]MOH-50 directional"; //name of the object // destrType = DestructNo; destrType = "DestructMan"; model = "\JTD_Mines\models\mon50T"; //path to the binarized model@@ icon="\JTD_Mines\icons\JTD_Claymore_icon.paa"; //icon used in editor@@ - set to BIS icon for now class Eventhandlers { // for release init = "[_this select 0, ""MON""] execVM ""\JTD_mines\scripts\JTD_Claymore_init.sqf"""; // for development@@ //init = "(_this select 0) execVM ""\@JTD\addons\testing\JTD_Claymore_init.sqf"""; //killed = "[_this select 0] execVM ""\JTD_mines\scripts\JTD_onDestroyed"""; }; }; class JTD_M16ABetty : Thing // USian M-16A bouncing betty { scope = 2; //2: Visible in the editor | 1: Not visible in the editor | 0: Not visible, can't be used for inheritance //scope = 1; armor = 5; // low amount of armor, relatively easy to destroy accuracy = 1; vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="[b]M-16A bounding"; //name of the object // destrType = DestructNo; destrType = "DestructMan"; model = "\JTD_Mines\models\M16A_bounding"; //path to the binarized model@@ icon="\JTD_Mines\icons\JTD_Claymore_icon.paa"; //icon used in editor@@ class Eventhandlers { // for release init = "[_this select 0, ""M16A""] execVM ""\JTD_mines\scripts\JTD_Bounding_init.sqf"""; // for development@@ //init = "(_this select 0) execVM ""\@JTD\addons\testing\JTD_Claymore_init.sqf"""; //killed = "_this execVM ""\JTD_mines\scripts\JTD_onDestroyed.sqf"""; }; }; class JTD_OZM72 : Thing // OZM-72 { scope = 2; //2: Visible in the editor | 1: Not visible in the editor | 0: Not visible, can't be used for inheritance //scope = 1; armor = 5; // low amount of armor, relatively easy to destroy accuracy = 1; vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="[R]O3M-72 bounding"; //name of the object // destrType = DestructNo; destrType = "DestructMan"; model = "\JTD_Mines\models\OZM72"; //path to the binarized model@@ icon="\JTD_Mines\icons\JTD_Claymore_icon.paa"; //icon used in editor@@ - set to BIS icon for now class Eventhandlers { // for release init = "[_this select 0, ""OZM72""] execVM ""\JTD_mines\scripts\JTD_Bounding_init.sqf"""; // for development@@ //init = "(_this select 0) execVM ""\@JTD\addons\testing\JTD_Claymore_init.sqf"""; //killed = "_this execVM ""\JTD_mines\scripts\JTD_onDestroyed.sqf"""; }; }; class JTD_warnSignRed : Thing { scope = 2; accuracy = 1; // vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="Warning Sign Red"; //name of the object destrType = DestructTree; model = "\JTD_Mines\models\JTD_signRedTri.p3d"; //path to the binarized model@@ //model = "\ca\misc\sign_board.p3d"; icon = "\Ca\misc\data\icons\i_danger_CA.paa"; //icon used in editor@@ - set to BIS icon for now }; class JTD_warnPostRed : Thing { scope = 2; accuracy = 1; // vehicleClass ="JTD_mines"; //->CfgVehicleClasses displayName ="Warning Post Red"; //name of the object destrType = DestructTree; model = "\JTD_Mines\models\JTD_signRedPost.p3d"; //path to the binarized model@@ //model = "\ca\misc\sign_board.p3d"; icon = "\Ca\misc\data\icons\i_danger_CA.paa"; //icon used in editor@@ - set to BIS icon for now }; }; class CfgSounds { class PlaceClaymore { name = ""; sound[] = {"\JTD_Mines\sounds\place_claymore",1,1}; titles[] = {}; }; }; #define FontH "TahomaB" #define ST_PICTURE 48 class RscGraphic{type=CT_STATIC;idc=-1;style=ST_PICTURE;colorBackground[]={0,0,0,0};colorText[]={1,1,1,1};font=FontH;size=1;sizeEx=1;}; class RscTitles { class claymore_peep_sight { idd = -1; movingEnable = 0; duration = 1000; name = "claymore_peep_sight"; controls[]= {"sight"}; class sight:RscGraphic { text="\JTD_mines\textures\peep_sight.paa"; colorText[]={1,1,1,0.8}; sizeEx = 1; x=0; y=0; w=1; h=1; fadein=0.2; fadeout=0.2; }; }; }; #define IDC_PEEP_SIGHT 55001 class peep_sight { idd = IDC_PEEP_SIGHT; movingEnable = false; }; class ClaymoreCrater { class BombSmk1 { simulation = "particles"; type = "BombSmk1"; position[] = {0,0,0}; intensity = 0.4; interval = 1; lifeTime = 0.1; }; class BombSmk2 { simulation = "particles"; type = "BombSmk2"; position[] = {0,0,0}; intensity = 0.4; interval = 1; lifeTime = 0.1; }; class BombSmk3 { simulation = "particles"; type = "BombSmk3"; position[] = {0,0,0}; intensity = 0.5; interval = 1; lifeTime = 0.6; }; class BombStones { simulation = "particles"; type = "BombStones"; position[] = {0,0,0}; intensity = 0.4; interval = 1; lifeTime = 0.2; }; }; Thanks for any insight.... :) Edit: Oh, main reason I know the problem is that the vehicle class doesn't show up in the editor at all. Also, the rpt shows nothing related to the mines....
  10. haha Glad you like it. Sounds like a fun mission. :)
  11. TRexian

    The 3rd Letter.

    Wow. That is strong.
  12. LOL I saw that stuff in the feature list and... indeed... got more than a little excited. :D I also remember when I first got passengers dynamically in buses and trucks. Thought, "That is f'n cool." :) Will absolutely check this out, then, and I suspect DMarkwick will, too.
  13. haha That's not a dumb question at all. :) I had to think about it for a minute. I think that whichever is the last script to be called will be the one executed. So, if that is run after the building search, it will probably take precedence. BUT, it may also just really confuse the sh!t out of the AI, so I'm not sure what they might do. :) I would suggest having different groups for the two functions, at least for now, unless and until I figure out how to really create a checkin/checkout function.
  14. Very cool idea! I've skimmed the thread, and my impression is that this is intended for MP? :) Is it possible to run it in SP, with a group of AI? If not, will you be pursuing something like that, and if not that, would you be offended if someone did? :) Thanks, T
  15. Hmmm... blocksearch should still be implemented. Will check that. In terms of getting AI specifically to the rooftops, I'm not sure. If there isn't a buildingposition there, it gets tricky. Off the top of my head, I think I'd have to figure out the 'top' of the building using boundingbox or something, then setpos the unit there. That seems risky, though, and somewhat immersion-killing if you see a guy suddenly appear on a rooftop. :) With the larger buildings, with many building positions, the 'occupy' option will only put units in the 'last' numbered positions. They may or may not be on the roof of a building. I can try to get something that works on buildingID. That isn't a bad idea. :) Edit: Certain circumstances beyond my control mean that it may be awhile before any updates. I mean, longer than usual for me...
  16. TRexian

    Call for a new forum rule

    Indeed, free does not necessarily equate with open. That's why I said 'free' and not 'open.' To my knowledge, no one charges for ArmA addons, so any addons that would be 'orphaned' would be free/no charge. My point was more to the liability for damages. Damages from no-cost derivative works originating from no-cost source content would basically be zero. Going further, though, unless we're talking about BI actually incorporating these orphan projects into BI content, we're really just talking about BI allowing the distribution of the derivative content. At an even more basic level, all they can really do is allow/not allow such content to be linked from their forums. It would be a rather tangled argument to say that allowing such links somehow makes them liable for some other party's creation of derivative works. The liability for infringing on the IP would attach to the creator of the infringing work. BI's passive allowance of linking would be unlikely to create any additional liability. My understanding is that that allowance would be a change. But again, unless the claimant can point to some monetary gain by BI as a direct result of the infringing derivative work, damages would be very difficult to prove.
  17. TRexian

    Call for a new forum rule

    Liability for allowing free distribution of free derivative works from free source content? Assuming the complainant could make a valid claim of IP protection, the damages would be very close to zero. :) Like, almost indistinguishable from zero.
  18. TRexian

    [SP] JTD Wolf3d

    New version: http://www.mediafire.com/file/358tban6w9mgo99/JTD_Wolf3dMission_0211.7z Starting to flesh out the end-game scenario. ;)
  19. This is a Work In Progress, that I really need some help on - mostly because I can't even finish my own f'n mission! The Setup: Long ago, in what seems like a whole different world, it was 1992. In that year, the DOS-based progenitor of first-person-shooters was released: Wolfenstein 3d. Those of us of a certain age probably spent many hours in university computer labs and dorm rooms playing it. I loved it! In reflecting on how much fun it was, I decided to try to re-create the style of gameplay with ArmA2. Sure - Wolf3d was very gamey, but it was f'n fun! :) So, I started work on this mission: JTD_Wolf3d. Set in Fallujah, you are a US Marine, William Robert "Billy Bob" Blazkowicz, that has been captured by the enemy and taken to a safe house. They've taken all your equipment, and now you must try to escape. Fortunately, you've overpowered and killed one of your captors. The mission starts with you on the roof of a building and a dead bad guy in front of you. Get out of the city. (Ironically, your great-grandfather was in a similar situation in WWII....) The Download: http://www.mediafire.com/file/h6whbkijd7af4qw/JTD_Wolf3d.fallujah.0112.7z The Required Addons: ArmA2 CO (untested on either vanilla A2, or on straight OA) Fallujah1, an awesome map (also tested the last few days on Fal 1.1, which seems to work, too). http://forums.bistudio.com/showthread.php?t=111737 JTD Ambient Civilian Traffic ver 2 (beta): http://www.mediafire.com/?nuzr2d1zozg JTD Mines: http://www.mediafire.com/?r57yvrhj68jgb52 Extra units and vehicles addon which can be found here: http://www.armaholic.com/page.php?id=6421 (Thanks M0ldyM!lk!) The Install: The package includes a JTD_Wolf3dObj pbo, which should go in your JTD addons subdirectory. The mission pbo should go in your ArmA2 Missions folder. The Gameplay: There are weapons boxes scattered all over the city. The weapons may be better than what you have, or they may not be. Some weapon boxes will always be in the same place, containing the same items, from game to game. Other weapon boxes will be in the same place, but with different contents. Some weapon boxes may or may not be in the same place from game to game. There are also white medkits and first aid kits. The medkits will heal you more than the first aid kits will. Same thing about their location, although they tend to be in pretty much the same places from game to game. The enemy groups in your initial area will usually be 3-man patrols. However, once you get to a certain point, you will find truckloads of enemy. If you get past them, more enemy may converge on your location. (That's as far as I can get.) Hint: look around the building you start at to see if there are any weapons available. The Warning: This is a Work In Progress. I have a clear idea of where I want to go with it, and how it will end. Unfortunately, I can't get there. (Probably going to use Loki's Lost Key eventually.) ;) I just can't seem to survive long enough to make the next 'level', let alone the end scenario. So, I'm opening it up to the public (who are probably better players than I am) to give me some feedback on it. Also, this mission may not appeal to everyone. I like a certain style of gameplay and I like this mission very much. Except for the part about not being able to beat it. (But even that I kinda like.) ;) Thanks!
  20. TRexian

    The Singularity - Trailer (AI & machines / Humans)

    They probably complain about human players having magical maps that indicate enemy positions, sneaking up on them in the darkness and headshot'ing them from 200m with silenced M9s. :)
  21. TRexian

    The Singularity - Trailer (AI & machines / Humans)

    It really seems like you guys are talking around each other, saying more or less the same thing.... To me, that illustrates the fundamental difference between the virtual reality of computers and the imagined reality of dreams. In order for VR to be 'hi fidelity' it would have to mimic those same events, which would then have to be 'gated' by the brain, or not, dependent on the user's wishes. Humans can override the gating by paying attention to details around them. But, in dreams, the brain, or rather the experience of dreaming, presumes the gating, until something happens that brings the background 'noise' (it doesn't always have to be auditory) into focus.
  22. TRexian

    Experiments that see into the future.

    Snark notwithstanding, I do think these kinds of experiments are incredibly fascinating. There is a rather consistent theme in the scientific studies that suggests we really don't know as much as we think we know about the subconscious mind. In terms of replicating this guy's results, it would be very interesting, too, if there were certain places that were more conducive to this type of thing than others.
  23. TRexian

    Experiments that see into the future.

    Meh... I think I've read that article before....
  24. TRexian

    Your top 5 non-BIS games of all time

    Falcon 4/FreeFalcon 5.* Doom 2 Splinter Cell Morrowind GTA IV :)
×