Kolmain 6 Posted April 3, 2011 Im attempting to code a guerilla module; ie the ability to hide and disguise yourself as a civilian when youre safe. Heres my theory, first a simple check, if the player has a weapon, setCaptive false, no weapon, setCaptive true. Ive got this and it works, but clearly i dont want you to drop your weapon mid combat and just run and not get shot- unrealistic. So if you raid a checkpoint and kill the opfor, then wait X seconds while there are no opfor present within a 150M radius then it resets, given youre not carrying a weapon. So with this theres some issues, im planning to use setVariable on the player to determine if theres opfor around the player but how do I create a trigger and attach it to the player that checks for BLUFOR AND REDFOR? The player is independent :) Basic idea, complex scenario. Also some side questions that can help me get started tomorrow; if i run this: While {alive player} do { //code here }; and the player dies/respawns, will it run once they respawn again? Also, what about KnowsAbout? Can that help here? How do I determine who to check knowsAbout for? Thanks! Share this post Link to post Share on other sites
Melmarkian 11 Posted April 3, 2011 (edited) Hi, I have a little script I used to simulate such undercoveractions: It does: - set you to captive - removes captive as long as you carry a primaryweapon - If you shoot inside the radius it removes setcaptive and sends the nearest unit looking for the position where shoot was fired. - removes captive when you stay a certain time near an enemy - It will reset you to captive when: - Your distance to the nearestunit of side is greater then _getaway - The knowsabout of the nearestunit of side is lesser than 1.4 You call it with: nul = [playername, radius(distance the script searches for units), getaway (distance for a reset when you are found), side ( which side is considered enemy) ] execvm "under.sqf"; undercover = true; _bomber = _this select 0; _radius = _this select 1; _getaway = _this select 2; _side = _this select 3; _bomber addEventHandler ["Fired", {shooting = true;}]; sleep 1; while {(alive _bomber) AND undercover} do { shooting = false; _bomber setCaptive true; gotya = false; sleep 2; while {primaryWeapon _bomber != ""} do { _bomber setCaptive false; hintSilent "You carry a weapon!"; sleep 3; }; _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side countSide _nearestunits > 0) then{ { _unit = _x; if(side _unit == _side) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; if (shooting AND (count _nearestunitofside != 0) AND ((_nearestunitofside select 0) distance _bomber < _getaway - 50) ) then { gotya = true; hint "Someone must have heard the shot"; sleep 4; _bomber setCaptive false; (_nearestunitofside select 0) domove position _bomber; }; if((_nearestunitofside select 0) distance _bomber < 20) then { sleep 4; if((_nearestunitofside select 0) distance _bomber < 20 ) then { _random = floor(random 3); _alertmessage = ["Watch Out!", "Keep Distance!", "Someone´s watching us", "They notice you!"] select _random; call compile format ["hint '%1';", _alertmessage]; sleep 8; if((_nearestunitofside select 0) distance _bomber < 14 ) then { gotya = true; _bomber setCaptive false; hint "THEY HAVE FOUND YOU"; sleep 4; (_nearestunitofside select 0) glanceAt _bomber; (_nearestunitofside select 0) reveal _bomber; sleep 7; }; }; }; }; while {gotya} do { _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side countSide _nearestunits > 0) then{ { _unit = _x; if(side _unit == _side) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; hintSilent "Get Away"; sleep 4; //Hint Format ["closest unit is %1",_nearestunitofside select 0]; if(((_nearestunitofside select 0) distance _bomber > _getaway) OR ((_nearestunitofside select 0) knowsAbout _bomber < 1.4) OR (count _nearestunitofside == 0)) then { hint "You should be safe now"; gotya = false; shooting = false; }; }; }; }; // While alive and undercover And I also made an script you can execute for units in your group to give them the same status: I use it in the initfield of the unit with: nul = [unitname] execVM "undercoverbuddy.sqf"; private ["_member"]; _member = _this select 0; waitUntil {undercover}; while {undercover} do { _member setCaptive true; removeAllWeapons _member; _member disableAI "AUTOTARGET"; _member disableAI "TARGET"; _member setBehaviour "CARELESS"; waitUntil {shooting OR gotya}; _member enableAI "AUTOTARGET"; _member enableAI "TARGET"; _member setBehaviour "AWARE"; _member setCaptive false; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addWeapon "Makarov"; waitUntil {!gotya}; }; _member enableAI "AUTOTARGET"; _member enableAI "TARGET"; _member setBehaviour "AWARE"; _member setCaptive false; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addMagazine "8Rnd_9x18_Makarov"; _member addWeapon "Makarov"; Maybe some of this helps you. I tested the script with respawn, but I didn´t find a quick solution. Edited April 3, 2011 by Melmarkian Share this post Link to post Share on other sites
Kolmain 6 Posted April 3, 2011 (edited) My issue is that I need the script for MP use and that is a global variable defined, im going to see if i cant tweak it to get it to work ;) EDIT: nope :( _bomber[size=2][color=#000000] = [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]player[/color][/size][/color][/size][size=2][color=#000000];[/color] [/size][size=2][color=#808080][size=2][color=#808080]_radius[/color][/size][/color][/size][size=2][color=#000000] = 150;[/color] [/size][size=2][color=#808080][size=2][color=#808080]_getaway[/color][/size][/color][/size][size=2][color=#000000] = 300;[/color] [/size][size=2][color=#808080][size=2][color=#808080]_side[/color][/size][/color][/size][size=2][color=#000000] = [[/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]WEST[/color][/size][/color][/size][size=2][color=#000000],[/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]EAST[/color][/size][/color][/size][size=2][color=#000000]];[/color] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2][color=#000000] [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]addEventHandler[/color][/size][/color][/size][size=2][color=#000000] ["Fired", {[/color][/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2][color=#000000] [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2][color=#000000] ["shot", [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]true[/color][/size][/color][/size][size=2][color=#000000]];}];[/color] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2][color=#000000] [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2][color=#000000] ["shot", [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2][color=#000000]];[/color] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2][color=#000000] [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2][color=#000000] ["undercover", [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]true[/color][/size][/color][/size][size=2][color=#000000]];[/color] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2][color=#000000] [/color][/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2][color=#000000] ["caught", [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2][color=#000000]];[/color] [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2][color=#000000] 1;[/color] [/size][size=2][color=#0000ff][size=2][color=#0000ff]while[/color][/size][/color][/size][size=2] {([/size][size=2][color=#ff0000][size=2][color=#ff0000]alive[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2]) [/size][size=2][color=#0000ff][size=2][color=#0000ff]AND[/color][/size][/color][/size][size=2] ([/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]getVariable[/color][/size][/color][/size][size=2] "undercover"} [/size][size=2][color=#0000ff][size=2][color=#0000ff]do[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["shot", [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setCaptive[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]true[/color][/size][/color][/size][size=2]; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["caught", [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 2; [/size][size=2][color=#0000ff][size=2][color=#0000ff]while[/color][/size][/color][/size][size=2] {[/size][size=2][color=#ff0000][size=2][color=#ff0000]primaryWeapon[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]![/color][/size][/color][/size][size=2]= ""} [/size][size=2][color=#0000ff][size=2][color=#0000ff]do[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setCaptive[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]hintSilent[/color][/size][/color][/size][size=2] "You carry a weapon!"; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 3; }; [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2] = [/size][size=2][color=#ff0000][size=2][color=#ff0000]nearestObjects[/color][/size][/color][/size][size=2] [[/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2],["Man","Car","Tank"],[/size][size=2][color=#808080][size=2][color=#808080]_radius[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] = []; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2]([/size][size=2][color=#808080][size=2][color=#808080]_side[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]countSide[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2] > 0) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2]{ { [/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2] = [/size][size=2][color=#808080][size=2][color=#808080]_x[/color][/size][/color][/size][size=2]; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2]([/size][size=2][color=#ff0000][size=2][color=#ff0000]side[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2] == [/size][size=2][color=#808080][size=2][color=#808080]_side[/color][/size][/color][/size][size=2]) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2]{[/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] = [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] + [[/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2]]}; } [/size][size=2][color=#0000ff][size=2][color=#0000ff]foreach[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2];   [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2] (([/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]getVariable[/color][/size][/color][/size][size=2] "shot") [/size][size=2][color=#0000ff][size=2][color=#0000ff]AND[/color][/size][/color][/size][size=2] ([/size][size=2][color=#ff0000][size=2][color=#ff0000]count[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]![/color][/size][/color][/size][size=2]= 0) [/size][size=2][color=#0000ff][size=2][color=#0000ff]AND[/color][/size][/color][/size][size=2] (([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]distance[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] < [/size][size=2][color=#808080][size=2][color=#808080]_getaway[/color][/size][/color][/size][size=2] - 50) ) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["caught", [/size][size=2][color=#0000ff][size=2][color=#0000ff]true[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]hint[/color][/size][/color][/size][size=2] "Someone must have heard the shot!"; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 4; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setCaptive[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]; ([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]domove[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]position[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2]; }; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2](([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]distance[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] < 20) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2] { [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 4; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2](([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]distance[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] < 20 ) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_random[/color][/size][/color][/size][size=2] = [/size][size=2][color=#ff0000][size=2][color=#ff0000]floor[/color][/size][/color][/size][size=2]([/size][size=2][color=#ff0000][size=2][color=#ff0000]random[/color][/size][/color][/size][size=2] 3); [/size][size=2][color=#808080][size=2][color=#808080]_alertmessage[/color][/size][/color][/size][size=2] = ["Watch Out!", "Keep Distance!", "Someone´s watching us", "They notice you!"] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_random[/color][/size][/color][/size][size=2]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]call[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]compile[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]format[/color][/size][/color][/size][size=2] ["hint '[/size][size=2][color=#0000ff][size=2][color=#0000ff]%[/color][/size][/color][/size][size=2]1';", [/size][size=2][color=#808080][size=2][color=#808080]_alertmessage[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 8; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2](([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]distance[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] < 14 ) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["caught", [/size][size=2][color=#0000ff][size=2][color=#0000ff]true[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setCaptive[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]hint[/color][/size][/color][/size][size=2] "THEY HAVE FOUND YOU"; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 4; ([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]glanceAt[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2]; ([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]reveal[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 7; }; }; }; }; [/size][size=2][color=#0000ff][size=2][color=#0000ff]while[/color][/size][/color][/size][size=2] {([/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]getVariable[/color][/size][/color][/size][size=2] "undercover")} [/size][size=2][color=#0000ff][size=2][color=#0000ff]do[/color][/size][/color][/size][size=2] { [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2] = [/size][size=2][color=#ff0000][size=2][color=#ff0000]nearestObjects[/color][/size][/color][/size][size=2] [[/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2],["Man","Car","Tank"],[/size][size=2][color=#808080][size=2][color=#808080]_radius[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] = []; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2]([/size][size=2][color=#808080][size=2][color=#808080]_side[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]countSide[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2] > 0) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2]{ { [/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2] = [/size][size=2][color=#808080][size=2][color=#808080]_x[/color][/size][/color][/size][size=2]; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2]([/size][size=2][color=#ff0000][size=2][color=#ff0000]side[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2] == [/size][size=2][color=#808080][size=2][color=#808080]_side[/color][/size][/color][/size][size=2]) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2]{[/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] = [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] + [[/size][size=2][color=#808080][size=2][color=#808080]_unit[/color][/size][/color][/size][size=2]]}; } [/size][size=2][color=#0000ff][size=2][color=#0000ff]foreach[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunits[/color][/size][/color][/size][size=2]; [/size][size=2][color=#ff0000][size=2][color=#ff0000]hintSilent[/color][/size][/color][/size][size=2] "Get Away"; [/size][size=2][color=#ff0000][size=2][color=#ff0000]sleep[/color][/size][/color][/size][size=2] 4; [/size][size=2][color=#0000ff][size=2][color=#0000ff]if[/color][/size][/color][/size][size=2]((([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]distance[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] > [/size][size=2][color=#808080][size=2][color=#808080]_getaway[/color][/size][/color][/size][size=2]) [/size][size=2][color=#0000ff][size=2][color=#0000ff]OR[/color][/size][/color][/size][size=2] (([/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]select[/color][/size][/color][/size][size=2] 0) [/size][size=2][color=#ff0000][size=2][color=#ff0000]knowsAbout[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] < 1.4) [/size][size=2][color=#0000ff][size=2][color=#0000ff]OR[/color][/size][/color][/size][size=2] ([/size][size=2][color=#ff0000][size=2][color=#ff0000]count[/color][/size][/color][/size][size=2] [/size][size=2][color=#808080][size=2][color=#808080]_nearestunitofside[/color][/size][/color][/size][size=2] == 0)) [/size][size=2][color=#0000ff][size=2][color=#0000ff]then[/color][/size][/color][/size][size=2] { [/size][size=2][color=#ff0000][size=2][color=#ff0000]hint[/color][/size][/color][/size][size=2] "You should be safe now"; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["caught", [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]]; [/size][size=2][color=#808080][size=2][color=#808080]_bomber[/color][/size][/color][/size][size=2] [/size][size=2][color=#ff0000][size=2][color=#ff0000]setVariable[/color][/size][/color][/size][size=2] ["caught", [/size][size=2][color=#0000ff][size=2][color=#0000ff]false[/color][/size][/color][/size][size=2]]; }; }; }; }; [/size] Edited April 3, 2011 by Kolmain Share this post Link to post Share on other sites
Melmarkian 11 Posted April 3, 2011 Sorry, don´t really know anything about the MP stuff. :( Share this post Link to post Share on other sites
Kolmain 6 Posted April 3, 2011 while {(alive_bomber) AND (_bombergetVariable "undercover"} do { is that correct? Share this post Link to post Share on other sites
Kolmain 6 Posted April 4, 2011 Waiting on feedback on the syntax to continue... Share this post Link to post Share on other sites
Melmarkian 11 Posted April 4, 2011 Sorry, I think this should be working when you set the variable with setVariable: _bomber setVariable ["undercover",true]; while {(alive _bomber) AND (_bomber getVariable "undercover")} do { } The values are returned correctly. But I cannot say anything about locality. Share this post Link to post Share on other sites
Kolmain 6 Posted April 5, 2011 But does that check if it is true or just retrieve the value? Confused on running this check, anyone have any ideas? Share this post Link to post Share on other sites
Melmarkian 11 Posted April 5, 2011 It checks if it is true. I made a little testmission where you can see the check and change the variable with radio alpha and beta: http://www.mediafire.com/?4cc3tu1gwmla8sy Share this post Link to post Share on other sites
Kolmain 6 Posted April 5, 2011 Alright, then there must be some wrong syntax in there, can anyone catch it? Share this post Link to post Share on other sites
Melmarkian 11 Posted April 5, 2011 (edited) I looked over your script and found some errors: - It doesn´t work with an Array as _side. - At the last part it just checked if undercover was true. Instead it should have checked if caught was true. I modified it and this works on my machine (not tested on MP), but just with one side. I will see what can be done with two sides. private ["_nearestunitofside","_unit","_random","_alertmessage","_nearestunits","_bomber","_radius","_getaway","_side"]; _bomber = player; _radius = 150; _getaway = 300; _side = EAST; _bomber addEventHandler ["Fired", {_bomber setVariable ["shot", true];}]; _bomber setVariable ["shot", false]; _bomber setVariable ["undercover", true]; _bomber setVariable ["caught", false]; sleep 1; while {(alive _bomber) AND (_bomber getVariable "undercover")} do { _bomber setVariable ["shot", false]; _bomber setCaptive true; _bomber setVariable ["caught", false]; sleep 2; while {primaryWeapon _bomber!= ""} do { _bomber setCaptive false; hintSilent "You carry a weapon!"; sleep 3; }; _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side countSide _nearestunits > 0) then{ { _unit = _x; if(side _unit == _side) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; if ((_bomber getVariable "shot") AND (count _nearestunitofside != 0) AND ((_nearestunitofside select 0) distance _bomber < _getaway - 50) ) then { _bomber setVariable ["caught", true]; hint "Someone must have heard the shot!"; sleep 4; _bomber setCaptive false; (_nearestunitofside select 0) domove position _bomber; }; if((_nearestunitofside select 0) distance _bomber < 20) then { sleep 4; if((_nearestunitofside select 0) distance _bomber < 20 ) then { _random = floor(random 3); _alertmessage = ["Watch Out!", "Keep Distance!", "Someone´s watching us", "They notice you!"] select _random; call compile format ["hint '%1';", _alertmessage]; sleep 8; if((_nearestunitofside select 0) distance _bomber < 14 ) then { _bomber setVariable ["caught", true]; _bomber setCaptive false; hint "THEY HAVE FOUND YOU"; sleep 4; (_nearestunitofside select 0) glanceAt _bomber; (_nearestunitofside select 0) reveal _bomber; sleep 7; }; }; }; }; while {(_bomber getVariable "caught")} do { _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side countSide _nearestunits > 0) then{ { _unit = _x; if(side _unit == _side) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; hintSilent "Get Away"; sleep 4; if(((_nearestunitofside select 0) distance _bomber > _getaway) OR ((_nearestunitofside select 0) knowsAbout _bomber < 1.4) OR (count _nearestunitofside == 0)) then { hint "You should be safe now"; _bomber setVariable ["caught", false]; _bomber setVariable ["caught", false]; }; }; }; }; Changed it a bit more and now it works with both sides: private ["_nearestunitofside","_unit","_random","_alertmessage","_nearestunits","_bomber","_radius","_getaway","_side"]; _bomber = player; _radius = 150; _getaway = 300; _side = [WEST,EAST]; _bomber addEventHandler ["Fired", {_bomber setVariable ["shot", true];}]; _bomber setVariable ["shot", false]; _bomber setVariable ["undercover", true]; _bomber setVariable ["caught", false]; sleep 1; while {(alive _bomber) AND (_bomber getVariable "undercover")} do { _bomber setVariable ["shot", false]; _bomber setCaptive true; _bomber setVariable ["caught", false]; sleep 2; while {primaryWeapon _bomber!= ""} do { _bomber setCaptive false; hintSilent "You carry a weapon!"; sleep 3; }; _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side select 0 countSide _nearestunits > 0 OR _side select 1 countSide _nearestunits > 0) then{ { _unit = _x; if((side _unit == _side select 0) OR (side _unit == _side select 1) ) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; if ((_bomber getVariable "shot") AND (count _nearestunitofside != 0) AND ((_nearestunitofside select 0) distance _bomber < _getaway - 50) ) then { _bomber setVariable ["caught", true]; hint "Someone must have heard the shot!"; sleep 4; _bomber setCaptive false; (_nearestunitofside select 0) domove position _bomber; }; if((_nearestunitofside select 0) distance _bomber < 20) then { sleep 4; if((_nearestunitofside select 0) distance _bomber < 20 ) then { _random = floor(random 3); _alertmessage = ["Watch Out!", "Keep Distance!", "Someone´s watching us", "They notice you!"] select _random; call compile format ["hint '%1';", _alertmessage]; sleep 8; if((_nearestunitofside select 0) distance _bomber < 14 ) then { _bomber setVariable ["caught", true]; _bomber setCaptive false; hint "THEY HAVE FOUND YOU"; sleep 4; (_nearestunitofside select 0) glanceAt _bomber; (_nearestunitofside select 0) reveal _bomber; sleep 7; }; }; }; }; while {(_bomber getVariable "caught")} do { _nearestunits = nearestObjects [_bomber,["Man","Car","Tank"],_radius]; _nearestunitofside = []; if(_side select 0 countSide _nearestunits > 0 OR _side select 1 countSide _nearestunits > 0) then{ { _unit = _x; if(side _unit == _side select 0 OR side _unit == _side select 1) then{_nearestunitofside = _nearestunitofside + [_unit]}; } foreach _nearestunits; hintSilent "Get Away"; sleep 4; if(((_nearestunitofside select 0) distance _bomber > _getaway) OR ((_nearestunitofside select 0) knowsAbout _bomber < 1.4) OR (count _nearestunitofside == 0)) then { hint "You should be safe now"; _bomber setVariable ["caught", false]; _bomber setVariable ["caught", false]; }; }; }; }; I hope that helps you Edited April 5, 2011 by Melmarkian Share this post Link to post Share on other sites
Kolmain 6 Posted April 6, 2011 will test mate thanks! Share this post Link to post Share on other sites