fonctionne bien sur la carte par défaut. mais j'utilise le mod de carte, et cela prend un certain temps pour arriver. Je voudrais le modifier pour utiliser l'hélicoptère.
si je change juste la classe du véhicule, ça n'atterrit pas.
[CODE title="Original"]/*
Author: RobérioJr
*/
Params [
["_JogadorMorto",objNull,[objNull]]
];
If (IsNull _JogadorMorto) ExitWith {};
private _Grupo = createGroup independent;
Private _TempDis = 999999;
Private _SpawnMarcador = "";
{
If ((GetMarkerPos _X) Distance _JogadorMorto < _TempDis) Then {
_TempDis = ((GetMarkerPos _X) Distance _JogadorMorto);
_SpawnMarcador = _X;
};
} ForEach (GetArray(MissionConfigFile >> "RJ_CfgBots" >> "Medicos" >> "MarcadoresSpawnBots"));
Private _Veiculo = "C_IDAP_Van_02_medevac_F" CreateVehicle (GetMarkerPos _SpawnMarcador);
_Veiculo SetDir (MarkerDir _SpawnMarcador);
Private _PosSpawnMedico = _Veiculo ModelToWorld [-1.1,1,0];
_PosSpawnMedico Set [2,0];
Private _Medico = _Grupo CreateUnit ["C_IDAP_Man_Paramedic_01_F", _PosSpawnMedico, [], 0, "FORM"];
WaitUntil {!IsNil "_Medico" && !IsNull _Medico};
{_Medico disableAI _X} ForEach ["COVER","RADIOPROTOCOL","AUTOTARGET","SUPPRESSION"];
_Medico setBehaviour "CARELESS";
[_Medico,_Veiculo,_JogadorMorto,_Grupo] Spawn RJM_fnc_MonitorarBotMedico;
Private _Uid = _JogadorMorto getVariable ["steam64id",(getPlayerUID _JogadorMorto)];
[_Medico,{RJ_BotMedicoAtivo = _This}] RemoteExec ["spawn",_JogadorMorto];
_Medico AllowDamage false;
_Veiculo AllowDamage false;
_Medico SetSkill 1;
_Medico AssignAsDriver _Veiculo;
[_Medico] OrderGetIn true;
WaitUntil {
Sleep 0.2;
((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo Lock True;
Private _PistasProxima = _JogadorMorto NearRoads 75;
Private _PosDescer = [];
Private _SelecionadoPista = False;
If (Count _PistasProxima > 0) Then {
_TempDis = 999999;
{
If ((_X Distance _JogadorMorto) < _TempDis) Then {_TempDis = (_X Distance _JogadorMorto); _PosDescer = Position _X};
} ForEach _PistasProxima;
_SelecionadoPista = True;
} Else {
_PosDescer = Position _JogadorMorto
};
Private _DistMinDescer = If (_SelecionadoPista) Then {10} Else {35};
Private _DistWay = If (_SelecionadoPista) Then {_DistMinDescer * 0.5} Else {_DistMinDescer};
Private _WayPoint = _Grupo AddWaypoint [_PosDescer,0, _DistWay];
_WayPoint setWaypointSpeed "NORMAL";
_WayPoint setWaypointCombatMode "BLUE";
Private _TempoMaxParado = 15;
Private _TimeTemp = Time + _TempoMaxParado;
WaitUntil {
Sleep 0.5;
If !((Speed _Veiculo) IsEqualTo 0 && (_Veiculo Distance _PosDescer) < 250) Then {
_TimeTemp = Time + _TempoMaxParado;
};
((_Veiculo distance _PosDescer) < (_DistMinDescer * 1.25)) || ((_TimeTemp - Time) <= 0) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
DeleteWaypoint _WayPoint;
_Veiculo Lock False;
UnassignVehicle _Medico;
DoGetOut _Medico;
WaitUntil {
Sleep 0.2;
!((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo Lock True;
_Medico DoMove (Position _JogadorMorto);
WaitUntil {
Sleep 0.2;
((_Medico distance _JogadorMorto) < 5) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_JogadorMorto setVariable ["Reviving",Nil,true];
_JogadorMorto setVariable ["Revive",true,true];
["BOT Legacy"] remoteExecCall ["life_fnc_revived",_JogadorMorto];
[[_Medico,_Veiculo],{
Params ["_Medico","_Veiculo"];
Sleep 0.5;
Player AttachTo [_Medico, [0.1,1,0]];
RemoveAllWeapons Player;
Hint "Suas armas foram recolhidas pelo médico!";
WaitUntil {(_Medico Distance _Veiculo < 8.5)};
Detach Player;
Sleep 0.1;
Player MoveInCargo _Veiculo;
}] RemoteExec ["spawn",_JogadorMorto];
UiSleep 1;
_JogadorMorto = _Uid call BIS_fnc_getUnitByUID;
_Medico DoMove (Position _Veiculo);
WaitUntil {
Sleep 0.1;
((_Medico distance _Veiculo) < 8.5) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
UiSleep 1;
_JogadorMorto setVariable ["Escorting",false,true];
_JogadorMorto setVariable ["transporting",true,true];
_Medico AssignAsDriver _Veiculo;
[_Medico] OrderGetIn true;
_Medico MoveInDriver _Veiculo;
WaitUntil {
Sleep 0.2;
//(((Driver _Veiculo) IsEqualTo _Medico) && ((Vehicle _JogadorMorto) IsEqualTo _Veiculo)) || (IsNull _Medico)
((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo SetDir ((GetDir _Veiculo) + 180);
_Veiculo SetVectorUp SurfaceNormal Position _Veiculo;
Private _PosEntrega = [];
_TempDis = 999999;
{
If ((GetMarkerPos _X) Distance _Veiculo < _TempDis) Then {
_TempDis = ((GetMarkerPos _X) Distance _JogadorMorto);
_PosEntrega = GetMarkerPos _X;
};
} ForEach (GetArray(MissionConfigFile >> "RJ_CfgBots" >> "Medicos" >> "MarcadoresHospitais"));
_WayPoint = _Grupo AddWaypoint [_PosEntrega,0, 15];
_WayPoint SetWaypointSpeed "FULL";
_WayPoint SetWaypointCombatMode "BLUE";
Private _UltimaPos = Position _Veiculo;
Private _CountTmp = 0;
Private _PistaMaisProx = ObjNull;
Private _CountProx = 10;
_TimeTemp = Time + 2;
WaitUntil {
UiSleep 0.2;
If (_CountTmp >= _CountProx) Then {
_PistasProxima = _Veiculo NearRoads 75;
If (Count _PistasProxima > 0) Then {
_TempDis = 999999;
{
If ((_X Distance _Veiculo) < _TempDis) Then {_TempDis = (_X Distance _Veiculo); _PistaMaisProx = _X};
} ForEach _PistasProxima;
_PistaMaisProx = GetPosATL _PistaMaisProx;
} Else {
_PistaMaisProx = GetPosATL _Veiculo;
};
_Veiculo SetPosATL (_PistaMaisProx FindEmptyPosition [8,60,"C_IDAP_Van_02_medevac_F"]);
_Veiculo SetVectorUp SurfaceNormal Position _Veiculo;
If (_CountProx IsEqualTo 25) Then {
_CountProx = 10;
} Else {
_CountProx = 25;
};
_CountTmp = 0;
};
If ((_TimeTemp - Time) <= 0) Then {
_TimeTemp = Time + 2;
_CountTmp = _CountTmp + 1;
} Else {
If ((_UltimaPos Distance _Veiculo) > 8) Then {
_UltimaPos = Position _Veiculo;
_CountTmp = 0;
};
};
((_Veiculo distance _PosEntrega) < 25) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_JogadorMorto SetVariable ["transporting",false,true];
_JogadorMorto SetVariable ["Escorting",false,true];
[] RemoteExecCall ["life_fnc_pulloutVeh",_JogadorMorto];
Sleep 10;
DeleteWaypoint _WayPoint;
DeleteGroup _Grupo;
DeleteVehicle _Veiculo;
DeleteVehicle _Medico;[/CODE]
si je change juste la classe du véhicule, ça n'atterrit pas.
[CODE title="Original"]/*
Author: RobérioJr
*/
Params [
["_JogadorMorto",objNull,[objNull]]
];
If (IsNull _JogadorMorto) ExitWith {};
private _Grupo = createGroup independent;
Private _TempDis = 999999;
Private _SpawnMarcador = "";
{
If ((GetMarkerPos _X) Distance _JogadorMorto < _TempDis) Then {
_TempDis = ((GetMarkerPos _X) Distance _JogadorMorto);
_SpawnMarcador = _X;
};
} ForEach (GetArray(MissionConfigFile >> "RJ_CfgBots" >> "Medicos" >> "MarcadoresSpawnBots"));
Private _Veiculo = "C_IDAP_Van_02_medevac_F" CreateVehicle (GetMarkerPos _SpawnMarcador);
_Veiculo SetDir (MarkerDir _SpawnMarcador);
Private _PosSpawnMedico = _Veiculo ModelToWorld [-1.1,1,0];
_PosSpawnMedico Set [2,0];
Private _Medico = _Grupo CreateUnit ["C_IDAP_Man_Paramedic_01_F", _PosSpawnMedico, [], 0, "FORM"];
WaitUntil {!IsNil "_Medico" && !IsNull _Medico};
{_Medico disableAI _X} ForEach ["COVER","RADIOPROTOCOL","AUTOTARGET","SUPPRESSION"];
_Medico setBehaviour "CARELESS";
[_Medico,_Veiculo,_JogadorMorto,_Grupo] Spawn RJM_fnc_MonitorarBotMedico;
Private _Uid = _JogadorMorto getVariable ["steam64id",(getPlayerUID _JogadorMorto)];
[_Medico,{RJ_BotMedicoAtivo = _This}] RemoteExec ["spawn",_JogadorMorto];
_Medico AllowDamage false;
_Veiculo AllowDamage false;
_Medico SetSkill 1;
_Medico AssignAsDriver _Veiculo;
[_Medico] OrderGetIn true;
WaitUntil {
Sleep 0.2;
((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo Lock True;
Private _PistasProxima = _JogadorMorto NearRoads 75;
Private _PosDescer = [];
Private _SelecionadoPista = False;
If (Count _PistasProxima > 0) Then {
_TempDis = 999999;
{
If ((_X Distance _JogadorMorto) < _TempDis) Then {_TempDis = (_X Distance _JogadorMorto); _PosDescer = Position _X};
} ForEach _PistasProxima;
_SelecionadoPista = True;
} Else {
_PosDescer = Position _JogadorMorto
};
Private _DistMinDescer = If (_SelecionadoPista) Then {10} Else {35};
Private _DistWay = If (_SelecionadoPista) Then {_DistMinDescer * 0.5} Else {_DistMinDescer};
Private _WayPoint = _Grupo AddWaypoint [_PosDescer,0, _DistWay];
_WayPoint setWaypointSpeed "NORMAL";
_WayPoint setWaypointCombatMode "BLUE";
Private _TempoMaxParado = 15;
Private _TimeTemp = Time + _TempoMaxParado;
WaitUntil {
Sleep 0.5;
If !((Speed _Veiculo) IsEqualTo 0 && (_Veiculo Distance _PosDescer) < 250) Then {
_TimeTemp = Time + _TempoMaxParado;
};
((_Veiculo distance _PosDescer) < (_DistMinDescer * 1.25)) || ((_TimeTemp - Time) <= 0) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
DeleteWaypoint _WayPoint;
_Veiculo Lock False;
UnassignVehicle _Medico;
DoGetOut _Medico;
WaitUntil {
Sleep 0.2;
!((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo Lock True;
_Medico DoMove (Position _JogadorMorto);
WaitUntil {
Sleep 0.2;
((_Medico distance _JogadorMorto) < 5) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_JogadorMorto setVariable ["Reviving",Nil,true];
_JogadorMorto setVariable ["Revive",true,true];
["BOT Legacy"] remoteExecCall ["life_fnc_revived",_JogadorMorto];
[[_Medico,_Veiculo],{
Params ["_Medico","_Veiculo"];
Sleep 0.5;
Player AttachTo [_Medico, [0.1,1,0]];
RemoveAllWeapons Player;
Hint "Suas armas foram recolhidas pelo médico!";
WaitUntil {(_Medico Distance _Veiculo < 8.5)};
Detach Player;
Sleep 0.1;
Player MoveInCargo _Veiculo;
}] RemoteExec ["spawn",_JogadorMorto];
UiSleep 1;
_JogadorMorto = _Uid call BIS_fnc_getUnitByUID;
_Medico DoMove (Position _Veiculo);
WaitUntil {
Sleep 0.1;
((_Medico distance _Veiculo) < 8.5) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
UiSleep 1;
_JogadorMorto setVariable ["Escorting",false,true];
_JogadorMorto setVariable ["transporting",true,true];
_Medico AssignAsDriver _Veiculo;
[_Medico] OrderGetIn true;
_Medico MoveInDriver _Veiculo;
WaitUntil {
Sleep 0.2;
//(((Driver _Veiculo) IsEqualTo _Medico) && ((Vehicle _JogadorMorto) IsEqualTo _Veiculo)) || (IsNull _Medico)
((Driver _Veiculo) IsEqualTo _Medico) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_Veiculo SetDir ((GetDir _Veiculo) + 180);
_Veiculo SetVectorUp SurfaceNormal Position _Veiculo;
Private _PosEntrega = [];
_TempDis = 999999;
{
If ((GetMarkerPos _X) Distance _Veiculo < _TempDis) Then {
_TempDis = ((GetMarkerPos _X) Distance _JogadorMorto);
_PosEntrega = GetMarkerPos _X;
};
} ForEach (GetArray(MissionConfigFile >> "RJ_CfgBots" >> "Medicos" >> "MarcadoresHospitais"));
_WayPoint = _Grupo AddWaypoint [_PosEntrega,0, 15];
_WayPoint SetWaypointSpeed "FULL";
_WayPoint SetWaypointCombatMode "BLUE";
Private _UltimaPos = Position _Veiculo;
Private _CountTmp = 0;
Private _PistaMaisProx = ObjNull;
Private _CountProx = 10;
_TimeTemp = Time + 2;
WaitUntil {
UiSleep 0.2;
If (_CountTmp >= _CountProx) Then {
_PistasProxima = _Veiculo NearRoads 75;
If (Count _PistasProxima > 0) Then {
_TempDis = 999999;
{
If ((_X Distance _Veiculo) < _TempDis) Then {_TempDis = (_X Distance _Veiculo); _PistaMaisProx = _X};
} ForEach _PistasProxima;
_PistaMaisProx = GetPosATL _PistaMaisProx;
} Else {
_PistaMaisProx = GetPosATL _Veiculo;
};
_Veiculo SetPosATL (_PistaMaisProx FindEmptyPosition [8,60,"C_IDAP_Van_02_medevac_F"]);
_Veiculo SetVectorUp SurfaceNormal Position _Veiculo;
If (_CountProx IsEqualTo 25) Then {
_CountProx = 10;
} Else {
_CountProx = 25;
};
_CountTmp = 0;
};
If ((_TimeTemp - Time) <= 0) Then {
_TimeTemp = Time + 2;
_CountTmp = _CountTmp + 1;
} Else {
If ((_UltimaPos Distance _Veiculo) > 8) Then {
_UltimaPos = Position _Veiculo;
_CountTmp = 0;
};
};
((_Veiculo distance _PosEntrega) < 25) || (IsNull _Medico)
};
If (IsNull _Medico) ExitWith {};
_JogadorMorto SetVariable ["transporting",false,true];
_JogadorMorto SetVariable ["Escorting",false,true];
[] RemoteExecCall ["life_fnc_pulloutVeh",_JogadorMorto];
Sleep 10;
DeleteWaypoint _WayPoint;
DeleteGroup _Grupo;
DeleteVehicle _Veiculo;
DeleteVehicle _Medico;[/CODE]