Français Not solved Modification du robot de sauvetage pour utiliser un hélicoptère

  • Auteur de la discussion Auteur de la discussion cadnalex
  • Date de début Date de début
  • Bonjour Visiteur ! Les sujets de cette catégorie sont clos. Si vous souhaitez réouvrir, merci de nous contacter en précisant le lien du post à réouvrir !

    Hello Visiteur ! The topics in this category are closed. If you wish to reopen, please contact us with the link of the post you wish to reopen !

cadnalex

User
14/5/22
51
5
3
300
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 la classe de (voiture) à (air) ça fait tout bien mais quand ça arrive au point où ça doit s'arrêter et descendre de l'hélicoptère ça plane parce que le script n'a pas été fait pour ça je voulais savoir quoi Je dois ajouter pour que ça marche.

le script fonctionne comme suit lorsqu'un joueur meurt et qu'il n'y a pas de médecin en ligne, il peut appeler (robot de sauvetage), après l'appel, un véhicule et un PNJ sont créés et le PNJ a conduit la voiture à l'endroit où le joueur est mort et l'a ressuscité et mis le mettre dans la voiture et l'emmener à l'hôpital le plus proche.