Jump to content
🛡️FORUMS ARE IN READ-ONLY MODE Read more... ×

AliMag

Member
  • Content Count

    226
  • Joined

  • Last visited

  • Medals

Everything posted by AliMag

  1. Solved! The string expression that you're executing must be compiled before: call (compile <expression>)
  2. AliMag

    FP : DR - News & Discussion

    Hi, I wonder if the low count poly will not help the frame rate. The textures does not look as sharp as Arma 2 but the game give the feeling that it will be less demanding, smoother in a way. Well, it's just an impression... Cheers
  3. Hi, WOW! Human nature... I've read all the posts in that thread and I'm amazed how people just jump on the last page of a thread and bark their disatisfaction about something they have no clue whatsoever. Questions about something someone just answered the post right before... Thumbs up to the moderators. In their place I probably would have shot some whiners already... @nominesine I remember your campaign (Blue Skies - the first one). It was a piece of art. Hope your still in the business of campaign making. Cant wait for your next one. Cheers
  4. @kju Thanks for answering. I guess it might be what you said, I'll wait for the optimization. And yes, it happends as soon as the map is loaded. Any map from Arma 1 and anywhere on the map if I'm not mistaken. (video card=ATI 4870-last drivers) About the helping hand...What can I do to help ? Cheers
  5. Hi, They work great alright but somthing strange is happening. On those islands (Arma 1) my video card fan gets completely crazy as soon as I load the map. Everything is fine, no lag at all but it's really scary. That does not happend on the original Arma 2 maps...Weird cheers
  6. Hi, I've made a small program to help creating simple briefings. You can find it here: http://www.ofpec.com/forum/index.php?topic=33891.0 Please try it and tell me what you think. (dont forget to read the readme) Cheers
  7. Hi, I just downloaded the files and installed them...WOW! This is beautiful. I didn't have Arma so I never saw the worlds. Reminds me of what we see of Iraq or similar countries. Great work guys! Beside a few bugs, this is a fantastic environment for firefights. Thank you very much Cheers
  8. Hi, For new users having some difficulties with basic briefing try this: http://www.ofpec.com/forum/index.php?PHPSESSID=d3tldv85uih65jjsoatc302un1&topic=33891.0 Very easy to use (read the readme file). Cheers
  9. Hi, Not yet but I will. This is because the script is forcing him to stay in careless behaviour. Without the script he would have switch in combat mode. To understand the point you have to see what HE sees. For this to happen, as soon as you kill the first guy on your left, hide yourself and press 0, then 0 again and then 1 (not on the num pad). This will enable the second guy to move. Immediately after press 0 then 0 again and then 2. This will switch the camera on the second soldier so you can see what HE is seeing. You'll notice a yellow arrow indicating his next waypoint and a ORANGE/RED SQUARE indicating where he thinks YOU might be. How the hell does he know about you? Just continue watching him until he discovers the body and raise the alarm. Then try the second test the same way. This is exactly what I've explain in the previous post. Sorry if it was not clear enough I might not have explain myself correctly. Just do what I've said and watch the results. Thanks again for the feedbacks. Cheers
  10. Hi, as promised here I am with a few tests. First, I apologise for the long post (I just want to be sure that new people in the editor understand what I'm saying) and my english that is not my first language. Oh, and thanks to Tajin. You were right about the hide body part. The command hideBody does not work for me but the unit that I use already has the ability. I guess all specops have it. The problem In a stealth mission you want to be able to infiltrate an enemy sector, silently kill guards and sentries, dispose of their bodies, accomplish whatever tasks you were assigned, and extract without the enemy even knowing you were there. One can imagine the enemy base with soldiers in safe behaviour slowly patrolling their sector until an enemy is detected (visual or sound) or an anomaly, like a dead body, is encountered. Unfortunately, this is not actually possible with the engine default behaviour. Why? Simple. It is normal for a soldier in safe behaviour to switch to a combat behaviour as soon that he is aware of enemy presence. In other words, as soon as his knowsAbout about the detected unit is not 0 anymore. But it is not normal that a soldier knows about you as soon as you silently kill one of his comrade 200 meters away. I dont believe that this is a bug. A knowsAbout value of 1.5 is automatically given to an unit when he gets knowledge of a comrade (presence and position of the killer if he is alive, presence only if he is dead) and when he gets shot without having previous knowledge of the shooter. In other words, it seems that an unit inherits the knowsAbout properties of another unit when he gets knowledge of him, partially if dead. This behaviour is not without logic since Arma is much more a battlefield simulation than a specop one, but completely unsuitable for stealth mission. Another thing that I've found, and this is definitely a bug, is that you can throw a grenade in the middle of an enemy camp and if nobody is killed or injured, it will go unnoticed. They detect anything else (even in careless behaviour) but not grenades. The solution Since we cant change the way units perceive their environment we have to focus on the way they react to it. The script set the enemy soldiers behaviour to CARELESS. In this behaviour they are still aware of their environment but will not react to it. Their knowledge of enemy units is monitored so we can decide when we want them to react. The script also monitors dead bodies encountered (also based on his knowsAbout but on another object attach to the body) and grenade explosion. Test Setup 2 russian riflemans named s1 and s2 with a very simple patrol route. s2 has his mobility disabled at start (s2 disableAI "move") in his initialization box. 2 radio triggers: [0-0-1] s2 enable Move --> to start moving s2 [0-0-2] s2 switchCamera --> to switch the camera on s2 Difficulty on Normal. === TEST #1 - Kill the soldier to your left (s1). Once he detects you, you have about 10 seconds to kill him before the alarm is raised. Dont let him fire a shot or the other soldier (s2) will probably be alerted and eventually raise the alarm. The test will fail if the alarm is raised. - Hide and enable the other soldier (s2) to move (0-0-1) - Switch on him (0-0-2) to have a view of his perspective and watch him until he discover the body and the alarm is eventually raised. Has you will see, he will rapidly gain knowledge of his dead comrade and about a second after, OF YOU! he might not know exactly where you are (since his comrade is dead) but he automatically knows who you are and that you are present. The body will be detected later when he gets closer and eventually the alarm will be raised. === TEST #2 - Kill the soldier to your left (s1). - Move to his position and hide him using the option 'Hide body' in the action menu. - Hide and enable the other soldier (s2) to move (0-0-1) - Switch on him (0-0-2) to have a view of his perspective and watch him continuing his patrol like nothing has happend. Has you will maybe see, he might gain knowledge OF YOU even if there is nothing to detect. His knowsAbout on you might jump to 1.5 (when s1 got killed) but since we know what this value means, we'll not let him react to it. This is impossible to achieve with the engine default behaviour only. The test files Now, create a folder in your My Documents\Arma 2\missions in XP or Documents\Arma 2\missions in Vista/7 and create the following text files with their respective names. mission.sqm (the mission file) version=11; class Mission { addOns[]= { "cacharacters2", "utes" }; addOnsAuto[]= { "cacharacters2", "utes" }; randomSeed=2025868; class Intel { startWeather=0.40000001; forecastWeather=0.25; year=2008; month=10; day=11; hour=14; minute=20; }; class Groups { items=3; class Item0 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3427.1709,19,3628.5173}; azimut=90; id=0; side="EAST"; vehicle="RU_Soldier"; leader=1; skill=0.60000002; text="s1"; }; }; class Waypoints { items=2; class Item0 { position[]={3596.0247,19,3628.5815}; speed="LIMITED"; class Effects { }; timeoutMin=5; timeoutMid=7; timeoutMax=9; showWP="NEVER"; }; class Item1 { position[]={3435.7451,19,3628.3562}; type="CYCLE"; class Effects { }; timeoutMin=3; timeoutMid=5; timeoutMax=7; showWP="NEVER"; }; }; }; class Item1 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={3553.7117,18.870409,3679.2463}; azimut=180; id=1; side="EAST"; vehicle="RU_Soldier"; leader=1; skill=0.60000002; text="s2"; init="this disableAI ""move"""; }; }; class Waypoints { items=4; class Item0 { position[]={3554.3345,19,3640.261}; class Effects { }; timeoutMin=6; timeoutMid=9; timeoutMax=12; showWP="NEVER"; }; class Item1 { position[]={3469.7847,18.993979,3640.6021}; class Effects { }; timeoutMin=6; timeoutMid=9; timeoutMax=12; showWP="NEVER"; }; class Item2 { position[]={3553.8733,19,3639.0298}; class Effects { }; timeoutMin=5; timeoutMid=10; timeoutMax=15; showWP="NEVER"; }; class Item3 { position[]={3553.1924,18.895931,3677.2134}; type="CYCLE"; class Effects { }; timeoutMin=5; timeoutMid=10; timeoutMax=15; showWP="NEVER"; }; }; }; class Item2 { side="WEST"; class Vehicles { items=1; class Item0 { position[]={3535.6306,19,3511.8772}; id=2; side="WEST"; vehicle="FR_R"; player="PLAYER COMMANDER"; leader=1; skill=0.60000002; }; }; }; }; class Sensors { items=2; class Item0 { position[]={3590.3928,19.003927,3506.1277}; a=0; b=0; activationBy="BRAVO"; interruptable=1; age="UNKNOWN"; text="s2 switchCamera"; expActiv="s2 switchCamera ""group"""; class Effects { }; }; class Item1 { position[]={3559.8145,19,3492.0686}; a=0; b=0; activationBy="ALPHA"; interruptable=1; age="UNKNOWN"; text="s2 Enable Move"; expActiv="s2 enableAI ""move"""; class Effects { }; }; }; }; class Intro { addOns[]= { "utes" }; addOnsAuto[]= { "utes" }; randomSeed=14681602; class Intel { startWeather=0.40000001; forecastWeather=0.25; year=2008; month=10; day=11; hour=14; minute=20; }; }; class OutroWin { addOns[]= { "utes" }; addOnsAuto[]= { "utes" }; randomSeed=2674643; class Intel { startWeather=0.40000001; forecastWeather=0.25; year=2008; month=10; day=11; hour=14; minute=20; }; }; class OutroLoose { addOns[]= { "utes" }; addOnsAuto[]= { "utes" }; randomSeed=9806466; class Intel { startWeather=0.40000001; forecastWeather=0.25; year=2008; month=10; day=11; hour=14; minute=20; }; }; init.sqs (the initialisation file) ;=============================== ; init.sqs ;=============================== ; init detect script _friends = [player] _enemies = [s1, s2] _script = "alarm.sqs" ["INIT", [_friends, _enemies], _script] exec "detect.sqs" detect.sqs (the detection script) ;============================================================================ ; detect.sqs ; ["INIT", [arrayOfFriendlyUnits, arrayOfEnemyUnits], UserScript] ; alimag - 07/2009 ;============================================================================= if (count _this > 3) then {goto "HIDE"} goto (_this select 0) ;---------------- #INIT ;---------------- _friends = (_this select 1) select 0 _enemies = (_this select 1) select 1 _script = _this select 2 _delay = 10 _distance = 200 {_x setBehaviour "CARELESS";_x setSpeedMode "LIMITED"} forEach _enemies {_x addEventHandler ["killed", {["KILLED", _this] exec "detect.sqs"}]} forEach _enemies {_x addEventHandler ["hit", {["HIT", _this] exec "detect.sqs"}]} forEach _enemies {_x addEventHandler ["fired", {["FIRED", _this] exec "detect.sqs"}]} forEach _friends ; init global var detectSQS = [false, _friends, _enemies, [], _delay, [], _distance] ; start general detection script ["DETECT"] exec "detect.sqs" ; wait for exit script flag @ (detectSQS select 0) [_enemies] exec _script exit ;---------------- #DETECT ;---------------- _friends = detectSQS select 1 _enemies = detectSQS select 2 #DETECT_LOOP1 _i = 0 _n = count _friends #DETECT_LOOP2 _friend = _friends select _i {if ((_x knowsAbout _friend > 0.5) && (_x knowsAbout _friend != 1.5) && !(_x in (detectSQS select 5))) then {["COMBAT",_x,"Unit"] exec "detect.sqs"}} forEach _enemies _i = _i + 1 if (_i < _n) then {goto "DETECT_LOOP2"} ~1 if !(detectSQS select 0) then {goto "DETECT_LOOP1"} exit ;---------------- #COMBAT ;---------------- _unit = _this select 1 _from = _this select 2 _delay = detectSQS select 4 detectSQS set [5, (detectSQS select 5) + [_unit]] if !(alive _unit) then {exit} player globalChat format ["%1 detected by (%2)", _from, _unit] _unit addEventHandler ["fired", {["COMBAT_FIRED",_unit] exec "detect.sqs"}] _unit setBehaviour "COMBAT" _unit lockWp true _unit setCombatMode "RED" ~_delay if (alive _unit) then {detectSQS set [0, true]} exit ;---------------- #COMBAT_FIRED ;---------------- if (detectSQS select 0) then {exit} _unit = _this select 1 _enemies = detectSQS select 2 _dist = detectSQS select 6 {if (_x distance _unit < _dist) then {["COMBAT",_x,"Friendly gunshot"] exec "detect.sqs"}} forEach _enemies exit ;---------------- #HIT ;---------------- if (detectSQS select 0) then {exit} _unit = (_this select 1) select 0 if !(_unit in (detectSQS select 5)) then {["COMBAT", _unit, "Shooter"] exec "detect.sqs"} exit ;---------------- #KILLED ;---------------- if (detectSQS select 0) then {exit} _unit = (_this select 1) select 0 _killer = (_this select 1) select 1 ; detectable body tag - visibility value seems to low - another object ? _a = "SkeetDisk" createVehicle [0,0,0] _a attachTo [_unit, [0.5, 0, 0]] detectSQS set [3, (detectSQS select 3) + [[_unit, _a,false]]] _n = count (detectSQS select 3) if ((_unit in (detectSQS select 5)) && !(detectSQS select 0)) then {player globalChat "Detector neutralized"} if (_n == 1) then {["BODY"] exec "detect.sqs"} exit ;---------------- #BODY ;---------------- _enemies = detectSQS select 2 #BODY_LOOP1 _i = 0 _n = count (detectSQS select 3) #BODY_LOOP2 _body = ((detectSQS select 3) select _i) select 0 _flag = ((detectSQS select 3) select _i) select 2 if (isNull _body) then {if !(_flag) then {((detectSQS select 3) select _i) set [2,true];titleText ["Body hidden","plain down"]};goto "BODY_SKIP"} _tag = ((detectSQS select 3) select _i) select 1 {if ((_x knowsAbout _tag > 0) && !(_x in (detectSQS select 5))) then {_x lockWp true;_x move (getPos _tag);["COMBAT",_x,"Body"] exec "detect.sqs"}} forEach _enemies #BODY_SKIP _i = _i + 1 if (_i < _n) then {goto "BODY_LOOP2"} ~1 if !(detectSQS select 0) then {goto "BODY_LOOP1"} exit ;---------------- #FIRED ;---------------- if (detectSQS select 0) then {exit} _grenade = (getPos ((_this select 1) select 0)) nearestObject ((_this select 1) select 4) ; if not grenade exit if !(((_this select 1) select 1) == "Throw") then {exit} ; determine grenade explosion position #FIRED_LOOP _pos = getPos _grenade ~0.1 if (alive _grenade) then {goto "FIRED_LOOP"} _enemies = detectSQS select 2 _impact = "SkeetDisk" createVehicle [0,0,0] _impact setPos _pos _dist = detectSQS select 6 {if (_x distance _impact < _dist) then {["COMBAT",_x,"Explosion"] exec "detect.sqs"}} forEach _enemies deleteVehicle _impact exit alarm.sqs (the user defined file) ;=============================== ; alarm sqs ;=============================== player globalChat "The alarm has been raised" _enemies = _this select 0 {_x setBehaviour "COMBAT";_x lockWp true;_x setCombatMode "RED"} forEach _enemies Now, save the files and open your folder in the editor to try it. I would definitely appreciate feedback from anyone trying it. Maybe, together, we can eliminate bugs and refine the script into something usefull. Thank you for reading Cheers
  11. Hi, Simple and effective. Nice work. An option to automatically close the launcher after starting Arma would be nice. Cheers
  12. Hi, @Tajin Sorry to disappoint you but I did'nt have time for editing during the Arma period so I dont even have it. That is why I still use sqs (sorry for making you sick) and a lot of obsolete commands. But they still work and will do for now (at least for me) since we are mostly testing more than anything else. About the hide body command, I will check it out but if it just disappear the body I will not use it. I even intent to force the player to stay near the body for a small period of bury time. @Breeze As soon I get some time I will finish the script and post informations on how it works and use it. Cheers
  13. Hi, Here is the script in its current state (I have it with me in my usb key). ;============================================================================ ; detect.sqs ; AI manager for enemy and dead body detection ; Status: work in progress ; Script call: ["INIT", [arrayOfFriendlyUnits, arrayOfEnemyUnits], UserScript] ; alimag - 07/2009 ;============================================================================= if (count _this > 3) then {goto "HIDE"} goto (_this select 0) ;---------------- #INIT ;---------------- _friends = (_this select 1) select 0 _enemies = (_this select 1) select 1 _script = _this select 2 _delay = 10 {_x setBehaviour "CARELESS";_x setSpeedMode "LIMITED"} forEach _enemies {_x addEventHandler ["killed", {["KILLED", _this] exec "detect.sqs"}]} forEach _enemies {_x addEventHandler ["hit", {["HIT", _this] exec "detect.sqs"}]} forEach _enemies ; init global var detectSQS = [false, _friends, _enemies, [], _delay, []] ; start general detection script ["DETECT"] exec "detect.sqs" ; wait for exit script flag @ (detectSQS select 0) [_enemies] exec _script exit ;---------------- #DETECT ;---------------- _friends = detectSQS select 1 _enemies = detectSQS select 2 #DETECT_LOOP1 _i = 0 _n = count _friends #DETECT_LOOP2 _friend = _friends select _i {if ((_x knowsAbout _friend > 0.5) && (_x knowsAbout _friend != 1.5) && !(_x in (detectSQS select 5))) then {["COMBAT",_x,"Enemy"] exec "detect.sqs"}} forEach _enemies _i = _i + 1 if (_i < _n) then {goto "DETECT_LOOP2"} ~1 if !(detectSQS select 0) then {goto "DETECT_LOOP1"} exit ;---------------- #COMBAT ;---------------- _unit = _this select 1 _from = _this select 2 _delay = detectSQS select 4 detectSQS set [5, (detectSQS select 5) + [_unit]] if !(alive _unit) then {exit} _unit globalChat format ["%1 Detected", _from] _unit addEventHandler ["fired", {detectSQS set [0, true]}] _unit setBehaviour "COMBAT" _unit lockWp true _unit setCombatMode "RED" ~_delay if (alive _unit) then {detectSQS set [0, true]} exit ;---------------- #HIT ;---------------- _unit = (_this select 1) select 0 if !(_unit in (detectSQS select 5)) then {["COMBAT", _unit, "Enemy"] exec "detect.sqs"} exit ;---------------- #KILLED ;---------------- _unit = (_this select 1) select 0 ; detectable body tag - visibility value seems to low - another object ? _a = "SkeetDisk" createVehicle [0,0,0] _a attachTo [_unit, [0.5, 0, 0]] detectSQS set [3, (detectSQS select 3) + [[_unit, _a, false]]] _n = count (detectSQS select 3) ; range is to much - use trigger ? _unit addAction ["HIDE BODY", "detect.sqs", (_n - 1)] ; start body detection script if (_n == 1) then {["BODY"] exec "detect.sqs"} exit ;---------------- #BODY ;---------------- _enemies = detectSQS select 2 #BODY_LOOP1 _i = 0 _n = count (detectSQS select 3) #BODY_LOOP2 if (((detectSQS select 3) select _i) select 2) then {goto "BODY_SKIP"} _tag = ((detectSQS select 3) select _i) select 1 {if ((_x knowsAbout _tag > 0) && !(_x in (detectSQS select 5))) then {_x lockWp true;_x move (getPos _tag);["COMBAT",_x,"Body"] exec "detect.sqs"}} forEach _enemies #BODY_SKIP _i = _i + 1 if (_i < _n) then {goto "BODY_LOOP2"} ~1 if !(detectSQS select 0) then {goto "BODY_LOOP1"} exit ;---------------- #HIDE ;---------------- (_this select 0) removeAction (_this select 2) _index = _this select 3 _unit = ((detectSQS select 3) select _index) select 0 _tag = ((detectSQS select 3) select _index) select 1 _pos = getPos _unit _i = 0 ; animation needed here ? #BURRY ~0.01 _i = _i - 0.00025 _unit setPos [_pos select 0, _pos select 1, _i] if (_i > -0.5) then {goto "BURRY"} ((detectSQS select 3) select _index) set [2, true] _unit setPos [0,0,0] _tag setPos [0,0,0] deleteVehicle _unit deleteVehicle _tag titleText ["Body Hidden", "plain down"] exit ;---------------- #FIRED ;---------------- ... exit Some parts might seem like mandarin for new scripters but the old veterans from OFP will get the picture. Busy now. Some explanations and maybe working examples later... Cheers
  14. Hi, The script is not finished yet but when I get home I'll try to advance a little more in it with working samples so everything will be clear. But first, I'll explore Tajin suggestion about enableAI that I did'nt know exixts. I tought a disableAI could not be reversed so I was using careless mode to work with. Cheers
  15. Hi, This is one of the first thing I checked when I received the game. According to the test I did the situation is a little worse than just passing infos while dying. For example, put 2 east soldiers at a few hundred meters from each other. Use a silenced weapon and shoot one of them. If the other one has already knowledge of his comrad his knowsAbout about you will immediately be 1.5 (soldier knowsAbout player == 1.5). If he did not has any knowledge of his dead comrade his knowsAbout on you will jump from 0 to 1.5 as soon as he gets some knowsAbout of his dead comrade. Some times before having a real visual on him. Further more, if you shoot an enemy soldier and he did not see you, his knowsAbout on you will also jump to 1.5. The good news is knowing that BIS is using the 1.5 mark for those situations you have now something to work with (until a patch eventually change all of this...). I've made a script (not finished) that circumvent this problem. Very usefull for stealth mission. Cheers
  16. AliMag

    [GUIDE] AI Squad Command

    Well done! Cheers
  17. Hi, Thanks for the quick reply. Unfortunately nothing as really change from OFP. You can concatenate 2 strings together but cannot find/extract part of a string. It would be nice, for example, to be able to find "_SD_" in a string of ammo to know if it silenced or not. Maybe in a future patch... Thanks again Cheers
  18. Hi, @Soldier of Anarchy If you really want to maximize BIS profit use this site: http://forums.bistudio.com/showthread.php?t=77348 This is where I downloaded it. It took a couple of hours and the process is very simple. It's a bit more expensive but in my case the difference was compensate by the fact that I was not paying taxes (Canada). I can tell you that I am also the hard copy type but the trade off is worthed. Not only BIS receive more profit but you just trade having to use your dvd and dealing with a permanent securom solution every time you play for a one time online securom activation. Just backup your installation files and use them to reinstall. The resulting installation is the same as a hard copy. You activate once and that's it. No more dvd needed. Cheers
  19. Hi, Downloading it now from your site... I guess I'll answer my questions myself soon enough. Cheers Edit Download and install finished. My first question is already answered. Thumbs up... Cheers
  20. Hi, Thanks for the answers. I'm already aware of the mod folders. Just wanted to know if it was the same with steam. As for the patching process, I think the patches will not be the same for steam and other versions. Thanks again for your answers Cheers
  21. Hi, Last questions: 1 - Do I have to redownload to reinstall or I can save the installation files and use them to reinstall? 2 - Can I patch the game using the standard patches (including betas) or is this like steam? Thanks in advance Cheers
  22. Hi, So just to be clear: 1 - I can download any mod, install it in the arma folder and create a shortcut using it and it will work or is there anything else to do? 2 - Are patches different for the steam version. If this is the case, only steam can patch my game? Thanks in advance Cheers
  23. Hi, Here we go again with the love hate relationship with steam.:) There is a dedicated thread on the subject and I can tell you that I had a lot of fun reading it. Bottom line, if you are to lazy to patch your game yourself or are the careless type who loses or breaks his dvd regularly then steam is for you. Otherwise, there is no advantage what so ever to need someone else every time you reinstall or patch or whatever. Further more, you cant land, exchange or sell your game since it is lock with your steam account. Personnally, I had never break or lost any cd/dvd game and I like the freedom that the hard copy gives me. No external autorisation in the way. Last but not the least, it seems that mod loaders will not easily work with steam since your game is not launch by you but by the steam executable. Go to the dedicated thread on steam to see how people are already having fun with a dozen of shortcuts on their desktop... A game like Arma may not be the best candidate for that kind of online manager. Cheers
×