DIS-Wolv / ODD

Operations Dynamique de la DIS
3 stars 0 forks source link

rework Patrouille #48

Open DIS-Wolv opened 8 months ago

DIS-Wolv commented 8 months ago

l'idée est de faire spawn que une partie des patrouilles a la fois ( par exemple 4) et de les faire respawn au fur et a mesure qu'elle meurt

DIS-Wolv commented 6 months ago

un petit test qui peux aiguillé sur comment faire :

  1. executé ca dans la ville a testé
    
    _locs = nearestLocations[position player, ODD_var_LocationType, 50];

loc = _locs select 0;

text loc;

2. puis ca permet de faire spawn un cone la ou on pense que c'est ok 
```sqf
// variables
_posp = position player;
_poszo = position loc;
_distZo = _posp distance2D _poszo;
_seuil = 200;

if (_distZo >= _seuil) then { // si joueur loin

    _dirZO = _posp getdir _poszo;
    _newpos = _poszo getPos [(_seuil/2), _dirZO];

    // recup les batiment
    _spawnBuild = nearestobjects [_newpos, ODD_var_Houses, (_seuil/4)];
    // en choisis un 
    _spawnBat = selectRandom _spawnBuild;
    //récupère les positons dans le batiment (meme position que les garnison ACE)
    _spawnPosS = [_spawnBat] call BIS_fnc_buildingPositions;

    private _spawnPos = 0;

    if (count _spawnPosS > 0) then { // si plusieurs, en choisie une
        _spawnPos = selectRandom _spawnPosS;
    }
    else { //sinon prend la pos du bat
        _spawnPos = position _spawnBat;
    };

    // position en ATL 
    _spawnPos = ASLToATL _spawnPos;

    // pour mon teste je spawn un conne
    "RoadCone_F" createVehicle _spawnPos;

    // la je regarde la visibilité de la position par le joueur
    _vis = [objNull, "VIEW"] checkVisibility [_posp, _spawnPos];
    _vis
    // test la dessus pour voir si on peux faire spawn les gars

}
else { // si joueur proche 
    _dir = random 360;

    _spawnPos = _poszo getPos [(_seuil*2), _dir];

    "RoadCone_F" createVehicle _spawnPos;

    _vis = [objNull, "VIEW"] checkVisibility [_posp, _spawnPos];
    _vis

};
DIS-Wolv commented 6 months ago

on peux aussi check la visibilité comme ca :

  1. a la position A
    A = eyePos player;
  2. a la position B
    B = eyePos player;
  3. et apres on vérifie la visibilité avec ca qui renvoie une note entre 0 (pas visible) et 1 (complétement visible)
    [objNull, "VIEW"] checkVisibility [a, b];