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 | }; |