Advertisement
Guest User

Untitled

a guest
Oct 17th, 2014
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. private ["_object","_worldspace","_location","_dir","_class","_uid","_dam","_hitpoints","_selection","_array","_damage","_fuel","_key","_keyvg","_totaldam","_spawnDMG","_characterID"];
  2. //[_veh,[_dir,_location],"V3S_Civ",true]
  3. _object = _this select 0;
  4. _worldspace = _this select 1;
  5. _class = _this select 2;
  6. _spawnDMG = _this select 3;
  7. _characterID = _this select 4;
  8.  
  9. _fuel = 1;
  10. _damage = 0;
  11. _array = [];
  12.  
  13. diag_log ("PUBLISH: Attempt " + str(_object));
  14. _dir = _worldspace select 0;
  15. _location = _worldspace select 1;
  16.  
  17. //Generate UID test using time
  18. // _uid = str( round (dateToNumber date)) + str(round time);
  19. _uid = _worldspace call dayz_objectUID2;
  20. //_uid = format["%1%2",(round time),_uid];
  21.  
  22. if (_spawnDMG) then {
  23. _fuel = 0;
  24. if (getNumber(configFile >> "CfgVehicles" >> _class >> "isBicycle") != 1) then {
  25.  
  26. // Create randomly damaged parts
  27.  
  28. _totaldam = 0;
  29. _hitpoints = _object call vehicle_getHitpoints;
  30. {
  31. // generate damage on all parts
  32. _dam = call generate_new_damage;
  33.  
  34. _selection = getText(configFile >> "cfgVehicles" >> _class >> "HitPoints" >> _x >> "name");
  35.  
  36. if (_dam > 0) then {
  37. _array set [count _array,[_selection,_dam]];
  38. _totaldam = _totaldam + _dam;
  39. };
  40. } count _hitpoints;
  41.  
  42.  
  43. // just set low base dmg - may change later
  44. _damage = 0;
  45.  
  46. // New fuel min max
  47. _fuel = (random(DynamicVehicleFuelHigh-DynamicVehicleFuelLow)+DynamicVehicleFuelLow) / 100;
  48.  
  49. };
  50. };
  51.  
  52. // TODO: check if uid already exists && if so increment by 1 && check again as soon as we find nothing continue.
  53.  
  54. //Send request
  55. //_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, _damage , _characterID, _worldspace, [], _array, _fuel,_uid];
  56. //diag_log ("HIVE: WRITE: "+ str(_key));
  57. //_key call server_hiveWrite;
  58. //_objData->createObject(getServerId(),className,damage,characterId,worldSpace,inventory,hitPoints,fuel,uniqueId);
  59.  
  60. _keyvg = format["insert into object_data (ObjectUID, Instance, Classname, CharacterID, Worldspace, Inventory, Hitpoints, Fuel, Damage, Datestamp) values ('%1','%2','%3','%4','%5','%6','%7','%8','%9', CURRENT_TIMESTAMP)",_uid,dayZ_instance,_class,_characterID,_worldspace,'[]',_array,_fuel,_damage];
  61. //diag_log ("HIVE: WRITE: "+ str(_key));
  62. _keyvg call vgserver_hiveWrite;
  63.  
  64. PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
  65.  
  66. // Switched to spawn so we can wait a bit for the ID
  67. [_object,_uid,_fuel,_damage,_array,_characterID,_class] spawn {
  68. private["_object","_uid","_fuel","_damage","_array","_characterID","_done","_retry","_key","_result","_outcome","_oid","_selection","_dam","_class"];
  69.  
  70. _object = _this select 0;
  71. _uid = _this select 1;
  72. _fuel = _this select 2;
  73. _damage = _this select 3;
  74. _array = _this select 4;
  75. _characterID = _this select 5;
  76. _class = _this select 6;
  77.  
  78. _done = false;
  79. _retry = 0;
  80. // TODO: Needs major overhaul
  81. while {_retry < 10} do {
  82.  
  83. sleep 1;
  84. // GET DB ID
  85. _key = format["CHILD:388:%1:",_uid];
  86. diag_log ("HIVE: WRITE: "+ str(_key));
  87. _result = _key call server_hiveReadWrite;
  88. _outcome = _result select 0;
  89. if (_outcome == "PASS") then {
  90. _oid = _result select 1;
  91. _object setVariable ["ObjectID", _oid, true];
  92. diag_log("CUSTOM: Selected " + str(_oid));
  93. _done = true;
  94. _retry = 100;
  95.  
  96. } else {
  97. diag_log("CUSTOM: trying again to get id for: " + str(_uid));
  98. _done = false;
  99. _retry = _retry + 1;
  100. };
  101. };
  102. if(!_done) exitWith { deleteVehicle _object; diag_log("CUSTOM: failed to get id for : " + str(_uid)); };
  103.  
  104. _object setVariable ["lastUpdate",time];
  105. _object setVariable ["CharacterID", _characterID, true];
  106. _object setDamage _damage;
  107.  
  108. // Set Hits after ObjectID is set
  109. {
  110. _selection = _x select 0;
  111. _dam = _x select 1;
  112. if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
  113. [_object,_selection,_dam] call object_setFixServer;
  114. } count _array;
  115.  
  116. _object setFuel _fuel;
  117.  
  118. _object setvelocity [0,0,1];
  119.  
  120. _object call fnc_veh_ResetEH;
  121.  
  122. // testing - should make sure everyone has eventhandlers for vehicles was unused...
  123. PVDZE_veh_Init = _object;
  124. publicVariable "PVDZE_veh_Init";
  125.  
  126. diag_log ("PUBLISH: Created " + (_class) + " with ID " + str(_uid));
  127. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement