Advertisement
Guest User

server_publishVehicle2.sqf

a guest
Sep 9th, 2014
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. private ["_activatingPlayer","_isOK","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey"];
  2. //PVDZE_veh_Publish2 = [_veh,[_dir,_location],_part_out,false,_keySelected,_activatingPlayer];
  3. _object = _this select 0;
  4. _worldspace = _this select 1;
  5. _class = _this select 2;
  6. _donotusekey = _this select 3;
  7. _keySelected = _this select 4;
  8. _activatingPlayer = _this select 5;
  9.  
  10. if(_donotusekey) then {
  11. _isOK = true;
  12. } else {
  13. _isOK = isClass(configFile >> "CfgWeapons" >> _keySelected);
  14. };
  15.  
  16. if(!_isOK) exitWith { diag_log ("HIVE: CARKEY DOES NOT EXIST: "+ str(_keySelected)); };
  17.  
  18. if(_donotusekey) then {
  19. _characterID = _keySelected;
  20. } else {
  21. _characterID = str(getNumber(configFile >> "CfgWeapons" >> _keySelected >> "keyid"));
  22. };
  23.  
  24. diag_log ("PUBLISH: Attempt " + str(_object));
  25. _dir = _worldspace select 0;
  26. _location = _worldspace select 1;
  27.  
  28. //Generate UID test using time
  29. _uid = _worldspace call dayz_objectUID3;
  30.  
  31. // TODO: check if uid already exists && if so increment by 1 && check again as soon as we find nothing continue.
  32.  
  33. //Send request
  34. _key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _characterID, _worldspace, [], [], 1,_uid];
  35. diag_log ("HIVE: WRITE: "+ str(_key));
  36. _key call server_hiveWrite;
  37.  
  38. // Switched to spawn so we can wait a bit for the ID
  39. [_object,_uid,_characterID,_class,_dir,_location,_donotusekey,_activatingPlayer] spawn {
  40. private ["_object","_uid","_characterID","_done","_retry","_key","_result","_outcome","_oid","_class","_location","_object_para","_donotusekey","_activatingPlayer"];
  41.  
  42. _object = _this select 0;
  43. _uid = _this select 1;
  44. _characterID = _this select 2;
  45. _class = _this select 3;
  46. //_dir = _this select 4;
  47. _location = _this select 5;
  48. _donotusekey = _this select 6;
  49. _activatingPlayer = _this select 7;
  50.  
  51. _done = false;
  52. _retry = 0;
  53. // TODO: Needs major overhaul for 1.1
  54. while {_retry < 10} do {
  55.  
  56. sleep 1;
  57. // GET DB ID
  58. _key = format["CHILD:388:%1:",_uid];
  59. diag_log ("HIVE: WRITE: "+ str(_key));
  60. _result = _key call server_hiveReadWrite;
  61. _outcome = _result select 0;
  62. if (_outcome == "PASS") then {
  63. _oid = _result select 1;
  64. //_object setVariable ["ObjectID", _oid, true];
  65. diag_log("CUSTOM: Selected " + str(_oid));
  66. _done = true;
  67. _retry = 100;
  68.  
  69. } else {
  70. diag_log("CUSTOM: trying again to get id for: " + str(_uid));
  71. _done = false;
  72. _retry = _retry + 1;
  73. };
  74. };
  75.  
  76. // Remove marker
  77. deleteVehicle _object;
  78.  
  79. if(!_done) exitWith { diag_log("CUSTOM: failed to get id for : " + str(_uid)); };
  80.  
  81. if(DZE_TRADER_SPAWNMODE) then {
  82. _object_para = createVehicle ["ParachuteMediumWest", [0,0,0], [], 0, "CAN_COLLIDE"];
  83. _object_para setPos [_location select 0, _location select 1,(_location select 2) + 65];
  84. _object = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
  85. } else {
  86. _object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"];
  87. };
  88.  
  89. if (_class == "SUV_Camo") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvUSA_overlay.jpg''];';};
  90.  
  91. if(!_donotusekey) then {
  92. // Lock vehicle
  93. _object setvehiclelock "locked";
  94. _object setVariable ["MF_Tow_Cannot_Tow",true,true];
  95. _object setVariable ["R3F_LOG_disabled",true,true];
  96. _vehicle allowDamage false;
  97. };
  98.  
  99. clearWeaponCargoGlobal _object;
  100. clearMagazineCargoGlobal _object;
  101. // _object setVehicleAmmo DZE_vehicleAmmo;
  102.  
  103. _object setVariable ["ObjectID", _oid, true];
  104.  
  105. _object setVariable ["lastUpdate",time];
  106.  
  107. _object setVariable ["CharacterID", _characterID, true];
  108.  
  109. if(DZE_TRADER_SPAWNMODE) then {
  110. _object attachTo [_object_para, [0,0,-1.6]];
  111. sleep 1.0;
  112. WaitUntil{(([_object] call FNC_GetPos) select 2) < 0.1};
  113. detach _object;
  114. deleteVehicle _object_para;
  115. };
  116.  
  117. PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
  118.  
  119. _object call fnc_veh_ResetEH;
  120.  
  121. // for non JIP users this should make sure everyone has eventhandlers for vehicles.
  122. PVDZE_veh_Init = _object;
  123. publicVariable "PVDZE_veh_Init";
  124.  
  125. processInitCommands;
  126.  
  127. diag_log ("PUBLISH: " + str(_activatingPlayer) + " Bought " + (_class) + " with ID " + str(_uid));
  128. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement