SHOW:
|
|
- or go back to the newest paste.
| 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 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvBLK_overlay.jpg''];';};
| |
| 89 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvDRST_overlay.jpg''];';};
| |
| 90 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvGRY_overlay.jpg''];';};
| |
| 91 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvKTY_overlay.jpg''];';};
| |
| 92 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvLF_overlay.jpg''];';};
| |
| 93 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvRED_overlay.jpg''];';};
| |
| 94 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvUSA_overlay.jpg''];';};
| |
| 95 | if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv_overlay.png''];';};
| |
| 96 | ||
| 97 | ||
| 98 | ||
| 99 | if(!_donotusekey) then {
| |
| 100 | // Lock vehicle | |
| 101 | _object setvehiclelock "locked"; | |
| 102 | _object setVariable ["R3F_LOG_disabled",true,true]; | |
| 103 | }; | |
| 104 | ||
| 105 | clearWeaponCargoGlobal _object; | |
| 106 | clearMagazineCargoGlobal _object; | |
| 107 | // _object setVehicleAmmo DZE_vehicleAmmo; | |
| 108 | ||
| 109 | _object setVariable ["ObjectID", _oid, true]; | |
| 110 | ||
| 111 | _object setVariable ["lastUpdate",time]; | |
| 112 | ||
| 113 | _object setVariable ["CharacterID", _characterID, true]; | |
| 114 | ||
| 115 | if(DZE_TRADER_SPAWNMODE) then {
| |
| 116 | _object attachTo [_object_para, [0,0,-1.6]]; | |
| 117 | sleep 1.0; | |
| 118 | WaitUntil{(([_object] call FNC_GetPos) select 2) < 0.1};
| |
| 119 | detach _object; | |
| 120 | deleteVehicle _object_para; | |
| 121 | }; | |
| 122 | ||
| 123 | PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object]; | |
| 124 | ||
| 125 | _object call fnc_veh_ResetEH; | |
| 126 | ||
| 127 | // for non JIP users this should make sure everyone has eventhandlers for vehicles. | |
| 128 | PVDZE_veh_Init = _object; | |
| 129 | publicVariable "PVDZE_veh_Init"; | |
| 130 | processInitCommands; | |
| 131 | ||
| 132 | diag_log ("PUBLISH: " + str(_activatingPlayer) + " Bought " + (_class) + " with ID " + str(_uid));
| |
| 133 | }; |