Jump to content

D34TH

Banned
  • Posts

    151
  • Joined

  • Donations

    50.00 GBP 

Posts posted by D34TH

  1. off-topic, just for fun self paradrop with chestpack swap to back after landing:

    Spoiler

    []spawn{
     _z=500;
     [player, (player call removebackpackback)] call setbackpackonchest;
     player addbackpack "B_Parachute";
     player setpos [getpos player select 0,getpos player select 1,_z];
      waitUntil {istouchingground player};
     player call removebackpackback;
     [player, (player call removebackpackchest)] call setbackpackonback;
    };

    paradrop eject with auto chestpack swap to back after landing (this would be nice as an action menu ...)

    Spoiler

    []spawn{
    [player, (player call removebackpackback)] call setbackpackonchest;
    player addbackpack "B_Parachute";
    player action ["eject",vehicle player];
    waitUntil {istouchingground player};
    player call removebackpackback;
    [player, (player call removebackpackchest)] call setbackpackonback;
    };

     and safety parachute, for accidental ejection,  detects ejection(keyboard), player falling and gives parachute, with auto open

    Spoiler

    []spawn{  
     waitUntil {inputAction "eject">0};
    _i=getposasl player select 2 ;  
    sleep 1;  
    _f=getposasl player select 2 ;  
    if ((_i-_f) > 2) then {  
    [player, (player call removebackpackback)] call setbackpackonchest;   
    player addbackpack "B_Parachute";  
    waituntil {getposasl player select 2 < 160};
    player action ["OpenParachute", player];  
    waitUntil {istouchingground player};   
    player call removebackpackback;   
    [player, (player call removebackpackchest)] call setbackpackonback;   
    };  
    };

     

  2. @ JOCHEM, nice, but why start it at(-245,+245) from the player position ?

    _startPos = [(_pos select 0) - 245,(_pos select 1) + 245,0];

    ?

     

    need a bit of help with this one as i am trying to get the parachute removed and the backpack on back only after the landing .... :) :

    Spoiler

    _z=500;
    [player, (player call removebackpackback)] call setbackpackonchest;
    player addbackpack "B_Parachute";
    player setpos [getpos player select 0,getpos player select 1,_z];
    sleep 5;
    waitUntil {getposatl player select 2 < 1};
    player call removebackpackback;
    [player, (player call removebackpackchest)] call setbackpackonback;

     

    the sleep 5 and waituntil do not work as intended ...

  3. just some thoughts:

    1) spawn on high ground at a random distance from the AO center or the LR radio detected location

    2) force prone or get in cover (spawning on high ground gives them some advantage), it wouldn't be more of a sitting duck than the rest of the AI i think

    3) definition could be using LR radio with a high frequency of transmissions / minute (not ref to the the freq at which the radio is tuned at  :) ) for x minutes from approx the same spot, similar to mortar detection script; as far as detecting/locating the chatter source ... that is the most interesting challenge i think (if you want to code true AI triangulation abilities and not just get the position of the SL player or the radio object itself  :) )

    4)spawning at a high ground will solve the not being in play issue as it would be in a position to spot a major part of the AO

     

    if it is worth it in terms of time/energy spent to do it this is of course entirely up to you to decide :)

  4. 37 minutes ago, Noah_Hero said:

    I am actually more than happy if only a few experienced players pick SL/CMD because when someone unexperienced takes these ones he´ll most likely ruin the mission/fun...

    @Noah_Hero i appreciate your honesty as i believe it is time to openly discuss the matter

     

    i wonder how would those "experienced" have gotten their experience given the suggested approach.....

     

     this kind of happiness , maybe shared by a few others is what i believe to be the main core reason for the "lack of volunteers for leading roles" problem

     

    in plain words, want more volunteers ? then train, help or at least truly let people try, stop continuous negative comments and gossip , stop discouraging them... give advice only at debrief (if you truly have something worthy to advice) and your feedback after 1 month and keep it strictly objective... it is quite simple really ...

     

    On a broader note, I think AWE is a great community, best i have seen so far in ARMA, with great effort put into it over many years, but it needs a clear management decision which should reflect in every single aspect and every single player behavior: is it a closed community  or an opened/emerging one, truly welcoming new joiners looking for the unique style of gaming experience AWE represents ?

  5. I agree some are afraid/don't like to play the SL roles but it is not because of any AI Gauntlet would spawn ... there is another main core reason ...

     

    PlatCO is a rare occurrence and would not be affected indeed

     

    The idea is not to make SL afraid of snipers but to tone down micromanagement/ sergeant like leading behavior, in a game realistic kind of way

     

    SL, PlatCo are management roles and can be rightfully done in many ways, Copey has his own valid way of doing it, befitting his management style, personality and his role in AWE but it is not the only way IMO, it is very useful to do the training and see his approach, but blindly copying :) it (or asking it from everyone else) might not work for everyone ... and could lead to a groupthink, unwanted phenomenon

     

    The unwritten prerequisite of being on the zeus list or admin or being an already recognized good SL, necessary atm to be allowed to try and play command roles (or any other role but common squad member as a matter of fact) without continuous, while on mission, scrutiny/discouraging comments from some who either want that role/asset or would like someone else to have it, or would like only white-listed players to ever have it, or are encouraged to do it, or think it looks cool in a stream,  or just do it cause is what they have seen others do etc is the main core reason IMO and is what makes some people uncomfortable with getting in a command role.

    Of course I could be wrong, but my 20 years of real-life people management led me to this opinion.

     

     

     

  6. The idea is to have once per week//month//year a different "crazy training"/testing hour consisting of :

    1 any mod allowed /  debug on

    2 use any gear//vehicle

     

     

    reason: while doing all of the above on local  is possible, testing some scripts and how a mod would work in the real multiplayer Gauntlet environment is unmatchable + the use of any gear or asset no matter the role would be a fun way to crazy train and let off some precisely colored steam (latter part doable only in the server) and make it easier to comply with the complexities present in the rest of the time imo (+could also test AI response to unusual assets and methods being thrown at them)

     

    doability: i do not know

     

  7. The idea is to spawn *AI* snipers once *BLUEFOR* vip is detected (radio transmission rate/min and voice volume way above avg - "the micromanager / drill sergeant approach" -   for ex)

     

    realism : triangulation to find the vip emitting radio pos is achievable without necessarily decoding the transmission, enemy focus on vip once detected is realist

     

    doability : spawning AI in response to something is already implemented, presence of LR radio in gear is there , AI LR triangulation/detection of transmission rate/min and voice volume i dunno but should be because would be a nice tool

     

    reason: the lack of volunteers for command pos is being tackled by giving extra incentives and training (may or may not solve the core issue), the vip com usage could be tackled by this  approach (in the end, what kind of commander shies away from a good extra challenge? and to keep a low profile in general and minimize vip radio chatter could be a most welcomed challenge imo)

     

    *jamming LR transmission  for 1,2 min from time to time could also be a realistic challenge ...

  8. did some further testing also with a random

    Spoiler

    _counter=0;
    _radius=1000;
    _npix=_radius^2/100;
    _i=1;
    _highestpos=[0,0,0];
    _highestz = 0;
    _startpos = getpos player;
    while {_i<_npix} do {
    _counter = counter +1;
    _currentpos = player getpos [10+random _radius , random 360];
    _currentz = getTerrainHeightASL _currentpos;
    if (_currentz > _highestz) then {
    _highestz = _currentz;   
    _highestpos = _currentpos;
    };
    _i = _i + 1;
    };
    player setPos _highestPos;

     a spiral method

    Spoiler

    _counter=0;
    _acc=10010;
    _radius=1000
    _r=10;  
    _highestpos=[0,0,0];  
    _highestz = 0;  
    _startpos = getpos player;  
    while {_r<_acc} do {  
    _counter = counter +1;
    _currentpos = player getpos [_r/(_acc/_radius),36*_r];  
    _currentz = getTerrainHeightASL _currentpos;  
    if (_currentz > _highestz) then {  
    _highestz = _currentz;    
    _highestpos = _currentpos;};  
     
    _r = _r + 1;  
    };  
    player setPos _highestPos;

    and circles at 10m accuracy

    Spoiler

    _counter =0;
    _radius=1000;
    _r=10;
    _highestpos=[0,0,0];
    _highestz = 0;
    _startpos = getpos player;
    while {_r<_radius} do {
    _ang=0;
    while {_ang<360} do {
    _counter = counter +1;
    _currentpos = player getpos [_r,_ang];
    _currentz = getTerrainHeightASL _currentpos;
    if (_currentz > _highestz) then {
    _highestz = _currentz;   
    _highestpos = _currentpos;};
    _ang = _ang + (360/(0.201*_r));
    };
    _r = _r + 10;
    };
    player setPos _highestPos;

    and the results at 1000m, 10m accuracy were:

    square :65ms

    circles: 88ms

    random: 76ms

    spiral: 94ms

     

  9. Truth is i have inadvertently cheated at the long ranges accuracy since it is searching in arcs ...

    Spoiler

    if you replace _ang = _ang + (360/(4+0.032*_r)); with _ang = _ang + (360/(0.201*_r));  you look at a truer 10m accuracy with (10,000 measurements at 1000m similar to the squares method) with 80ms execution time

     I'll try an (archimede) spiral instead of multiple circles to see if it gets faster.

    About indexing the map i thought it was a good idea at the time only because i didn't know about getTerrainHeight , but since it exists there should already be a map coord database where it searches the heights... or it works in some other way ...

    thx !

     

  10. @Jochem i'm getting better (20 ms) ... :) thank you again !

    Spoiler

    _radius=1000;
    _r=10;
    _highestpos=[0,0,0];
    _highestz = 0;
    _startpos = getpos player;
    while {_r<_radius} do {
    _ang=0;
    while {_ang<360} do {
    _currentpos = player getpos [_r,_ang];
    _currentz = getTerrainHeightASL _currentpos;
    if (_currentz > _highestz) then {
    _highestz = _currentz;  
    _highestpos = _currentpos;};
    _ang = _ang + (360/(4+0.032*_r));
    };
    _r = _r + 10;
    };
    player setPos _highestPos;

     

  11. @Jochem thank you !

    i didn't know about getterrainheight ... :)   spawning the objects was part for visual fun in the editor, part cause i only knew about getpos for player / object, and yes it froze the pc for some seconds :lol:;  using local variables was not an issue in the editor but i know it must be done if the code is to be used anywhere else. I am not a programmer ...  so i am not ashamed ... it is just fun for me trying to understand how coding works in Arma ... and maybe, one day, help to see AI do more than circular random patrols as if unaware of any tactical value of the terrain topology and features around them.

     

    Thank you again for the kind words, the advice and the 83x :lol: faster code !

    tiny question: is there any function similar to getTerrainheight to scan if a given area has vegetation, trees, rocks, water, constructions or roads on it ?

  12. waypoints coordinates generator for patrolling high ground 1000m around an area:


     

    Spoiler

     

    init = getposatl player;   
    j=30;    
    flagx = 0; flagy = 0;  flagz = 0; maxflagz = 0;     
    _coordinate = []; _tgtcoord = [];  
    while {j<1001} do { i=0; accuracy = j/10;
    while {i<accuracy} do {     
    dummy = createVehicle ["Land_PowerPoleWooden_small_F", init, [], j, "NONE"] ;       
    _coordinate = getposasl dummy;       
    flagx = _coordinate select 0;     
    flagy = _coordinate select 1;     
    flagz = _coordinate select 2;    
    if (flagz > maxflagz) then {maxflagz = flagz; tgtflagx = flagx; tgtflagy = flagy;};
    deletevehicle dummy;   
    i=i+1;    
    };       
    _tgtcoord = [tgtflagx,tgtflagy,maxflagz];
    diag_log format ["high elevation waypoint coordinates  : %1",_tgtcoord];
    gg = [tgtflagx,tgtflagy,0];   
    createVehicle ["Land_TTowerBig_2_F", gg, [], 0, "CAN_COLLIDE"];
    j=j+30;
    };


     

    waypoints coordinates generator for patrolling low ground (valley) 1000m around an area:

     

    Spoiler

    init = getposatl player;   
    j=30;    
    flagx = 0; flagy = 0;  flagz = 0; minflagz = 9000;     
    _coordinate = []; _tgtmincoord = [];  
    while {j<1001} do { i=0; accuracy = j/10;
    while {i<accuracy} do {     
    dummy = createVehicle ["Land_PowerPoleWooden_small_F", init, [], j, "NONE"] ;       
    _coordinate = getposasl dummy;       
    flagx = _coordinate select 0;     
    flagy = _coordinate select 1;     
    flagz = _coordinate select 2;    
    if (flagz >0 && flagz < minflagz) then {minflagz = flagz; tgtminx = flagx; tgtminy = flagy; };
    deletevehicle dummy;   
    i=i+1;    
    };       
    _tgtmincoord = [tgtminx,tgtminy,minflagz];
    diag_log format ["low elevation waypoint coordinates: %1",_tgtmincoord];
    ggmin = [tgtminx,tgtminy,0];   
    createVehicle ["Land_TTowerBig_2_F", ggmin, [], 0, "CAN_COLLIDE"];
    j=j+30;
    };

     

     

  13. given the huge potential and the level of enthusiasm on the subject  i have taken a suicidal, bold first step into the world of Arma 3 coding with an amazing work designed to find one of the points on the highest elevation contour line around a given coordinate (the player in this case, but why not the center of an AO...) and to spawn a wonderful tower at that amazing bellevue location:


     

    Spoiler

     

    init = getposatl player;
    scancircle = 500;
    accuracy = scancircle*2; 
    flagx = 0; flagy = 0;  flagz = 0; maxflagz = 0;  
    _coordinate = []; _tgtcoord = [];   i=0;    
    while {i<accuracy} do {  
    dummy = createVehicle ["TargetP_Inf2_F", init, [], scancircle, "NONE"] ;    
    _coordinate = getposasl dummy;  
    diag_log format ["coordinate: %1",_coordinate]; 

    flagx = _coordinate select 0;  
    flagy = _coordinate select 1;  
    flagz = _coordinate select 2; 
    if (flagz > maxflagz) then {maxflagz = flagz; tgtflagx = flagx; tgtflagy = flagy;
    diag_log format ["newmax elevation coordinate is : %1 , %2 , %3",tgtflagx, tgtflagy, maxflagz];

    };

    deletevehicle dummy;
    i=i+1;

    };     
    _tgtcoord = [tgtflagx,tgtflagy,maxflagz];
    diag_log format ["FINAL max elevation coordinate is : %1",_tgtcoord];

    gg = [tgtflagx,tgtflagy,0];
    createVehicle ["Land_TTowerBig_2_F", gg, [], 0, "CAN_COLLIDE"];

     

     

    my extremely limited coding "abilities"  (as demonstrated above; "don't make me regret this") assure me that a much better code to do this task would be a piece of cake for most of you  :) .... my desire would be to write a function designed to find such a "high ground" (or more around an AO) in order to be able to send some AI to patrol there ... maybe a single scan of each map could generate a database of coordinates for that map to be used in a much better approach to coding this task ... :huh:

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    *ver1.1 also finds the minimum height coordinate and spawns a hospital there :

     

    Spoiler

    init = getposatl player;  
    scanradius = 300;  
    accuracy = scanradius*2;   
    flagx = 0; flagy = 0;  flagz = 0; maxflagz = 0; minflagz = 4000;   
    _coordinate = []; _tgtcoord = []; _tgtmincoord = [];   i=0;      
    while {i<accuracy} do {    
    dummy = createVehicle ["Land_PowerPoleWooden_small_F", init, [], scanradius, "NONE"] ;      
    _coordinate = getposasl dummy;      
    flagx = _coordinate select 0;    
    flagy = _coordinate select 1;    
    flagz = _coordinate select 2;   
    if (flagz > maxflagz) then {maxflagz = flagz; tgtflagx = flagx; tgtflagy = flagy;} else
    {if (flagz >0 && flagz < minflagz) then {minflagz = flagz; tgtminx = flagx; tgtminy = flagy; };
    deletevehicle dummy;  
    i=i+1;   
    };      
    };
    _tgtcoord = [tgtflagx,tgtflagy,maxflagz];
    _tgtmincoord = [tgtminx,tgtminy,minflagz];  
    diag_log format ["FINAL max elevation coordinate is : %1",_tgtcoord];
    diag_log format ["FINAL min elevation coordinate is : %1",_tgtmincoord];
    gg = [tgtflagx,tgtflagy,0];  
    ggmin = [tgtminx,tgtminy,0];
    createVehicle ["Land_TTowerBig_2_F", gg, [], 0, "CAN_COLLIDE"];
    createVehicle ["Land_Hospital_main_F", ggmin, [], 0, "CAN_COLLIDE"];

     

     

  14. 52XD

     

    13:34:03 Error in expression <asInterface ) then
    {    _aaIndex = 7.89;
    {    missionControl addAction [(missionCNames>
    13:34:03   Error position: <missionControl addAction [(missionCNames>
    13:34:03   Error Undefined variable in expression: missioncontrol
    13:34:03 File mpmissions\__cur_mp.lingor3\local\missions.sqf, line 130

     

     

×
×
  • Create New...