Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. /**
  2. * Remorque l'objet sélectionné (R3F_LOG_objet_selectionne) à un véhicule
  3. *
  4. * @param 0 le remorqueur
  5. *
  6. * Copyright (C) 2010 madbull ~R3F~
  7. *
  8. * This program is free software under the terms of the GNU General Public License version 3.
  9. * You should have received a copy of the GNU General Public License
  10. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  11. */
  12.  
  13. if (R3F_LOG_mutex_local_verrou) then
  14. {
  15. player globalChat STR_R3F_LOG_mutex_action_en_cours;
  16. }
  17. else
  18. {
  19. R3F_LOG_mutex_local_verrou = true;
  20.  
  21. private ["_objet", "_remorqueur"];
  22.  
  23. _objet = R3F_LOG_objet_selectionne;
  24. _remorqueur = _this select 0;
  25.  
  26. if (!(isNull _objet) && (alive _objet) && !(_objet getVariable "R3F_LOG_disabled")) then
  27. {
  28. if (isNull (_objet getVariable "R3F_LOG_est_transporte_par") && (isNull (_objet getVariable "R3F_LOG_est_deplace_par") || (!alive (_objet getVariable "R3F_LOG_est_deplace_par")))) then
  29. {
  30. if (_objet distance _remorqueur <= 30) then
  31. {
  32. //The vehicle that is driving.
  33. _tempobj = _remorqueur; _countTransportedBy = 1;
  34. while{!isNull(_tempobj getVariable["R3F_LOG_est_transporte_par", objNull])} do {_countTransportedBy = _countTransportedBy + 1; _tempobj = _tempobj getVariable["R3F_LOG_est_transporte_par", objNull];};
  35.  
  36. //The vehicle that is being towed.
  37. _tempobj = _objet; _countTowedVehicles = 1;
  38. while{!isNull(_tempobj getVariable["R3F_LOG_remorque", objNull])} do {_countTowedVehicles = _countTowedVehicles + 1; _tempobj = _tempobj getVariable["R3F_LOG_remorque", objNull];};
  39.  
  40. if(_countTransportedBy + _countTowedVehicles <= 2) then
  41. {
  42. // On mémorise sur le réseau que le véhicule remorque quelque chose
  43. _remorqueur setVariable ["R3F_LOG_remorque", _objet, true];
  44. // On mémorise aussi sur le réseau que le canon est attaché en remorque
  45. _objet setVariable ["R3F_LOG_est_transporte_par", _remorqueur, true];
  46.  
  47. // On place le joueur sur le côté du véhicule, ce qui permet d'éviter les blessure et rend l'animation plus réaliste
  48. player attachTo [_remorqueur, [
  49. (boundingBox _remorqueur select 1 select 0),
  50. (boundingBox _remorqueur select 0 select 1) + 1,
  51. (boundingBox _remorqueur select 0 select 2) - (boundingBox player select 0 select 2)
  52. ]];
  53.  
  54. player setDir 270;
  55. player setPos (getPos player);
  56.  
  57. player playMove "AinvPknlMstpSlayWrflDnon_medic";
  58. sleep 2;
  59.  
  60. // Attacher à l'arrière du véhicule au ras du sol
  61. _objet attachTo [_remorqueur, [
  62. 0,
  63. (boundingBox _remorqueur select 0 select 1) + (boundingBox _objet select 0 select 1) + 1,
  64. (boundingBox _remorqueur select 0 select 2) - (boundingBox _objet select 0 select 2)
  65. ]];
  66.  
  67. R3F_LOG_objet_selectionne = objNull;
  68.  
  69. detach player;
  70.  
  71. // Si l'objet est une arme statique, on corrige l'orientation en fonction de la direction du canon
  72. if (_objet isKindOf "StaticWeapon") then
  73. {
  74. private ["_azimut_canon"];
  75.  
  76. _azimut_canon = ((_objet weaponDirection (weapons _objet select 0)) select 0) atan2 ((_objet weaponDirection (weapons _objet select 0)) select 1);
  77.  
  78. // Seul le D30 a le canon pointant vers le véhicule
  79. if !(_objet isKindOf "D30_Base") then
  80. {
  81. _azimut_canon = _azimut_canon + 180;
  82. };
  83.  
  84. // On est obligé de demander au serveur de tourner l'objet pour nous
  85. R3F_ARTY_AND_LOG_PUBVAR_setDir = [_objet, (getDir _objet)-_azimut_canon];
  86. if (isServer) then
  87. {
  88. ["R3F_ARTY_AND_LOG_PUBVAR_setDir", R3F_ARTY_AND_LOG_PUBVAR_setDir] spawn R3F_ARTY_AND_LOG_FNCT_PUBVAR_setDir;
  89. }
  90. else
  91. {
  92. publicVariable "R3F_ARTY_AND_LOG_PUBVAR_setDir";
  93. };
  94. };
  95.  
  96. sleep 5;
  97. } else {
  98. player globalChat "You can't tow more than one vehicle.";
  99. };
  100. }
  101. else
  102. {
  103. player globalChat format [STR_R3F_LOG_action_remorquer_selection_trop_loin, getText (configFile >> "CfgVehicles" >> (typeOf _objet) >> "displayName")];
  104. };
  105. }
  106. else
  107. {
  108. player globalChat format [STR_R3F_LOG_action_remorquer_selection_objet_transporte, getText (configFile >> "CfgVehicles" >> (typeOf _objet) >> "displayName")];
  109. };
  110. };
  111.  
  112. R3F_LOG_mutex_local_verrou = false;
  113. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement