View difference between Paste ID: um1p6kVp and 5fXFKupY
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
};