lock door script
This commit is contained in:
Binary file not shown.
@@ -0,0 +1 @@
|
||||
[]
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_barbareno_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Barbareno Rd","door_data":[{"unique_id":"OVMb8tnaXhPt9Mjv52r5n","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":-3239.898681640625,"y":1005.744873046875,"z":12.97670936584472}},{"unique_id":"5TmyMlEs30UEK3WWELHCh","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":-3240.1220703125,"y":1003.1539306640624,"z":12.97670936584472}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Barbareno Rd","door_data":[{"unique_id":"91scw0VFPfuHABTiRy1oF","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":-3247.664794921875,"y":1000.241455078125,"z":12.98198986053466}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_clifton_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Clifton Ave","door_data":[{"model_hash":1196685123,"unique_id":"TSEfCo1cShciJUFdTS9sB","text_dimensions":-1.30091333389282,"door_coords":{"x":375.3483276367188,"y":323.79681396484377,"z":103.71237182617188}},{"model_hash":997554217,"unique_id":"Pq5TFcXpie76cOmw2844u","text_dimensions":-1.30091333389282,"door_coords":{"x":377.8703918457031,"y":323.16259765625,"z":103.71237182617188}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Clifton Ave","door_data":[{"model_hash":1266035946,"unique_id":"jOm6EjixK8Nn6-3Fbnq6D","text_dimensions":1.26322402569915,"door_coords":{"x":373.6778259277344,"y":331.7078552246094,"z":103.7176513671875}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_ineseno_rd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Ineseno Rd","door_data":[{"model_hash":997554217,"unique_id":"-PtdqVTsrjnSb7NHZpzvv","text_dimensions":-1.30091333389282,"door_coords":{"x":-3039.006103515625,"y":590.7625122070313,"z":8.05492782592773}},{"model_hash":1196685123,"unique_id":"b0yKpuFoTx03s5cVOrZNB","text_dimensions":-1.30091333389282,"door_coords":{"x":-3038.212890625,"y":588.2858276367188,"z":8.05492782592773}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Ineseno Rd","door_data":[{"model_hash":1266035946,"unique_id":"cuZbXEDUAvDaExZKe1Qjq","text_dimensions":1.26322402569915,"door_coords":{"x":-3044.048828125,"y":582.6897583007813,"z":8.06020927429199}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_innocence_blvd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Innocence Blvd","door_data":[{"unique_id":"uyxmAsf2ia9j-Pw9mDcP4","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":27.81437492370605,"y":-1349.174560546875,"z":29.64302825927734}},{"unique_id":"aM0dOu02PxdXFjYFLi6VG","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":30.41495895385742,"y":-1349.174560546875,"z":29.64302825927734}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Innocence Blvd","door_data":[{"unique_id":"vH0jbNGfCiLL1SOPfccF4","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":24.26502227783203,"y":-1341.9097900390626,"z":29.6483097076416}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Paleto","door_data":[{"unique_id":"1q_sXeHzdgwCDPQ8dSzbo","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":163.40753173828126,"y":6636.09228515625,"z":31.8449478149414}},{"unique_id":"MWQDHzd0hbPzsm8-bjze_","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":161.56863403320313,"y":6637.93115234375,"z":31.8449478149414}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Paleto","door_data":[{"unique_id":"YTKS7QC5t-x2CHdeowhBy","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":164.1958465576172,"y":6645.57763671875,"z":31.85022926330566}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_palomino_fwy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Palomino Fwy","door_data":[{"unique_id":"SYK42esQuCMsVNidiiMgd","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":2559.309326171875,"y":386.6825866699219,"z":108.76897430419922}},{"unique_id":"VGxi0LHKfenMLKZqdUEOk","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":2559.20556640625,"y":384.0840759277344,"z":108.76897430419922}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Palomino Fwy","door_data":[{"unique_id":"-0-3Eiy2Ly7F0pRKz6cHj","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":2551.80517578125,"y":380.8270568847656,"z":108.77425384521485}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Sandy","door_data":[{"model_hash":1196685123,"unique_id":"hxlg2JniICt5K_r_cZcWj","text_dimensions":-1.30091333389282,"door_coords":{"x":1963.9178466796876,"y":3740.068603515625,"z":32.48976135253906}},{"model_hash":997554217,"unique_id":"nX-thzFEFEl2rPI6qBzqP","text_dimensions":-1.30091333389282,"door_coords":{"x":1966.1700439453128,"y":3741.368896484375,"z":32.48976135253906}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Sandy","door_data":[{"model_hash":1266035946,"unique_id":"HV7XlVBBa2zjw1hn9-iKO","text_dimensions":1.26322402569915,"door_coords":{"x":1957.2117919921876,"y":3744.58544921875,"z":32.49504089355469}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_senora_fwy_1.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Senora Fwy 1","door_data":[{"model_hash":997554217,"unique_id":"h7vSO0boKUq-JMtnUdfHm","text_dimensions":-1.30091333389282,"door_coords":{"x":2682.56103515625,"y":3283.692626953125,"z":55.38714981079101}},{"model_hash":1196685123,"unique_id":"uq5_uqKuWOZiDDB9pYMy2","text_dimensions":-1.30091333389282,"door_coords":{"x":2681.294921875,"y":3281.421142578125,"z":55.38714981079101}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Senora Fwy 1","door_data":[{"model_hash":1266035946,"unique_id":"A-yKGdBGkkbz313Nfk7pB","text_dimensions":1.26322402569915,"door_coords":{"x":2673.22119140625,"y":3281.857177734375,"z":55.3924331665039}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"247_senora_fwy_2.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Senora Fwy 2","door_data":[{"model_hash":1196685123,"unique_id":"xFUJOGYaOCmq_u7pcVaLJ","text_dimensions":-1.30091333389282,"door_coords":{"x":1730.02587890625,"y":6412.068359375,"z":35.1832389831543}},{"model_hash":997554217,"unique_id":"w5EQXW0ZB918n4hlS6n7X","text_dimensions":-1.30091333389282,"door_coords":{"x":1732.3560791015626,"y":6410.9140625,"z":35.1832389831543}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Senora Fwy 2","door_data":[{"model_hash":1266035946,"unique_id":"-I_2AYiwSE1bepHkKsTy1","text_dimensions":1.26322402569915,"door_coords":{"x":1730.0711669921876,"y":6420.154296875,"z":35.18852233886719}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"altruists.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":-1578791031,"unique_id":"Pcr0trKIdtIGaWAA0vF8w","text_dimensions":-4.83702678978443,"door_coords":{"x":-1044.7490234375,"y":4914.9716796875,"z":209.19322204589845}},{"model_hash":-13153749,"unique_id":"oHgenjNmHRS7H4JhUBPlY","text_dimensions":4.83666189014911,"door_coords":{"x":-1041.2327880859376,"y":4906.1005859375,"z":209.2002105712891}}],"door_name":"Gate","default_state":true,"state":true,"secret":false,"door_sound":"door_squeak.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":825709191,"unique_id":"xhl0bDngyO4ooV6hkuQE-","text_dimensions":1.3916357755661,"door_coords":{"x":-1111.6304931640626,"y":4938.296875,"z":218.52578735351566}}],"door_name":"Entrance","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"SSwORWkwsEgj7UYPHrmlV","text_dimensions":1.39163494110107,"door_coords":{"x":-1108.4287109375,"y":4939.94140625,"z":218.5197906494141}}],"door_name":"Office","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"g-TPOYyu_L3gO-gqb2w76","text_dimensions":1.39163494110107,"door_coords":{"x":-1111.94873046875,"y":4939.740234375,"z":218.5197906494141}}],"door_name":"Toilet","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"VinE8-49ASMffoYVtPdG_","text_dimensions":1.39163494110107,"door_coords":{"x":-1109.154052734375,"y":4945.1005859375,"z":218.5197906494141}}],"door_name":"Planning Room","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"Lu_Y9V5jG34DvGgfZNhfj","text_dimensions":1.39163494110107,"door_coords":{"x":-1100.6943359375,"y":4946.94287109375,"z":218.5197906494141}}],"door_name":"Bar","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":825709191,"unique_id":"UU2VZwn41Lj3A3HnlIINn","text_dimensions":1.3916357755661,"door_coords":{"x":-1102.2613525390626,"y":4940.4140625,"z":218.52578735351566}}],"door_name":"Entrance 2","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_chumash.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Chumash","door_data":[{"model_hash":-8873588,"unique_id":"42nrwG7r4ol078MIDmuA6","text_dimensions":-1.30482494086027,"door_coords":{"x":-3163.81494140625,"y":1083.7794189453126,"z":20.98863983154297}},{"model_hash":97297972,"unique_id":"GNeqZoMe0yv0gF81NJjMC","text_dimensions":-1.30065524578094,"door_coords":{"x":-3164.848388671875,"y":1081.39306640625,"z":20.98863983154297}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_cypress_flats.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"OgkUO7E0xS4pTqkd7F047","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":813.1778564453125,"y":-2148.27001953125,"z":29.76892471313476}},{"unique_id":"Qkz-vvrvhGHcDoeaeM0r_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":810.5768432617188,"y":-2148.27001953125,"z":29.76892471313476}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"xJ83I2tQ3vGVfzEMcXWYm","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":826.227783203125,"y":-2157.864990234375,"z":29.71937942504882}}],"door_name":"Shooting Range 1","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"Ku4-v5aXAvvuftN2lzDnq","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":826.227783203125,"y":-2160.490234375,"z":29.71937942504882}}],"door_name":"Shooting Range 2","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"QhIDMZBKnii1c81FnK6iD","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":827.2681884765625,"y":-2164.65380859375,"z":29.73662948608398}}],"door_name":"Shooting Range 3","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_hawick.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Hawick","door_data":[{"unique_id":"F4MTt71Z6mNWUxyek2QFl","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":243.84117126464845,"y":-46.52396011352539,"z":70.09095001220703}},{"unique_id":"WDHopxqPVQebwh6ZL6qjq","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":244.7306365966797,"y":-44.0802116394043,"z":70.09095001220703}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_la_mesa.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition La Mesa","door_data":[{"model_hash":-8873588,"unique_id":"Ll4q5DZAhBZo4ab2zwrCp","text_dimensions":-1.30482494086027,"door_coords":{"x":842.7689208984375,"y":-1024.5428466796876,"z":28.34475135803222}},{"model_hash":97297972,"unique_id":"-sI1zpZJmZw1ZC0tjfTZ7","text_dimensions":-1.30065524578094,"door_coords":{"x":845.3695068359375,"y":-1024.5428466796876,"z":28.34475135803222}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_legion.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"nbHXWzKoSc4ApI78V6BJw","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":16.12786865234375,"y":-1114.605224609375,"z":29.94693565368652}},{"unique_id":"8yYae-C57bhKVjbGK7Ey_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":18.5720100402832,"y":-1115.4947509765626,"z":29.94693565368652}}],"door_name":"Entrance","camera":false,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"GfkAgH-8LefLBG7RmppsJ","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":7.14657020568847,"y":-1101.1256103515626,"z":29.89739036560058}}],"door_name":"Shooting Range 1","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"Y7COFgBk8mUyhUiu6y057","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.04443550109863,"y":-1098.65869140625,"z":29.89739036560058}}],"door_name":"Shooting Range 2","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"uf-m_G0-qE-C7XtOA3cE5","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.49085712432861,"y":-1094.3902587890626,"z":29.91464042663574}}],"door_name":"Shooting Range 3","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_little_seoul.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Chumash","door_data":[{"model_hash":-8873588,"unique_id":"42nrwG7r4ol078MIDmuA6","text_dimensions":-1.30482494086027,"door_coords":{"x":-3163.81494140625,"y":1083.7794189453126,"z":20.98863983154297}},{"model_hash":97297972,"unique_id":"GNeqZoMe0yv0gF81NJjMC","text_dimensions":-1.30065524578094,"door_coords":{"x":-3164.848388671875,"y":1081.39306640625,"z":20.98863983154297}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Little Seoul","door_data":[{"model_hash":-8873588,"unique_id":"WgX5-UtzeEA2qdHrmV_rv","text_dimensions":-1.30482494086027,"door_coords":{"x":-662.6419067382813,"y":-944.3221435546876,"z":21.97912979125976}},{"model_hash":97297972,"unique_id":"DoBpWy6QaChGk5N7dZ35u","text_dimensions":-1.30065524578094,"door_coords":{"x":-665.2424926757813,"y":-944.3221435546876,"z":21.97912979125976}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_morningwood.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Morningwood","door_data":[{"unique_id":"lJsN8TI5kfGMO_ZMt6ctW","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-1314.461669921875,"y":-391.6475524902344,"z":36.845703125}},{"unique_id":"yJSqd0UGMaeVc_EhtJb6x","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-1313.82275390625,"y":-389.1266479492188,"z":36.84570693969726}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Paleto","door_data":[{"unique_id":"__xql00Satt4a0JIeZ-HC","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-324.2757263183594,"y":6077.111328125,"z":31.60467720031738}},{"unique_id":"WGKld9NztDBobEWZajB8z","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-326.1146240234375,"y":6075.2724609375,"z":31.60467720031738}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_route_68.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Route 68","door_data":[{"unique_id":"bts5TB-oW1aJGyGO3x3Ep","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-1114.0111083984376,"y":2689.773193359375,"z":18.70404052734375}},{"unique_id":"p64zYLOxypnsP9uIkFyKu","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-1112.0732421875,"y":2691.507568359375,"z":18.70404052734375}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Sandy","door_data":[{"unique_id":"ZOGPzyDA4EMwVoQ_zN7S1","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":1699.9344482421876,"y":3753.422119140625,"z":34.85523986816406}},{"unique_id":"RIahRbmdPKtBCU706PhvG","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":1698.1739501953126,"y":3751.508056640625,"z":34.85523986816406}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ammunition_tataviam_mountains.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Tataviam Mountains","door_data":[{"unique_id":"CsZAN8-pTQOzbPwsjnFsG","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":2568.30419921875,"y":303.3522644042969,"z":108.88478088378906}},{"unique_id":"-zFFAOgELOjJYzibMZYSt","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":2570.90478515625,"y":303.3522644042969,"z":108.88478088378906}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"aztecas.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":903896222,"unique_id":"x6RvS2bKXkW4YVDktAhvK","text_dimensions":-1.28941306484291,"door_coords":{"x":493.0755004882813,"y":-1541.8304443359376,"z":29.44704818725586}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"TFRjSnUV9cAYgziPkRaIC","text_dimensions":-1.28941306484291,"door_coords":{"x":496.6208190917969,"y":-1530.5982666015626,"z":29.44704818725586}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"slkOSj-AN5X7qmOmRQNBI","text_dimensions":-1.28941306484291,"door_coords":{"x":491.2002258300781,"y":-1533.0587158203126,"z":29.44644546508789}}],"door_name":"Hallway","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"mqbBmp1azrXlExRTyCgkh","text_dimensions":-1.28941306484291,"door_coords":{"x":488.5831604003906,"y":-1534.103271484375,"z":29.44644546508789}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"RfCkU2mhQzM8gd_i5Roi2","text_dimensions":-1.28941306484291,"door_coords":{"x":490.9441223144531,"y":-1531.2901611328126,"z":29.44672966003418}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":2103001488,"unique_id":"ChQkjIdf5ONYhKBHZG1O-","text_dimensions":-1.28941306484291,"door_coords":{"x":486.0135498046875,"y":-1530.3931884765626,"z":29.44704818725586}}],"door_name":"Rear Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"bahama_mamas.json","imported":false,"data":[{"distance":2,"default_state":true,"secret":false,"id":1,"door_data":[{"model_hash":-224738884,"unique_id":"JAo4tvZlmJuYygRfQTk0W","door_coords":{"x":-1387.035888671875,"y":-586.6932983398438,"z":30.44564437866211},"text_dimensions":-1.33685402944684},{"model_hash":666905606,"unique_id":"ia0M4pUBmyB6Mkj3GASow","door_coords":{"x":-1389.1368408203126,"y":-588.0576782226563,"z":30.44564437866211},"text_dimensions":-1.33693200349807}],"location_group":"Bahama Mama's","state":true,"door_name":"Entrance","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":2,"door_data":[{"model_hash":134859901,"unique_id":"Cp3vhA6Qxvs8bEyh4T42o","door_coords":{"x":-1391.869140625,"y":-592.6160278320313,"z":30.44564628601074},"text_dimensions":-1.38835303857922},{"model_hash":134859901,"unique_id":"KiO7Cd2o9cVcoGSFe2vo-","door_coords":{"x":-1390.44873046875,"y":-594.80322265625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":false,"door_name":"Lobby","door_type":"double","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":3,"door_data":[{"model_hash":-1266440846,"unique_id":"oGLaeu8HW4kRzYcHWV2kr","door_coords":{"x":-1391.491455078125,"y":-601.4703369140625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Restroom","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":4,"door_data":[{"model_hash":-2102541881,"unique_id":"8tfri7pIDOvenZ21cyISR","door_coords":{"x":-1378.585693359375,"y":-621.3177490234375,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Office","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":5,"door_data":[{"model_hash":-2102541881,"unique_id":"6vOctGe132Pp6y-pR13Mn","door_coords":{"x":-1377.6776123046876,"y":-624.8816528320313,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Changing Room","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":6,"door_data":[{"model_hash":134859901,"unique_id":"InX5VStdhCXvpxJBo-iVx","door_coords":{"x":-1373.76025390625,"y":-628.7486572265625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Changing Room 2","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ballas.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"-jfp4WOTyCfjh2OJNs68S","model_hash":-1052955611,"text_dimensions":-1.30003573931753,"door_coords":{"x":0.2085236608982,"y":-1823.301025390625,"z":29.73543167114257}}],"door_name":"Staircase Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"6U0_f3_tre-dP17JvmzAG","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":-2.02733397483825,"y":-1819.2308349609376,"z":29.34070014953613}}],"door_name":"Toilet","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"4LxgCaXnQJXTfgtKiO0p6","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":0.04164028167724,"y":-1816.7576904296876,"z":29.34070014953613}}],"door_name":"Planning Room","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"80i7_bW3A4RRKAbjaN6sG","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":0.70339083671569,"y":-1814.7305908203128,"z":29.34070014953613}}],"door_name":"Office","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"hHN4V6L0UoNctrd7iiIPh","model_hash":-1351120742,"text_dimensions":-1.30003573931753,"door_coords":{"x":-1.87361574172973,"y":-1808.825927734375,"z":25.54070091247558}}],"door_name":"Downstairs Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"LdeCDiKMlXtn-uFT2yZwv","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":-6.94861030578613,"y":-1819.7347412109376,"z":29.34070014953613}}],"door_name":"Staircase","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_alhambradrive.json","imported":false,"data":[{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Alhambra Drive","door_data":[{"unique_id":"lrSEYzDW3Vw-5NiqXFObN","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":1932.9512939453128,"y":3725.154296875,"z":32.99449920654297}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_carsonave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Carson Ave","door_data":[{"unique_id":"6jMkimSD-Liw_mtwIVKb4","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":132.5574951171875,"y":-1710.9951171875,"z":29.44166755676269}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_hawickave.json","imported":false,"data":[{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Hawick Ave","door_data":[{"unique_id":"9sj-1XkysnGycHMcq2Kzm","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-29.86952590942382,"y":-148.1580047607422,"z":57.22657775878906}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_magellanave.json","imported":false,"data":[{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Magellan Ave","door_data":[{"unique_id":"_TdR_cX0s9QYMDE8kXNiP","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-1287.8558349609376,"y":-1115.7415771484376,"z":7.14017105102539}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_mirrorpark.json","imported":false,"data":[{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Mirror Park","door_data":[{"unique_id":"J99Z9HiZSiNBxaHS4P4pL","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":1207.8740234375,"y":-470.0365295410156,"z":66.35810089111328}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"barbershop_paleto.json","imported":false,"data":[{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Paleto","door_data":[{"unique_id":"iVuvzZSbZcz5pi27hyLH7","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-280.7843933105469,"y":6232.78076171875,"z":31.8455810546875}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"bean_machine.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Bean Machine","door_data":[{"model_hash":494354570,"unique_id":"Juw1iRqGpsUWuBXoQVGPx","text_dimensions":-1.27720979717712,"door_coords":{"x":128.2133941650391,"y":-1029.455322265625,"z":29.26180076599121}}],"door_name":"Side Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Bean Machine","door_data":[{"model_hash":-1182160879,"unique_id":"5UjmU3cLJOdbugOys32QK","text_dimensions":-1.18820981052856,"door_coords":{"x":114.56291198730468,"y":-1039.88818359375,"z":29.34832000732422}},{"model_hash":-747011272,"unique_id":"ifyZx-ErxAQEGWbvBcfh7","text_dimensions":-1.18820981052856,"door_coords":{"x":115.37569427490236,"y":-1037.655029296875,"z":29.34832000732422}}],"door_name":"Main Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"bennys.json","imported":false,"data":[{"secret":false,"default_state":true,"door_type":"single","door_name":"Entrance","distance":3,"location_group":"Bennys","perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"door_sound":"","id":1,"door_data":[{"model_hash":-147325430,"unique_id":"y-9Y_MVoOZkMamFoJDBoX","text_dimensions":1.29998779296875,"door_coords":{"z":31.45024108886718,"y":-1315.1455078125,"x":-230.69924926757813}}],"camera":false,"lockpickable":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"","door_name":"Front Garage Door","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":2,"door_data":[{"model_hash":-48831039,"unique_id":"sYQIQ1-mrO0kf-x6zTdHh","text_dimensions":0,"door_coords":{"z":32.72236633300781,"y":-1326.9986572265626,"x":-230.8119659423828}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"door_click.ogg","door_name":"Side left Garage","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":3,"door_data":[{"model_hash":-1453834687,"unique_id":"F92DWnL5Uwu6I8avEIQm-","text_dimensions":0,"door_coords":{"z":30.68654823303222,"y":-1313.28564453125,"x":-207.76943969726566}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"door_click.ogg","door_name":"Side Right Garage","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":4,"door_data":[{"model_hash":-1453834687,"unique_id":"4O3ICZsesgUj-LZ9-L0Aw","text_dimensions":0,"door_coords":{"z":30.48421478271484,"y":-1313.28564453125,"x":-215.73533630371098}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Office","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":5,"door_data":[{"model_hash":-147325430,"unique_id":"ZmddAR3y-GF2haXKtZWj3","text_dimensions":1.29998779296875,"door_coords":{"z":31.46076011657715,"y":-1322.0712890625,"x":-197.44644165039066}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Locker Room","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":6,"door_data":[{"model_hash":-147325430,"unique_id":"KJhRHlqWomZI5hS9Rv7f-","text_dimensions":1.29998779296875,"door_coords":{"z":31.46076011657715,"y":-1339.141845703125,"x":-197.44644165039066}}],"auto_lock":"","camera":false,"state":false},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Storage Room","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":7,"door_data":[{"model_hash":-147325430,"unique_id":"USUAIufJw2YM7llqrPT17","text_dimensions":1.29998779296875,"door_coords":{"z":31.45024108886718,"y":-1322.0716552734376,"x":-226.0601043701172}}],"auto_lock":"","camera":false,"state":true}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_grapeseed.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Binco Grapeseed","door_data":[{"unique_id":"MiwlqKN2xNdVYG_0JYUeQ","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":1686.9937744140626,"y":4821.74267578125,"z":42.2269287109375}},{"unique_id":"Gvfes7RGzNsR0THCNonTT","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":1687.2923583984376,"y":4819.48681640625,"z":42.2269287109375}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_innocence_blvd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Innocence Blvd","door_data":[{"model_hash":-720292672,"unique_id":"MDTWRfecpPUtggN6vt5Gy","text_dimensions":-1.13898681744467,"door_coords":{"x":82.37060546875,"y":-1390.476318359375,"z":29.53996086120605}},{"model_hash":-1450680917,"unique_id":"bwmfyj1szAtPfN-FWsQkF","text_dimensions":-1.13898681744467,"door_coords":{"x":82.37060546875,"y":-1392.751708984375,"z":29.53996086120605}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Binco Paleto","door_data":[{"model_hash":-1450680917,"unique_id":"igOHNRPWNHd7uhPr_URfJ","text_dimensions":-1.13898681744467,"door_coords":{"x":-0.04871225357055,"y":6517.453125,"z":32.04166793823242}},{"model_hash":-720292672,"unique_id":"ToHx9chryiz1eIXDsbdkE","text_dimensions":-1.13898681744467,"door_coords":{"x":-1.71715235710144,"y":6515.90625,"z":32.04166793823242}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_palomino_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Palomino Ave","door_data":[{"unique_id":"ZdPV4xxQ6Xkt10D7YjzbR","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":-818.77001953125,"y":-1079.534912109375,"z":11.49193000793457}},{"unique_id":"rikw3mFp5dkdt7u4UhDvT","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":-816.7994384765625,"y":-1078.397216796875,"z":11.49193000793457}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_rt68_1.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco RT68 1","door_data":[{"model_hash":-1450680917,"unique_id":"Vb6RIem7LicAIeAFuzGuN","text_dimensions":-1.13898681744467,"door_coords":{"x":1196.8243408203126,"y":2703.232421875,"z":38.38643646240234}},{"model_hash":-720292672,"unique_id":"MwjND9yVXReTcjCCzyR45","text_dimensions":-1.13898681744467,"door_coords":{"x":1199.0997314453126,"y":2703.232421875,"z":38.38643646240234}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_rt68_2.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco RT68 2","door_data":[{"unique_id":"G1mX5P_Rsumh1bxaxd-Dh","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":-1094.9736328125,"y":2706.9716796875,"z":19.27168083190918}},{"unique_id":"n37YErHIeXcau2JkSCmYS","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":-1096.669189453125,"y":2705.454345703125,"z":19.27168083190918}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"binco_sinner_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Sinner St","door_data":[{"model_hash":-1450680917,"unique_id":"jeaofHSP0oo5YpMzpGn6Q","text_dimensions":-1.13898681744467,"door_coords":{"x":418.5821838378906,"y":-806.3977661132813,"z":29.65496063232422}},{"model_hash":-720292672,"unique_id":"o_cX7EFVTLfXc1-ZCmxrQ","text_dimensions":-1.13898681744467,"door_coords":{"x":418.5821838378906,"y":-808.6731567382813,"z":29.65496063232422}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"bowling_alley.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-2023754432,"unique_id":"EpeyXZLHbfR884K9td4n_","text_dimensions":1.3113248348236,"door_coords":{"x":755.5689086914063,"y":-782.7789916992188,"z":26.48348808288574}}],"door_name":"Toilet","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"PuMdZljPwgOGlvXXh2lnv","text_dimensions":1.30132499436149,"door_coords":{"x":755.5689086914063,"y":-780.9235229492188,"z":26.48348808288574}}],"door_name":"Reception","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"M2Uuxl7cZFu_IpVNPOWH_","text_dimensions":1.30132499436149,"door_coords":{"x":758.52197265625,"y":-777.251953125,"z":26.64883422851562}}],"door_name":"Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"pwDqchUqmNOonyod_PcSS","text_dimensions":1.30132499436149,"door_coords":{"x":755.5689086914063,"y":-770.7398071289063,"z":26.48348808288574}}],"door_name":"Office","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"families.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"rJryibIZVbn0OkZHxbeFj","model_hash":1381046002,"text_dimensions":-1.30003572907298,"door_coords":{"x":-152.02444458007813,"y":-1622.647705078125,"z":33.8377571105957}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"qZoYZIuZsdvzemtjmj233","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-153.03646850585938,"y":-1618.813232421875,"z":33.8377571105957}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"9A9A7i4A52cmX1y9Aw8hD","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-159.6214141845703,"y":-1614.5133056640626,"z":33.83805084228515}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"miroZXfWcL2AlW7rkAuDG","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-160.897705078125,"y":-1615.5655517578126,"z":33.83805084228515}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"harmony_repair.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"OpFkFUYupwHE9JaWYDFrA","model_hash":-822900180,"text_dimensions":0,"door_coords":{"x":1182.3072509765626,"y":2644.164306640625,"z":40.50829315185547}}],"door_name":"Garage Door 1","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"4-ob7fjNdViC-3KI5hs0M","model_hash":-822900180,"text_dimensions":0,"door_coords":{"x":1174.6546630859376,"y":2645.240478515625,"z":39.30941390991211}}],"door_name":"Garage Door 2","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"1WkBfQU-QF9lE3txaXSYc","model_hash":1335311341,"text_dimensions":-1.30146599147701,"door_coords":{"x":1187.2027587890626,"y":2644.949951171875,"z":38.55176544189453}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"haters.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":932235872,"unique_id":"2Jgch1j-Wdq0ECEeZVDFP","text_dimensions":1.17663345026812,"door_coords":{"x":-1118.5753173828126,"y":-1440.6566162109376,"z":4.28510618209838}}],"door_name":"Entrance","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":396177650,"unique_id":"Zv8Gk70rzM3tJcfKTWpvX","text_dimensions":1.36893741931271,"door_coords":{"x":-1128.949462890625,"y":-1439.9857177734376,"z":4.29096794128418}}],"door_name":"Backrooms","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":396177650,"unique_id":"hOW_M7-QieqdC6oEA-Ffb","text_dimensions":1.36893741931271,"door_coords":{"x":-1130.740966796875,"y":-1441.2430419921876,"z":4.28182792663574}}],"door_name":"Toilet","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":779130623,"unique_id":"yQSRdk-sUkI8NsaerHJFv","text_dimensions":1.13503436889004,"door_coords":{"x":-1126.05419921875,"y":-1446.529541015625,"z":4.34477233886718}}],"door_name":"Side Exit","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"hayes_auto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"nK5AJ4eUDt-_G83almCHB","model_hash":-634936098,"text_dimensions":1.30132499436149,"door_coords":{"x":-1434.1552734375,"y":-448.5860900878906,"z":36.05923461914062}}],"door_name":"Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"xbaSKVb-AGtC5eP88t0UW","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1427.3223876953126,"y":-444.1544189453125,"z":39.21000289916992}}],"door_name":"Garage Door 1","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"UmkTz3t-QxxKqCwUIyHbI","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1421.115966796875,"y":-440.27490234375,"z":39.21000289916992}}],"door_name":"Garage Door 2","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":4,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"kWzRXpUMKLWjq_7no-43O","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1414.868408203125,"y":-436.3688049316406,"z":39.21000289916992}}],"door_name":"Garage Door 3","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":5,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"rfI6I4AHV3JWbG5CyCKwi","model_hash":1289778077,"text_dimensions":1.30132499436149,"door_coords":{"x":-1427.525390625,"y":-455.6804504394531,"z":36.05956268310547}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"import_garage.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"I8mbPMDWAThi_oQV8UKKF","model_hash":-983965772,"text_dimensions":0,"door_coords":{"x":945.8359375,"y":-984.0308227539064,"z":43.87417984008789}}],"door_name":"Entrance","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"ZMtuzB8Bthhuj_DEmywyk","model_hash":1289778077,"text_dimensions":1.30132499436149,"door_coords":{"x":948.5287475585938,"y":-965.3519287109376,"z":39.64354705810547}}],"door_name":"Staff Room 1","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"MttAGQnX3B1CQ51Hrn5T1","model_hash":-626684119,"text_dimensions":1.30132499436149,"door_coords":{"x":955.358154296875,"y":-972.4451904296876,"z":39.64791870117187}}],"door_name":"Staff Room 2","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"impound_lot.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"IMzop4XrzKDXoGIZQShv6","text_dimensions":7.56022737920284,"door_coords":{"x":-171.64244079589845,"y":-1160.677001953125,"z":22.63815879821777}}],"door_name":"Entrance 1","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"c88lc8D-thKX2whZ2pAWC","text_dimensions":7.56022737920284,"door_coords":{"x":-156.9066925048828,"y":-1169.6063232421876,"z":22.08901405334472}}],"door_name":"Parking","secret":false,"state":false,"default_state":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"r_Aek_-ZexqHPSNdN3u_H","text_dimensions":7.56022737920284,"door_coords":{"x":-226.14630126953129,"y":-1168.806396484375,"z":22.08235740661621}}],"door_name":"Parking 2","secret":false,"state":false,"default_state":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"8oqr6GGvP70FeD0uOq20v","text_dimensions":7.56022737920284,"door_coords":{"x":-229.66925048828129,"y":-1158.824951171875,"z":22.09461784362793}}],"door_name":"Entrance 2","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":97297972,"unique_id":"qD5GTAL36dJK-sdvEKfST","text_dimensions":-1.30065524578094,"door_coords":{"x":-190.7104034423828,"y":-1160.464599609375,"z":23.82123947143554}}],"door_name":"Office Entrance","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":-952356348,"unique_id":"PZ2bhmVxy3bt2lJXt3VmF","text_dimensions":-1.30063444375991,"door_coords":{"x":-187.0614013671875,"y":-1162.3486328125,"z":23.82123947143554}}],"door_name":"Office","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":97297972,"unique_id":"rIo8Q9OVRfuykfJHUebzd","text_dimensions":-1.30065524578094,"door_coords":{"x":-189.6360015869141,"y":-1167.8836669921876,"z":23.82123947143554}}],"door_name":"Office Exit","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"legion_ammu.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"nbHXWzKoSc4ApI78V6BJw","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":16.12786865234375,"y":-1114.605224609375,"z":29.94693565368652}},{"unique_id":"8yYae-C57bhKVjbGK7Ey_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":18.5720100402832,"y":-1115.4947509765626,"z":29.94693565368652}}],"door_name":"Entrance","camera":false,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"GfkAgH-8LefLBG7RmppsJ","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":7.14657020568847,"y":-1101.1256103515626,"z":29.89739036560058}}],"door_name":"Firing Range 1st","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"Y7COFgBk8mUyhUiu6y057","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.04443550109863,"y":-1098.65869140625,"z":29.89739036560058}}],"door_name":"Firing Range 2nd","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"uf-m_G0-qE-C7XtOA3cE5","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.49085712432861,"y":-1094.3902587890626,"z":29.91464042663574}}],"door_name":"Firing Range to Targets","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"lost_mc.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-930593859,"unique_id":"vY12UnQm9UmfNX8_CYiLE","text_dimensions":-7.51867733895778,"door_coords":{"x":950.2341918945313,"y":-133.98422241210938,"z":73.57417297363281}}],"door_name":"Gate","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-197537718,"unique_id":"mUrWbGuLhCnXIEfe8w46h","text_dimensions":0,"door_coords":{"x":982.3779907226564,"y":-125.3655014038086,"z":75.03974914550781}}],"door_name":"Workshop Garage Door","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":3,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"vNsJEgEaN0K67vk4bOy9t","text_dimensions":-1.30139195919036,"door_coords":{"x":990.8673095703124,"y":-132.8908233642578,"z":74.21125030517578}}],"door_name":"Workshop Office","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"Nvygr7OQY2k7rLScOw7-f","text_dimensions":-1.30139195919036,"door_coords":{"x":994.5238647460938,"y":-119.90499877929688,"z":74.21125030517578}}],"door_name":"Workshop Meeting Room","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"7xTc-yY7oK8Qsvu_Gie5H","text_dimensions":-1.30139195919036,"door_coords":{"x":1002.6436157226564,"y":-124.8202896118164,"z":74.20452117919922}}],"door_name":"Workshop Toilet","camera":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":190770132,"unique_id":"5G5vxQSnvYwCwfRxXFqic","text_dimensions":1.30132499436149,"door_coords":{"x":981.1505126953124,"y":-103.2552490234375,"z":74.99357604980469}}],"door_name":"Entrance","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":747286790,"unique_id":"vrgwc4kX4gaKOABSX_Twf","text_dimensions":1.30153205513488,"door_coords":{"x":985.6103515625,"y":-95.16253662109377,"z":74.99793243408203}}],"door_name":"Whiteboard","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-822900180,"unique_id":"g78noRNge9zY1YlU-SVup","text_dimensions":0,"door_coords":{"x":968.0278930664064,"y":-111.32440948486328,"z":77.11673736572266}}],"door_name":"Workshop 2 Garage 1","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":9,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-822900180,"unique_id":"6AqzfH8kDtWZwfGQT3EtQ","text_dimensions":0,"door_coords":{"x":962.43310546875,"y":-116.54352569580078,"z":77.11695861816406}}],"door_name":"Workshop 2 Garage 2","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":10,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":1335311341,"unique_id":"TeXn6MObu0NVVlwptBbwy","text_dimensions":-1.30146599147701,"door_coords":{"x":959.38232421875,"y":-120.45116424560549,"z":75.16157531738281}}],"door_name":"Workshop 2 Entrance","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ls_customs.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"LS Customs","door_data":[{"unique_id":"AJCoaYAgCf3mvCazZOQvk","model_hash":270330101,"text_dimensions":0,"door_coords":{"x":724.2821655273438,"y":-1088.831298828125,"z":25.27529716491699}}],"door_name":"Garage Door","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"ltd_grove.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"LDT Grove","door_data":[{"model_hash":2065277225,"unique_id":"NlfRJlr2R8JqWL587PhTh","text_dimensions":-1.30149215459823,"door_coords":{"x":-51.96669387817383,"y":-1757.38671875,"z":29.57094001770019}},{"model_hash":-868672903,"unique_id":"-D9-R1d5ni3Mm0EuSTgS6","text_dimensions":-1.30149215459823,"door_coords":{"x":-53.96111297607422,"y":-1755.7171630859376,"z":29.57094001770019}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"marabunta.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"pbQ8yjBbs0QB1Uan4Ot-V","model_hash":-955445187,"text_dimensions":-1.30003573931753,"door_coords":{"x":1250.22265625,"y":-1583.8017578125,"z":54.73964691162109}}],"door_name":"Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"RJnNwu4-SGS8Ba5E0vGG9","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1249.2711181640626,"y":-1577.429931640625,"z":58.53964614868164}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"7bmROe64ocJzFqdLCo4xc","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1250.4375,"y":-1575.6448974609376,"z":58.53964614868164}}],"door_name":"Planning Room","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"Toilet","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"9LI4m0m3eVvJ5Qh2UNdzW","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1253.078857421875,"y":-1573.79541015625,"z":58.53964614868164}}],"door_name":"Toilet","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":5,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"C7OXrkTvor8Cq60sFKmA3","model_hash":-658590816,"text_dimensions":-1.30003573931753,"door_coords":{"x":1251.9793701171876,"y":-1569.2835693359376,"z":58.93437576293945}}],"door_name":"Upstairs Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"QIOU-q0oRr23Hkc0K2Lzs","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1257.9617919921876,"y":-1574.589599609375,"z":58.53964614868164}}],"door_name":"Staircase","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
File diff suppressed because one or more lines are too long
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"imported": false,
|
||||
"data": [{"location_group":"MBA MMA","door_sound":"door_click.ogg","lockpickable":false,"default_state":false,"id":1,"door_type":"single","door_data":[{"model_hash":123879009,"unique_id":"BeGLQbkb97y6PQYyTjjr3","door_coords":{"y":-1972.3277587890626,"z":22.34663963317871,"x":-326.7613830566406},"text_dimensions":-1.17614130675792}],"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"distance":2,"secret":false,"camera":true,"door_name":"Ring Entrance","state":false}],
|
||||
"name": "mba_mma.json"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"park_rangers.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"3Xd5wg_yiIMXqzAFNc6dB","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":387.7514953613281,"y":792.87109375,"z":187.84912109375}}],"door_name":"Downstairs Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"RpAepy1-JPSsn7EbwiVtj","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":388.63128662109377,"y":799.6823120117188,"z":187.8262634277344}}],"door_name":"Downstairs Side Entrance","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"9yq7H3Mq2tPfBhWuWIln7","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":383.4079284667969,"y":798.2910766601563,"z":187.61181640625}}],"door_name":"Cells","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"E1gDu9ZR7sP5p22_3TE5x","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":382.9616088867188,"y":796.8286743164063,"z":187.61172485351566}}],"door_name":"Cell 1","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"dyze6oCzWYlGS0_Hed8ZA","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":378.75830078125,"y":796.83642578125,"z":187.6123046875}}],"door_name":"Cell 2","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"1P9fGUfX3fyNGBzC-icYe","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":380.2174377441406,"y":792.7882690429688,"z":190.6414337158203}}],"door_name":"Upstairs Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"mkvXJc6cNcrVnjqRgNtxf","model_hash":1704212348,"text_dimensions":-1.29981100191804,"door_coords":{"x":384.3811950683594,"y":796.0927734375,"z":190.63963317871098}}],"door_name":"Office","camera":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"ponsonbys.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"Ay7SNjxZgGgDEt5URvjPc","text_dimensions":-1.05936599581036,"door_coords":{"x":-716.6500244140625,"y":-155.41656494140626,"z":37.68999099731445}},{"model_hash":-1922281023,"unique_id":"_TLVYXkcQOt1eN3Mw38Hg","text_dimensions":-1.05936599581036,"door_coords":{"x":-715.5914306640625,"y":-157.25010681152345,"z":37.68999099731445}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"G2f7V8cfDKFGK1OyoZZqA","text_dimensions":-1.05936599581036,"door_coords":{"x":-156.45928955078126,"y":-304.4152526855469,"z":40.00812911987305}},{"model_hash":-1922281023,"unique_id":"TNcHL8oOSnIqtAmvRAsWB","text_dimensions":-1.05936599581036,"door_coords":{"x":-157.14859008789066,"y":-306.4170837402344,"z":40.00812911987305}}],"door_name":"Entrance 2","secret":false,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"GLboSamYTJI2pdDIMwUIG","text_dimensions":-1.05936599581036,"door_coords":{"x":-1454.7708740234376,"y":-231.81578063964845,"z":50.07158660888672}},{"model_hash":-1922281023,"unique_id":"zuZIvxMdXbcRag9I5VGmF","text_dimensions":-1.05936599581036,"door_coords":{"x":-1456.1876220703126,"y":-233.3890380859375,"z":50.07158279418945}}],"door_name":"Entrance 3","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"pops_diner.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Pops Diner","door_data":[{"model_hash":861832298,"unique_id":"4dFgAWmMfvCh9XczrXNhg","text_dimensions":1.10002598294522,"door_coords":{"x":1581.062255859375,"y":6458.740234375,"z":25.01383018493652}}],"door_name":"Entrance 1","secret":true,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Pops Diner","door_data":[{"model_hash":-1428884643,"unique_id":"46de08AJtYcnPTNV-qW3y","text_dimensions":1.10002598294522,"door_coords":{"x":1595.5367431640626,"y":6451.9404296875,"z":25.01383018493652}}],"door_name":"Entrance 2","secret":true,"state":true,"camera":true,"door_sound":"","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"premium_deluxe_motorsport.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"uvDc0OY8x7MO1HAEmL2Wd","model_hash":1973010099,"text_dimensions":1.38004902750253,"door_coords":{"x":-55.95074081420898,"y":-1088.0653076171876,"z":27.61301040649414}}],"door_name":"Main Entrance","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"gLkOWZI7Z5PEZCE18I-YI","model_hash":1973010099,"text_dimensions":1.38004902750253,"door_coords":{"x":-48.12820434570312,"y":-1103.4998779296876,"z":27.61301040649414}}],"door_name":"Side Entrance","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"5VealIR2R4Fj2zIc_FNZy","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-27.62104797363281,"y":-1094.7628173828126,"z":27.42458724975586}}],"door_name":"Workshop Door","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"PejTcBim255BEmUZR6HGX","model_hash":1010499530,"text_dimensions":0,"door_coords":{"x":-21.86486625671386,"y":-1090.369873046875,"z":29.92569923400879}}],"door_name":"Workshop Garage Door","state":false,"default_state":true,"door_sound":"door_metal.ogg","door_type":"garage","lockpickable":false,"distance":10},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"q2H7PSn8xYm88q2sz7sEP","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-32.64266967773437,"y":-1108.5592041015626,"z":27.42458724975586}}],"door_name":"Office 1","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"ArmRQyw12i1lZgs9LT1X7","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-30.42845916748047,"y":-1102.47021484375,"z":27.42458724975586}}],"door_name":"Office 2","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"suburban_greatoceanhighway.json","imported":false,"data":[{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Great Ocean Highway","door_data":[{"unique_id":"e8VzFWrJjF9Xgf3SZNKXq","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":-3167.73193359375,"y":1055.5831298828126,"z":21.53314208984375}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"suburban_hawickave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Hawick Ave","door_data":[{"unique_id":"8eEcfA9U-jNiAx9_cijmm","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":127.83503723144533,"y":-211.77786254882813,"z":55.22748184204101}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"suburban_prosperitystreet.json","imported":false,"data":[{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Prosperity Street","door_data":[{"unique_id":"pcGfumK-sjwUheWerMC_H","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":-1201.474853515625,"y":-776.8890991210938,"z":17.99211120605468}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"suburban_route68.json","imported":false,"data":[{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Route 68","door_data":[{"unique_id":"_q0fshpRlMnaInb0SJtWw","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":617.2521362304688,"y":2750.972412109375,"z":42.75804138183594}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tattoo_chumash.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Chumash","door_data":[{"unique_id":"frzGVbOZqHMKCZxpC-Oko","model_hash":543652229,"text_dimensions":-1.30098725110292,"door_coords":{"x":-3167.78369140625,"y":1074.8648681640626,"z":20.94142913818359}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Chumash","door_data":[{"unique_id":"ar22MvXAVMhlMXXEaTme-","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":-3173.27490234375,"y":1076.7779541015626,"z":20.99953460693359}}],"door_name":"Office","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"imported": false,
|
||||
"data": [{"state":false,"door_sound":"door_wooden.ogg","default_state":false,"camera":false,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"lockpickable":false,"id":1,"door_type":"single","door_data":[{"model_hash":543652229,"unique_id":"gHa0rHROMp0wgMZeJfadf","text_dimensions":-1.30098725110292,"door_coords":{"x":1321.281982421875,"y":-1650.59228515625,"z":52.38686370849609}}],"location_group":"Tattoo El Burro","distance":2,"secret":false,"door_name":"Entrance"},{"state":true,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"default_state":true,"door_name":"Office","door_type":"single","lockpickable":false,"id":2,"secret":false,"door_data":[{"model_hash":1243635233,"unique_id":"Q-aq5dkrNGn6ZAUs97r5Q","door_coords":{"x":1325.27880859375,"y":-1654.8157958984376,"z":52.44652938842773},"text_dimensions":-1.30148995254421}],"camera":false,"distance":2,"location_group":"Tattoo El Burro","door_sound":"door_metal.ogg"}],
|
||||
"name": "tattoo_el_burro.json"
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tattoo_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Paleto","door_data":[{"unique_id":"zgKzztrckwYX3bg3Cm5_u","model_hash":1212467128,"text_dimensions":-1.30108321458101,"door_coords":{"x":-289.2171325683594,"y":6199.0751953125,"z":31.59542274475097}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Paleto","door_data":[{"unique_id":"4PGHIWhPFMDOvXNh4xH9z","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":-295.4470825195313,"y":6197.20703125,"z":31.65352821350097}}],"door_name":"Office","default_state":true,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tattoo_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Sandy","door_data":[{"unique_id":"cIgZISOWaj5txNopoog6g","model_hash":1212467128,"text_dimensions":-1.30108321458101,"door_coords":{"x":1859.943603515625,"y":3749.811279296875,"z":33.14018249511719}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Sandy","door_data":[{"unique_id":"AgtWcaknHz1DkhyFxaBu7","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":1866.44384765625,"y":3750.034423828125,"z":33.19828796386719}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tattoo_vespucci.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Vespucci","door_data":[{"model_hash":543652229,"unique_id":"gNWRRpTSvXW0-VBsHPtPf","text_dimensions":-1.30098725110292,"door_coords":{"x":-1155.457275390625,"y":-1424.003173828125,"z":5.06672286987304}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Vespucci","door_data":[{"model_hash":1243635233,"unique_id":"04z1peXJDfxD6-IlsMfDi","text_dimensions":-1.30148995254421,"door_coords":{"x":-1151.772705078125,"y":-1428.5015869140626,"z":5.1248288154602}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tattoo_vinewood.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Vinewood","door_data":[{"unique_id":"pMObyb14N35xVlweBtbM6","model_hash":543652229,"text_dimensions":-1.30098725110292,"door_coords":{"x":321.80633544921877,"y":178.3543701171875,"z":103.69883728027344}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Vinewood","door_data":[{"unique_id":"DLAREi673Uvkhlh1ISMi3","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":323.3778991699219,"y":183.9528045654297,"z":103.75694274902344}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"name":"triads.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-636132164,"unique_id":"WjbRlw-DPsf1WkNhk4VeC","text_dimensions":-1.24122721075409,"door_coords":{"x":-637.3693237304688,"y":-1249.239990234375,"z":11.94555854797363}},{"model_hash":1215119726,"unique_id":"5ky06pPI7P7DZG8SCdiAA","text_dimensions":-1.24122721075409,"door_coords":{"x":-639.8295288085938,"y":-1248.908203125,"z":11.94555854797363}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-636132164,"unique_id":"vH3yzgkCxoMQqQT-EEDDj","text_dimensions":-1.24122721075409,"door_coords":{"x":-644.4833374023438,"y":-1227.172607421875,"z":11.68207931518554}},{"model_hash":1215119726,"unique_id":"rGm_ss9e8c197PEhuTT_A","text_dimensions":-1.24122721075409,"door_coords":{"x":-643.1560668945313,"y":-1229.2705078125,"z":11.68207931518554}}],"door_name":"Rear Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-932312205,"unique_id":"2m1aNvh8AnhYd_25oWJQ5","text_dimensions":-0.92723370598388,"door_coords":{"x":-644.3853149414063,"y":-1234.34765625,"z":10.5670747756958}},{"model_hash":-932312205,"unique_id":"ybWZVggWYSjtcmPAvMHsy","text_dimensions":-0.92723370598388,"door_coords":{"x":-643.3903198242188,"y":-1235.9173583984376,"z":10.5670747756958}}],"door_name":"Main Room","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"u_p0968VOCtA5zUqusx_u","text_dimensions":-1.26961718147919,"door_coords":{"x":-650.9556274414063,"y":-1233.1766357421876,"z":11.74860000610351}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"9TX9cJrM2SyeThshduwO5","text_dimensions":-1.26961718147919,"door_coords":{"x":-649.8510131835938,"y":-1242.966064453125,"z":11.74860000610351}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"XSRftFx70fXmlUF5hOQuL","text_dimensions":-1.26961718147919,"door_coords":{"x":-642.6424560546875,"y":-1238.4056396484376,"z":11.74860000610351}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"tuner_shop.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-456733639,"unique_id":"Av94MNAhXvBkQ2nu5IlBy","text_dimensions":0,"door_coords":{"x":153.4243621826172,"y":-3023.88916015625,"z":10.93132209777832}}],"door_name":"Garage Door 1","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-456733639,"unique_id":"ozF4pU2TVR0ZXEikDYMT1","text_dimensions":0,"door_coords":{"x":153.4248809814453,"y":-3034.05126953125,"z":10.93116474151611}}],"door_name":"Garage Door 2","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-2023754432,"unique_id":"aNGEJhjj2eKLGJpTZMibf","text_dimensions":1.3113248348236,"door_coords":{"x":154.93446350097657,"y":-3017.322998046875,"z":7.19067859649658}}],"door_name":"Entrance","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-1229046235,"unique_id":"Jd0vvgnSd26jdLBf4zRHZ","text_dimensions":-1.3065949678421,"door_coords":{"x":151.466796875,"y":-3011.705078125,"z":7.25836658477783}}],"door_name":"Lockers","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"imported": false,
|
||||
"data": [{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":1,"location_group":"UwU Cafe","distance":2,"door_name":"Front Doors","camera":false,"door_data":[{"unique_id":"pWrF4QBZMeNIuWkIAniif","model_hash":-69331849,"door_coords":{"y":-1069.627197265625,"z":22.48974800109863,"x":-580.361083984375},"text_dimensions":-0.7333447933197},{"unique_id":"90teAuBWOmjORWBbBrRWB","model_hash":526179188,"door_coords":{"y":-1069.627197265625,"z":22.48974800109863,"x":-581.6677856445313},"text_dimensions":0.7333447933197}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"double","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":2,"location_group":"UwU Cafe","distance":2,"door_name":"Locker Room","camera":false,"door_data":[{"unique_id":"kK6pztKrOckSihtPnSLom","model_hash":-1283712428,"door_coords":{"y":-1051.8994140625,"z":22.41300582885742,"x":-587.3400268554688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":3,"location_group":"UwU Cafe","distance":2,"door_name":"Kitchen","camera":false,"door_data":[{"unique_id":"xGSVBgCGthnd0Ki3tIO2g","model_hash":-60871655,"door_coords":{"y":-1054.14794921875,"z":22.41300582885742,"x":-590.1828002929688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":4,"location_group":"UwU Cafe","distance":2,"door_name":"Warhouse Door","camera":false,"door_data":[{"unique_id":"pwdJVcRRv0mh40ARzk6qn","model_hash":-60871655,"door_coords":{"y":-1056.09130859375,"z":22.41300582885742,"x":-592.4738159179688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":5,"location_group":"UwU Cafe","distance":2,"door_name":"Office","camera":false,"door_data":[{"unique_id":"ZDmOxPGBxZP2ePC5rB3z3","model_hash":2089009131,"door_coords":{"y":-1049.7686767578126,"z":22.49712753295898,"x":-594.4122924804688},"text_dimensions":-1.31781597249209}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":6,"location_group":"UwU Cafe","distance":2,"door_name":"Garage Door","camera":false,"door_data":[{"unique_id":"zpjHUiTaUb_6OXUZ4IshG","model_hash":522844070,"door_coords":{"y":-1059.2176513671876,"z":21.72342109680175,"x":-600.9105834960938},"text_dimensions":0}],"default_state":true,"secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"door_type":"garage","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":7,"location_group":"UwU Cafe","distance":2,"door_name":"Fire Exit","camera":false,"door_data":[{"unique_id":"3zYsxNEIr6zOUxGNjHtTM","model_hash":1099436502,"door_coords":{"y":-1055.1314697265626,"z":22.71302795410156,"x":-600.8886108398438},"text_dimensions":1.30020797584438}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true}],
|
||||
"name": "uwu_cafe.json"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"vagos.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"5GDbcxr9Hru_nBX9HAoyD","model_hash":2118614536,"text_dimensions":-1.312224984169,"door_coords":{"x":324.7153015136719,"y":-1991.085693359375,"z":24.36291313171386}}],"door_name":"Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"nLAZ_GfJUwA72kbGPb8kb","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":325.7207946777344,"y":-1992.8177490234376,"z":24.35715103149414}}],"door_name":"Planning Room","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"SYOepAxdw-wby90qk_UOg","model_hash":2118614536,"text_dimensions":-1.312224984169,"door_coords":{"x":336.7447814941406,"y":-1991.843505859375,"z":24.36291313171386}}],"door_name":"Rear Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"IomiJC9PBDIkDSfzmWje7","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":334.6651611328125,"y":-1990.0810546875,"z":24.35715103149414}}],"door_name":"Hallway","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":5,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"LX7-f-FW3oU30nqK0yidY","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":335.9012451171875,"y":-1984.5367431640626,"z":24.35715103149414}}],"door_name":"Office","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"35je0dP-oU5_6ssTVzG-e","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":336.7800903320313,"y":-1985.274169921875,"z":24.35715103149414}}],"door_name":"Toilet","secret":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"vanilla_unicorn.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"RjO6ppBeb2AdGhQGqLYhX","model_hash":-1116041313,"text_dimensions":1.29986200378334,"door_coords":{"x":127.95006561279296,"y":-1298.506591796875,"z":29.41962242126465}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"00On8_GzoFv3ucbwFTFzm","model_hash":1695461688,"text_dimensions":1.30109897474176,"door_coords":{"x":128.07080078125,"y":-1279.3466796875,"z":29.43696784973144}}],"door_name":"DJ Booth","default_state":true,"state":true,"secret":false,"door_sound":"","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"Q9rr4wd3y5Rx5V7i_7GRT","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":116.2277603149414,"y":-1294.592529296875,"z":29.43598937988281}}],"door_name":"Premium Lounge","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"W8YZ03RiwhodljOqBajSH","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":113.41009521484377,"y":-1296.260009765625,"z":29.43598937988281}}],"door_name":"Dressing Room","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"E9lFoU1r3-9nAIVkbGnqB","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":99.08306884765624,"y":-1293.6890869140626,"z":29.44040489196777}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"he1uNgjyCaJPKgYY1LhAk","model_hash":1695461688,"text_dimensions":1.30109897474176,"door_coords":{"x":96.09197235107422,"y":-1284.853759765625,"z":29.43878364562988}}],"door_name":"Exit","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"name":"weed_camp.json","imported":false,"data":[{"door_type":"single","id":1,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2187.753662109375,"y":5573.41650390625,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"6yNlQkApKvR9e4Z31X9IG"}],"door_name":"Office","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":2,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2186.557861328125,"y":5578.07568359375,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"BlOfeyBRHmQhUTLrMTy14"}],"door_name":"Locker Room","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":3,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2189.86474609375,"y":5578.07568359375,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"M12pBBqIe8EEb7BTUGUPv"}],"door_name":"Bathroom","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":4,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_metal.ogg","door_data":[{"door_coords":{"x":2196.78125,"y":5570.08349609375,"z":54.05622482299805},"model_hash":819505495,"text_dimensions":-1.30224609375,"unique_id":"LYTMdkph851V9_UP9dJtk"}],"door_name":"Entrance","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2}]}
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
https://docs.codesign.pro/paid-scripts/door-lock
|
||||
Binary file not shown.
@@ -0,0 +1,75 @@
|
||||
RegisterNetEvent('cd_doorlock:ToggleNUIFocus_1')
|
||||
AddEventHandler('cd_doorlock:ToggleNUIFocus_1', function()
|
||||
Wait(100)
|
||||
NUI_status = true
|
||||
while NUI_status do
|
||||
Wait(5)
|
||||
SetNuiFocus(NUI_status, NUI_status)
|
||||
end
|
||||
SetNuiFocus(false, false)
|
||||
end)
|
||||
|
||||
RegisterNetEvent('cd_doorlock:Callback')
|
||||
AddEventHandler('cd_doorlock:Callback', function(id, result)
|
||||
CB[id] = result
|
||||
Wait(5000)
|
||||
CB[id] = nil
|
||||
end)
|
||||
|
||||
function Callback(action, data)
|
||||
CB_id = CB_id + 1
|
||||
TriggerServerEvent('cd_doorlock:Callback', CB_id, action, data)
|
||||
local timeout = 0 while CB[CB_id] == nil and timeout <= 100 do Wait(0) timeout=timeout+1 end
|
||||
return CB[CB_id]
|
||||
end
|
||||
|
||||
local tablet_prop
|
||||
|
||||
local function PlayAnimation(animDict, animName, duration)
|
||||
RequestAnimDict(animDict)
|
||||
while not HasAnimDictLoaded(animDict) do Citizen.Wait(0) end
|
||||
TaskPlayAnim(PlayerPedId(), animDict, animName, 1.0, -1.0, duration, 49, 1, false, false, false)
|
||||
RemoveAnimDict(animDict)
|
||||
end
|
||||
|
||||
function TabletAnimation(boolean)
|
||||
local ped = PlayerPedId()
|
||||
if boolean then
|
||||
PlayAnimation('amb@world_human_seat_wall_tablet@female@base', 'base', -1)
|
||||
tablet_prop = CreateObject(`prop_cs_tablet`, 0, 0, 0, true, true, true)
|
||||
AttachEntityToEntity(tablet_prop, ped, GetPedBoneIndex(ped, 57005), 0.17, 0.10, -0.13, 20.0, 180.0, 180.0, true, true, false, true, 1, true)
|
||||
SetModelAsNoLongerNeeded(tablet_prop)
|
||||
else
|
||||
StopAnimTask(ped, 'amb@world_human_seat_wall_tablet@female@base', 'base' ,8.0, -8.0, -1, 50, 0, false, false, false)
|
||||
NetworkRequestControlOfEntity(tablet_prop)
|
||||
SetEntityAsMissionEntity(tablet_prop)
|
||||
DeleteEntity(tablet_prop)
|
||||
tablet_prop = nil
|
||||
end
|
||||
end
|
||||
|
||||
function Draw3DText(coords, text)
|
||||
local cd, x, y = World3dToScreen2d(coords.x, coords.y, coords.z)
|
||||
SetTextScale(0.35, 0.35)
|
||||
SetTextFont(4)
|
||||
SetTextCentre(1)
|
||||
SetTextEntry('STRING')
|
||||
AddTextComponentString(text)
|
||||
DrawText(x, y)
|
||||
DrawRect(x, y+0.0125, 0.015+string.len(text)/400, 0.035, 71, 71, 71, 100)
|
||||
end
|
||||
|
||||
function InVehicle()
|
||||
return IsPedInAnyVehicle(PlayerPedId())
|
||||
end
|
||||
|
||||
AddEventHandler('onResourceStop', function(resource)
|
||||
if resource == GetCurrentResourceName() then
|
||||
local ped = PlayerPedId()
|
||||
DisableCam()
|
||||
TabletAnimation(false)
|
||||
ClearPedTasks(ped)
|
||||
FreezeEntityPosition(ped, false)
|
||||
DrawTextUI(false)
|
||||
end
|
||||
end)
|
||||
@@ -0,0 +1,334 @@
|
||||
--███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
|
||||
--██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
|
||||
--█████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
|
||||
--██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
|
||||
--██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
|
||||
--╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
ESX, QBCore = nil, nil
|
||||
JobData, GangData, on_duty = {}, {}, true
|
||||
|
||||
CreateThread(function()
|
||||
if Config.Framework == 'esx' then
|
||||
while ESX == nil do
|
||||
pcall(function() ESX = exports[Config.FrameworkTriggers.resource_name]:getSharedObject() end)
|
||||
if ESX == nil then
|
||||
TriggerEvent(Config.FrameworkTriggers.main, function(obj) ESX = obj end)
|
||||
end
|
||||
Wait(100)
|
||||
end
|
||||
JobData = ESX.PlayerData.job or {}
|
||||
if JobData.onDuty ~= nil and Config.UseFrameworkDutySystem then on_duty = JobData.onDuty end
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.load)
|
||||
AddEventHandler(Config.FrameworkTriggers.load, function(xPlayer)
|
||||
JobData = xPlayer.job or {}
|
||||
if JobData.onDuty ~= nil and Config.UseFrameworkDutySystem then on_duty = JobData.onDuty end
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.job)
|
||||
AddEventHandler(Config.FrameworkTriggers.job, function(job)
|
||||
JobData = job or {}
|
||||
if JobData.onDuty ~= nil and Config.UseFrameworkDutySystem then on_duty = JobData.onDuty end
|
||||
end)
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
while QBCore == nil do
|
||||
TriggerEvent(Config.FrameworkTriggers.main, function(obj) QBCore = obj end)
|
||||
if QBCore == nil then
|
||||
QBCore = exports[Config.FrameworkTriggers.resource_name]:GetCoreObject()
|
||||
end
|
||||
Wait(100)
|
||||
end
|
||||
JobData = QBCore.Functions.GetPlayerData().job or {}
|
||||
GangData = QBCore.Functions.GetPlayerData().gang or {}
|
||||
if JobData.onduty ~= nil and Config.UseFrameworkDutySystem then on_duty = JobData.onduty end
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.load)
|
||||
AddEventHandler(Config.FrameworkTriggers.load, function()
|
||||
JobData = QBCore.Functions.GetPlayerData().job or {}
|
||||
GangData = QBCore.Functions.GetPlayerData().gang or {}
|
||||
if JobData.onduty ~= nil and Config.UseFrameworkDutySystem then on_duty = JobData.onduty end
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.job)
|
||||
AddEventHandler(Config.FrameworkTriggers.job, function(JobInfo)
|
||||
JobData = JobInfo or {}
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.duty)
|
||||
AddEventHandler(Config.FrameworkTriggers.duty, function(boolean)
|
||||
if not Config.UseFrameworkDutySystem then return end
|
||||
on_duty = boolean
|
||||
end)
|
||||
|
||||
RegisterNetEvent(Config.FrameworkTriggers.gang)
|
||||
AddEventHandler(Config.FrameworkTriggers.gang, function(GangInfo)
|
||||
GangData = GangInfo or {}
|
||||
end)
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your framework code here.
|
||||
|
||||
end
|
||||
|
||||
while true do
|
||||
Wait(100)
|
||||
if NetworkIsSessionStarted() then
|
||||
TriggerServerEvent('cd_doorlock:PlayerLoaded')
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function GetDoorPerms()
|
||||
local temp_table = {}
|
||||
|
||||
if Config.DoorAccessPerms.Framework then
|
||||
if Config.Framework == 'esx' then
|
||||
while JobData.name == nil do Wait(0) end
|
||||
temp_table.job = {job_name = JobData.name, job_grade = JobData.grade}
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
while JobData.name == nil do Wait(0) end
|
||||
while GangData.name == nil do Wait(0) end
|
||||
temp_table.job = {job_name = JobData.name, job_grade = JobData.grade.level, gang_name = GangData.name, gang_grade = GangData.grade.level}
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
temp_table.job = {job_name = 'unemployed', job_grade = 0} --return a players job name (string) and job grade (number).
|
||||
end
|
||||
end
|
||||
|
||||
if Config.DoorAccessPerms.Identifiers or Config.DoorAccessPerms.Discord then
|
||||
local callback = Callback('get_door_perms_identifier_discord')
|
||||
temp_table.identifier = callback.identifiers
|
||||
temp_table.discord = callback.discord
|
||||
end
|
||||
|
||||
return temp_table
|
||||
end
|
||||
|
||||
function CheckDoorPerms(door_perms_data)
|
||||
if Config.DoorAccessPerms.Framework then
|
||||
if Config.Framework == 'esx' then
|
||||
for c, d in pairs(door_perms_data.job) do
|
||||
if JobData.name == d.name and JobData.grade >= d.grade and on_duty then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
for c, d in pairs(door_perms_data.job) do
|
||||
if (JobData.name == d.name and JobData.grade.level >= d.grade and on_duty) or (GangData.name == d.name and GangData.grade.level >= d.grade) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'vrp' then
|
||||
return Callback('check_door_perms_vrp', door_perms_data.job)
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your own permissions check here (boolean).
|
||||
return true
|
||||
end
|
||||
end
|
||||
if Config.DoorAccessPerms.Identifiers or Config.DoorAccessPerms.AcePerms or Config.DoorAccessPerms.Discord or Config.DoorAccessPerms.Items then
|
||||
if (door_perms_data.identifier and #door_perms_data.identifier > 0) or (door_perms_data.ace and #door_perms_data.ace > 0) or (door_perms_data.discord and #door_perms_data.discord > 0) or (door_perms_data.items and #door_perms_data.items > 0) then
|
||||
return Callback('check_door_perms_all', door_perms_data)
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function CheckAdminPerms()
|
||||
return Callback('check_admin_perms')
|
||||
end
|
||||
|
||||
|
||||
--██╗ ██╗███████╗██╗ ██╗███████╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ███╗ █████╗ ███╗ ██╗██████╗ ███████╗
|
||||
--██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔══██╗████╗ ██║██╔══██╗ ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝
|
||||
--█████╔╝ █████╗ ╚████╔╝ ███████╗ ███████║██╔██╗ ██║██║ ██║ ██║ ██║ ██║██╔████╔██║██╔████╔██║███████║██╔██╗ ██║██║ ██║███████╗
|
||||
--██╔═██╗ ██╔══╝ ╚██╔╝ ╚════██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║╚════██║
|
||||
--██║ ██╗███████╗ ██║ ███████║ ██║ ██║██║ ╚████║██████╔╝ ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║██║ ██║██║ ╚████║██████╔╝███████║
|
||||
--╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝
|
||||
|
||||
|
||||
TriggerEvent('chat:addSuggestion', '/'..Config.OpenDoorMenu.command, L('command_opendoormenu'))
|
||||
RegisterCommand(Config.OpenDoorMenu.command, function()
|
||||
TriggerEvent('cd_doorlock:OpenDoorLockMenu')
|
||||
end)
|
||||
|
||||
RegisterKeyMapping(Config.ToggleDoorLock.command, L('command_toggledoorlock'), 'keyboard', Config.ToggleDoorLock.key)
|
||||
TriggerEvent('chat:addSuggestion', '/'..Config.ToggleDoorLock.command, L('command_toggledoorlock'))
|
||||
RegisterCommand(Config.ToggleDoorLock.command, function()
|
||||
TriggerEvent('cd_doorlock:ToggleDoorState')
|
||||
end)
|
||||
|
||||
|
||||
-- ██╗ ██████╗ ██████╗██╗ ██╗██████╗ ██╗ ██████╗██╗ ██╗██╗███╗ ██╗ ██████╗
|
||||
-- ██║ ██╔═══██╗██╔════╝██║ ██╔╝██╔══██╗██║██╔════╝██║ ██╔╝██║████╗ ██║██╔════╝
|
||||
-- ██║ ██║ ██║██║ █████╔╝ ██████╔╝██║██║ █████╔╝ ██║██╔██╗ ██║██║ ███╗
|
||||
-- ██║ ██║ ██║██║ ██╔═██╗ ██╔═══╝ ██║██║ ██╔═██╗ ██║██║╚██╗██║██║ ██║
|
||||
-- ███████╗╚██████╔╝╚██████╗██║ ██╗██║ ██║╚██████╗██║ ██╗██║██║ ╚████║╚██████╔╝
|
||||
-- ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝
|
||||
|
||||
|
||||
function StartLockpicking()
|
||||
if math.random(1, 100) <= Config.LockpickItems.police_alert_chance then
|
||||
PoliceDispatchAlert()
|
||||
end
|
||||
|
||||
if GetResourceState('cd_keymaster') == 'started' then
|
||||
local result = exports['cd_keymaster']:StartKeyMaster()
|
||||
return result
|
||||
else
|
||||
--Add your own lockpick/minigame here. You must return a boolean (true or false).
|
||||
print('^1You must configure a lockpick/minigame resource to use this feature.^0')
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function PoliceDispatchAlert()
|
||||
if GetResourceState('cd_dispatch') == 'started' then
|
||||
local data = exports['cd_dispatch']:GetPlayerInfo()
|
||||
TriggerServerEvent('cd_dispatch:AddNotification', {
|
||||
job_table = {'police', },
|
||||
coords = data.coords,
|
||||
title = '10-15 - Lock picking',
|
||||
message = 'A '..data.sex..' is lock picking a door at '..data.street,
|
||||
flash = 0,
|
||||
unique_id = data.unique_id,
|
||||
sound = 1,
|
||||
blip = {
|
||||
sprite = 431,
|
||||
scale = 1.2,
|
||||
colour = 3,
|
||||
flashes = false,
|
||||
text = '911 - Lock picking',
|
||||
time = 5,
|
||||
radius = 0,
|
||||
}
|
||||
})
|
||||
else
|
||||
--Add your own police dispatch alert here.
|
||||
print('^1You must configure a dispatch resource to use this feature.^0')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--███╗ ██╗ ██████╗ ████████╗██╗███████╗██╗ ██████╗ █████╗ ████████╗██╗ ██████╗ ███╗ ██╗███████╗
|
||||
--████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██║██╔════╝██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
|
||||
--██╔██╗ ██║██║ ██║ ██║ ██║█████╗ ██║██║ ███████║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
|
||||
--██║╚██╗██║██║ ██║ ██║ ██║██╔══╝ ██║██║ ██╔══██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
|
||||
--██║ ╚████║╚██████╔╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████║
|
||||
--╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
|
||||
|
||||
function Notification(notif_type, message)
|
||||
if notif_type and message then
|
||||
if Config.Notification == 'esx' then
|
||||
ESX.ShowNotification(message)
|
||||
|
||||
elseif Config.Notification == 'qbcore' then
|
||||
if notif_type == 1 then
|
||||
QBCore.Functions.Notify(message, 'success')
|
||||
elseif notif_type == 2 then
|
||||
QBCore.Functions.Notify(message, 'primary')
|
||||
elseif notif_type == 3 then
|
||||
QBCore.Functions.Notify(message, 'error')
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'cd_notifications' then
|
||||
if notif_type == 1 then
|
||||
TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'success', options = {duration = 5}})
|
||||
elseif notif_type == 2 then
|
||||
TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'inform', options = {duration = 5}})
|
||||
elseif notif_type == 3 then
|
||||
TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'error', options = {duration = 5}})
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'okokNotify' then
|
||||
if notif_type == 1 then
|
||||
exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'success')
|
||||
elseif notif_type == 2 then
|
||||
exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'info')
|
||||
elseif notif_type == 3 then
|
||||
exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'error')
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'ps-ui' then
|
||||
if notif_type == 1 then
|
||||
exports['ps-ui']:Notify(message, 'success', 5000)
|
||||
elseif notif_type == 2 then
|
||||
exports['ps-ui']:Notify(message, 'primary', 5000)
|
||||
elseif notif_type == 3 then
|
||||
exports['ps-ui']:Notify(message, 'error', 5000)
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'ox_lib' then
|
||||
if notif_type == 1 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'success'})
|
||||
elseif notif_type == 2 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'inform'})
|
||||
elseif notif_type == 3 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'error'})
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'chat' then
|
||||
TriggerEvent('chatMessage', message)
|
||||
|
||||
elseif Config.Notification == 'other' then
|
||||
--add your own notification.
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--██████╗ ███████╗██████╗ ██╗ ██╗ ██████╗
|
||||
--██╔══██╗██╔════╝██╔══██╗██║ ██║██╔════╝
|
||||
--██║ ██║█████╗ ██████╔╝██║ ██║██║ ███╗
|
||||
--██║ ██║██╔══╝ ██╔══██╗██║ ██║██║ ██║
|
||||
--██████╔╝███████╗██████╔╝╚██████╔╝╚██████╔╝
|
||||
--╚═════╝ ╚══════╝╚═════╝ ╚═════╝ ╚═════╝
|
||||
|
||||
|
||||
if Config.Debug then
|
||||
local function Debug()
|
||||
print('^6-----------------------^0')
|
||||
print('^1CODESIGN DEBUG^0')
|
||||
print(string.format('^6Resource Name:^0 %s', GetCurrentResourceName()))
|
||||
print(string.format('^6Framework:^0 %s', Config.Framework))
|
||||
print(string.format('^6Notification:^0 %s', Config.Notification))
|
||||
print(string.format('^6Language:^0 %s', Config.Language))
|
||||
if Config.Framework == 'esx' then
|
||||
while JobData.name == nil do Wait(0) end
|
||||
print(string.format('^6Job Name:^0 %s', JobData.name))
|
||||
print(string.format('^6Job Grade:^0 %s', JobData.grade))
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
while JobData.name == nil do Wait(0) end
|
||||
print(string.format('^6Job Name:^0 %s', JobData.name))
|
||||
print(string.format('^6Job Grade:^0 %s', JobData.grade.level))
|
||||
print(string.format('^6Gang Name:^0 %s', GangData.name))
|
||||
print(string.format('^6Gang Grade:^0 %s', GangData.grade.level))
|
||||
end
|
||||
print(string.format('^6Use Framework Duty System:^0 %s', Config.UseFrameworkDutySystem))
|
||||
print(string.format('^6On Duty:^0 %s', on_duty))
|
||||
print(string.format('^6Config.AdminAccess: [Framework: ^0%s^6] [Identifiers: ^0%s^6] [AcePerms: ^0%s^6] [Discord: ^0%s^6]', Config.AdminAccess.Framework.ENABLE, Config.AdminAccess.Identifiers.ENABLE, Config.AdminAccess.AcePerms.ENABLE, Config.AdminAccess.Discord.ENABLE))
|
||||
print(string.format('^6Config.DoorAccessPerms: [Framework: ^0%s^6] [Identifiers: ^0%s^6] [AcePerms: ^0%s^6] [Discord: ^0%s^6] [Items: ^0%s^6]', Config.DoorAccessPerms.Framework, Config.DoorAccessPerms.Identifiers, Config.DoorAccessPerms.AcePerms, Config.DoorAccessPerms.Discord, Config.DoorAccessPerms.Items))
|
||||
print(string.format('^6Admin Access:^0 %s', CheckAdminPerms()))
|
||||
print('^6-----------------------^0')
|
||||
TriggerServerEvent('cd_doorlock:Debug')
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
Wait(3000)
|
||||
Debug()
|
||||
end)
|
||||
|
||||
RegisterCommand('debug_doorlock', function()
|
||||
Debug()
|
||||
end)
|
||||
end
|
||||
@@ -0,0 +1,198 @@
|
||||
Config = {}
|
||||
function L(cd) if Locales[Config.Language][cd] then return Locales[Config.Language][cd] else print('Locale is nil ('..cd..')') end end
|
||||
--███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
|
||||
--██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
|
||||
--█████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
|
||||
--██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
|
||||
--██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
|
||||
--╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
--WHAT DOES 'auto_detect' DO?
|
||||
--The 'auto_detect' feature automatically identifies your framework and notification resource and applies the appropriate default settings.
|
||||
|
||||
Config.Framework = 'auto_detect' --[ 'auto_detect' / 'other' ] If you select 'auto_detect', only ESX, QBCore, vRP and Standalone frameworks will be detected. Use 'other' for custom frameworks.
|
||||
Config.Notification = 'auto_detect' --[ 'auto_detect' / 'other' ] If you select 'auto_detect', only ESX, QBCore, cd_notifications, okokNotify, ps-ui and ox_lib notifications will be detected. Use 'other' for custom notification resources.
|
||||
Config.Language = 'EN' --[ 'EN' / 'DE' / 'NL' ] You can add your own locales to Locales.lua, but be sure to update the Config.Language to match it.
|
||||
|
||||
Config.FrameworkTriggers = {
|
||||
esx = { --If you have modified the default event names in the es_extended resource, change them here.
|
||||
resource_name = 'es_extended',
|
||||
main = 'esx:getSharedObject',
|
||||
load = 'esx:playerLoaded',
|
||||
job = 'esx:setJob'
|
||||
},
|
||||
qbcore = { --If you have modified the default event names in the qb-core resource, change them here.
|
||||
resource_name = 'qb-core',
|
||||
main = 'QBCore:GetObject',
|
||||
load = 'QBCore:Client:OnPlayerLoaded',
|
||||
job = 'QBCore:Client:OnJobUpdate',
|
||||
gang = 'QBCore:Client:OnGangUpdate',
|
||||
duty = 'QBCore:Client:SetDuty'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
--██╗███╗ ███╗██████╗ ██████╗ ██████╗ ████████╗ █████╗ ███╗ ██╗████████╗
|
||||
--██║████╗ ████║██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝██╔══██╗████╗ ██║╚══██╔══╝
|
||||
--██║██╔████╔██║██████╔╝██║ ██║██████╔╝ ██║ ███████║██╔██╗ ██║ ██║
|
||||
--██║██║╚██╔╝██║██╔═══╝ ██║ ██║██╔══██╗ ██║ ██╔══██║██║╚██╗██║ ██║
|
||||
--██║██║ ╚═╝ ██║██║ ╚██████╔╝██║ ██║ ██║ ██║ ██║██║ ╚████║ ██║
|
||||
--╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝
|
||||
|
||||
|
||||
Config.Debug = false --To enable debug prints.
|
||||
Config.UseFrameworkDutySystem = false --Do you want to use your frameworks (esx/qbcore) built-in duty system?
|
||||
|
||||
|
||||
--███╗ ███╗ █████╗ ██╗███╗ ██╗
|
||||
--████╗ ████║██╔══██╗██║████╗ ██║
|
||||
--██╔████╔██║███████║██║██╔██╗ ██║
|
||||
--██║╚██╔╝██║██╔══██║██║██║╚██╗██║
|
||||
--██║ ╚═╝ ██║██║ ██║██║██║ ╚████║
|
||||
--╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝
|
||||
|
||||
|
||||
Config.AdminAccess = { --A list of different methods where you can define which players have admin permissions to create/edit/delete/import doors on the in-game UI.
|
||||
Framework = { --(ESX, QBcore & vRP only!) Ignore this framework section if you don't use a framework.
|
||||
['esx'] = {'superadmin', 'admin', },
|
||||
['qbcore'] = {'god', 'admin', },
|
||||
['vrp'] = {5, 6, 7, 8, 9, 10, }
|
||||
},
|
||||
|
||||
Identifiers = {
|
||||
ENABLE = true, --Do you want to allow players with specific fivem identifiers to use the admin features?
|
||||
identifier_list = {'steam:xxxxx', 'license:xxxxx', 'fivem:xxxxx', }, --You can use a players steam, license or fivem id etc.
|
||||
},
|
||||
|
||||
AcePerms = {
|
||||
ENABLE = true, --Do you want to allow players with specific ace perms to use the admin features?
|
||||
aceperms_list = {'doorlock.police', }, --Make sure you have your ace perms configured correctly in your server.cfg.
|
||||
},
|
||||
|
||||
Discord = { --(REQUIRES Badger Discord API).
|
||||
ENABLE = true, --Do you want to allow players with specific discord roles in your discord to use the admin features?
|
||||
discord_list = {'xxxxx', 'xxxxx', }, --You must put the role id from your discord here (https://www.itgeared.com/how-to-get-role-id-on-discord).
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Config.DoorAccessPerms = { --When creating/editing/deleting/importing doors, you always need to define which permission groups can lock/unlock these doors. Here you can choose which perms options are available to choose from on the in-game UI.
|
||||
Identifiers = true, --Do you want to allow players to use doors based on their fivem identifiers? (license,steam,fivem etc)
|
||||
AcePerms = true, --Do you want to allow players to use doors based on their ace perms?
|
||||
Discord = true, --(REQUIRES Badger Discord API). Do you want to allow players to use doors based on their discord roles?
|
||||
Items = true --(REQUIRES ESX/QBCore). Do you want to allow players to use doors based on the items they have in their inventory?
|
||||
}
|
||||
|
||||
|
||||
Config.DoorStateDisplay = {
|
||||
DrawTextUI = true, --Do you want doors to display the lock/unlock state via the built in draw text UI?
|
||||
Emojis = true, --Do you want doors to display the lock/unlock state via emojis?
|
||||
Draw3DText = false, --Do you want doors to display the lock/unlock state via draw 3d text UI?
|
||||
Notification = true --Do you want a notification to show after a door is locked/unlocked?
|
||||
}
|
||||
|
||||
Config.LockpickItems = {
|
||||
ENABLE = true, --(ESX & QBcore only!) Do you want to require a playern to have an item in their inventory to lockpick a door?
|
||||
usable_lockpick_item = true, --In addition to pressing E to lockpick a door, do you want to allow players to use a usable lockpick item from their inventory?
|
||||
police_alert_chance = 50, --(0 = 0% chance, 100 = 100% chance) When a player is lockpicking a door, there is a chance that the police will be alerted. This is the percentage chance of this happening.
|
||||
lockpick_items = { --Having at least 1 of these items in your inventory will allow a player to lockpick a door.
|
||||
'lockpick',
|
||||
'advanced_lockpick',
|
||||
--'add_more_here',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
--██╗ ██╗███████╗██╗ ██╗███████╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ███╗ █████╗ ███╗ ██╗██████╗ ███████╗
|
||||
--██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔══██╗████╗ ██║██╔══██╗ ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝
|
||||
--█████╔╝ █████╗ ╚████╔╝ ███████╗ ███████║██╔██╗ ██║██║ ██║ ██║ ██║ ██║██╔████╔██║██╔████╔██║███████║██╔██╗ ██║██║ ██║███████╗
|
||||
--██╔═██╗ ██╔══╝ ╚██╔╝ ╚════██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║╚════██║
|
||||
--██║ ██╗███████╗ ██║ ███████║ ██║ ██║██║ ╚████║██████╔╝ ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║██║ ██║██║ ╚████║██████╔╝███████║
|
||||
--╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝
|
||||
|
||||
|
||||
Config.OpenDoorMenu = {
|
||||
ENABLE = true, --Do you want to allow player's open the door lock UI?
|
||||
command = 'doorlockui' --The chat command.
|
||||
}
|
||||
|
||||
Config.ToggleDoorLock = {
|
||||
ENABLE = true, --Do you want to allow player's to toggle door locks?
|
||||
command = 'doorlock', --The chat command.
|
||||
key = 'e' --The keypress.
|
||||
}
|
||||
|
||||
|
||||
-- ██████╗ ████████╗██╗ ██╗███████╗██████╗
|
||||
--██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗
|
||||
--██║ ██║ ██║ ███████║█████╗ ██████╔╝
|
||||
--██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗
|
||||
--╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║
|
||||
-- ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
function Round(cd) return math.floor(cd+0.5) end
|
||||
function Trim(cd) return cd:gsub('%s+', '') end
|
||||
|
||||
|
||||
-- █████╗ ██╗ ██╗████████╗ ██████╗ ██████╗ ███████╗████████╗███████╗ ██████╗████████╗
|
||||
--██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝
|
||||
--███████║██║ ██║ ██║ ██║ ██║ ██║ ██║█████╗ ██║ █████╗ ██║ ██║
|
||||
--██╔══██║██║ ██║ ██║ ██║ ██║ ██║ ██║██╔══╝ ██║ ██╔══╝ ██║ ██║
|
||||
--██║ ██║╚██████╔╝ ██║ ╚██████╔╝ ██████╔╝███████╗ ██║ ███████╗╚██████╗ ██║
|
||||
--╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝
|
||||
|
||||
|
||||
-----DO NOT TOUCH ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING.-----
|
||||
if Config.Framework == 'auto_detect' then
|
||||
if GetResourceState(Config.FrameworkTriggers.esx.resource_name) == 'started' then
|
||||
Config.Framework = 'esx'
|
||||
elseif GetResourceState(Config.FrameworkTriggers.qbcore.resource_name) == 'started' then
|
||||
Config.Framework = 'qbcore'
|
||||
elseif GetResourceState('vrp') == 'started' then
|
||||
Config.Framework = 'vrp'
|
||||
else
|
||||
Config.Framework = 'standalone'
|
||||
end
|
||||
if Config.Framework == 'esx' or Config.Framework == 'qbcore' then
|
||||
for c, d in pairs(Config.FrameworkTriggers[Config.Framework]) do
|
||||
Config.FrameworkTriggers[c] = d
|
||||
end
|
||||
Config.FrameworkTriggers.esx, Config.FrameworkTriggers.qbcore = nil, nil
|
||||
end
|
||||
end
|
||||
|
||||
if Config.Notification == 'auto_detect' then
|
||||
if GetResourceState('cd_notifications') == 'started' then
|
||||
Config.Notification = 'cd_notifications'
|
||||
elseif GetResourceState('okokNotify') == 'started' then
|
||||
Config.Notification = 'okokNotify'
|
||||
elseif GetResourceState('ps-ui') == 'started' then
|
||||
Config.Notification = 'ps-ui'
|
||||
elseif GetResourceState('ox_lib') == 'started' then
|
||||
Config.Notification = 'ox_lib'
|
||||
else
|
||||
if Config.Framework == 'esx' or Config.Framework == 'qbcore' then
|
||||
Config.Notification = Config.Framework
|
||||
else
|
||||
Config.Notification = 'chat'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if GetResourceState('Badger_Discord_API') ~= 'started' then
|
||||
Config.AdminAccess.Discord.ENABLE = false
|
||||
Config.DoorAccessPerms.Discord = false
|
||||
end
|
||||
|
||||
if Config.Framework == 'esx' or Config.Framework == 'qbcore' or Config.Framework == 'other' then
|
||||
Config.AdminAccess.Framework.ENABLE = true
|
||||
Config.DoorAccessPerms.Framework = true
|
||||
else
|
||||
Config.AdminAccess.Framework.ENABLE = false
|
||||
Config.DoorAccessPerms.Framework = false
|
||||
Config.LockpickItems.ENABLE = false
|
||||
Config.DoorAccessPerms.Items = false
|
||||
end
|
||||
-----DO NOT TOUCH ANYTHING ABOVE THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING.-----
|
||||
@@ -0,0 +1,13 @@
|
||||
window['config'] = {
|
||||
"door_name_max_length": 32,
|
||||
"door_name_match": new RegExp(/[^a-zA-Z-\/\s\\0-9]/guis),
|
||||
|
||||
"door_passcode_max_length": 8,
|
||||
|
||||
"job_name_max_length": 32,
|
||||
"job_name_match": new RegExp(/[^a-zA-Z0-9]/guis),
|
||||
|
||||
"job_grade_max": 16,
|
||||
|
||||
"identifier_max_length": 64
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
Locales = {
|
||||
['EN'] = { --english
|
||||
['data_not_cached'] = 'Please try again in a few seconds...',
|
||||
['camera_unavailable'] = 'Camera unavailable. Try again when you are closer to the door',
|
||||
['door_locked'] = 'Door locked',
|
||||
['door_unlocked'] = 'Door unlocked',
|
||||
['webhook_message_1'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Door Data**\nLocation Group: **%s**\nDoor Name: **%s**\nDoor Type: **%s**',
|
||||
['webhook_message_2'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Import File Data**\nFile Name: **%s**\nDoor Count: **%s**',
|
||||
['webhook_message_3'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Location Group Data**\nGroup Name: **%s**\nDoor Count: **%s**',
|
||||
['create'] = 'Created New Door',
|
||||
['delete'] = 'Deleted Door',
|
||||
['edit'] = 'Edited Door',
|
||||
['add_import_data'] = 'Added Imported Doors',
|
||||
['remove_import_data'] = 'Removed Imported Doors',
|
||||
['remove_full_locationgroup'] = 'Removed Full Location Group Doors',
|
||||
['bot_name'] = 'Doorlock',
|
||||
['waypoint_set'] = 'Waypoint Set',
|
||||
['command_opendoormenu'] = 'Open door lock UI',
|
||||
['command_toggledoorlock'] = 'Toogle door lock',
|
||||
['drawtextui_door_locked'] = '<b>Locked</b></p> Press <kbd>E</kbd> to unlock',
|
||||
['drawtextui_door_unlocked'] = '<b>Unlocked</b></p> Press <kbd>E</kbd> to lock',
|
||||
['draw3dtext_door_locked'] = 'Press [E] to unlock',
|
||||
['draw3dtext_door_unlocked'] = 'Press [E] to lock',
|
||||
['emoji_door_locked'] = '🔒',
|
||||
['emoji_door_unlocked'] = '🔓',
|
||||
['lockpick_door_prompt'] = 'Press [E] again to lockpick this door',
|
||||
['doorlock'] = 'Door Lock',
|
||||
['missing_lockpick'] = 'You are missing the required lockpick item',
|
||||
['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
|
||||
['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
|
||||
['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
|
||||
['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
|
||||
['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
|
||||
},
|
||||
|
||||
['DE'] = { --german
|
||||
['data_not_cached'] = 'Versuche es in ein paar Sekunden erneut...',
|
||||
['camera_unavailable'] = 'Kamera nicht verfügbar, Bitte geh näher zur Tür!',
|
||||
['door_locked'] = 'Tür Abgeschlossen',
|
||||
['door_unlocked'] = 'Tür Aufgeschlossen',
|
||||
['webhook_message_1'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Tür Daten**\nStandort Gruppe: **%s**\nTür Name: **%s**\nTür Typ: **%s**',
|
||||
['webhook_message_2'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Importierte Daten**\nDatei Name: **%s**\nTür Anzahl: **%s**',
|
||||
['webhook_message_3'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Standort Gruppen Daten**\nGruppen Name: **%s**\nTür Anzahl: **%s**',
|
||||
['create'] = 'Neue Tür erstellt',
|
||||
['delete'] = 'Tür gelöscht',
|
||||
['edit'] = 'Tür bearbeitet',
|
||||
['add_import_data'] = 'Importierte Türen hinzugefügt',
|
||||
['remove_import_data'] = 'Importierte Türen gelöscht',
|
||||
['remove_full_locationgroup'] = 'Alle Türen für Ort gelöscht',
|
||||
['bot_name'] = 'Doorlock',
|
||||
['waypoint_set'] = 'Wegpunkt gesetzt',
|
||||
['command_opendoormenu'] = 'Öffne Türschloss UI',
|
||||
['command_toggledoorlock'] = 'Benutze Türschloss',
|
||||
['drawtextui_door_locked'] = '<b>Locked</b></p> Press <kbd>E</kbd> to unlock',
|
||||
['drawtextui_door_unlocked'] = '<b>Unlocked</b></p> Press <kbd>E</kbd> to lock',
|
||||
['draw3dtext_door_locked'] = 'Press [E] to unlock',
|
||||
['draw3dtext_door_unlocked'] = 'Press [E] to lock',
|
||||
['emoji_door_locked'] = '🔒',
|
||||
['emoji_door_unlocked'] = '🔓',
|
||||
['lockpick_door_prompt'] = 'Press [E] again to lockpick this door',
|
||||
['doorlock'] = 'Door Lock',
|
||||
['missing_lockpick'] = 'You are missing the required lockpick item',
|
||||
['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
|
||||
['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
|
||||
['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
|
||||
['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
|
||||
['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
|
||||
},
|
||||
|
||||
['NL'] = { --dutch
|
||||
['data_not_cached'] = 'Probeer het over een paar seconden opnieuw...',
|
||||
['camera_unavailable'] = 'Camera niet beschikbaar. Probeer het opnieuw wanneer u dichter bij de deur bent',
|
||||
['door_locked'] = 'Deur op slot',
|
||||
['door_unlocked'] = 'Deur ontgrendeld',
|
||||
['webhook_message_1'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Deurgegevens* *\nLocatiegroep: **%s**\nDeurnaam: **%s**\nDeurtype: **%s**',
|
||||
['webhook_message_2'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Bestandsgegevens importeren **\nBestandsnaam: **%s**\nDoor Count: **%s**',
|
||||
['webhook_message_3'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Locatiegroepsgegevens **\nGroepsnaam: **%s**\nAantal deuren: **%s**',
|
||||
['create'] = 'Nieuwe deur gemaakt',
|
||||
['delete'] = 'Delete Deur',
|
||||
['edit'] = 'Bewerkte deur',
|
||||
['add_import_data'] = 'Geïmporteerde deuren toegevoegd',
|
||||
['remove_import_data'] = 'Geïmporteerde deuren verwijderd',
|
||||
['remove_full_locationgroup'] = 'Volledige locatiegroepsdeuren verwijderd',
|
||||
['bot_name'] = 'Deurslot',
|
||||
['waypoint_set'] = 'Waypoint-set',
|
||||
['command_opendoormenu'] = 'UI deurslot openen',
|
||||
['command_toggledoorlock'] = 'Toogle deurslot',
|
||||
['drawtextui_door_locked'] = '<b>Vergrendeld</b></p> Druk op <kbd>E</kbd> om te ontgrendelen',
|
||||
['drawtextui_door_unlocked'] = '<b>Ontgrendeld</b></p> Druk op <kbd>E</kbd> om te vergrendelen',
|
||||
['draw3dtext_door_locked'] = 'Druk op [E] om te ontgrendelen',
|
||||
['draw3dtext_door_unlocked'] = 'Druk op [E] om te vergrendelen',
|
||||
['emoji_door_locked'] = '🔒',
|
||||
['emoji_door_unlocked'] = '🔓',
|
||||
['missing_lockpick'] = 'You are missing the required lockpick item',
|
||||
['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
|
||||
['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
|
||||
['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
|
||||
['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
|
||||
['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,198 @@
|
||||
window['locales'] = {
|
||||
main: {
|
||||
info: "Door management",
|
||||
version: "Doorlock 1.1.0",
|
||||
logo: `<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.387 32.254"><path d="M0 16.023c0-5.71 3.7-9.517 9.274-9.517 4.707 0 8.2 2.838 8.548 6.956h-4.706a3.691 3.691 0 0 0-3.842-3.288c-2.975 0-4.429 2.32-4.429 5.849 0 3.945 1.73 5.918 4.36 5.918a3.738 3.738 0 0 0 3.911-3.322h4.706c-.484 4.153-3.495 6.991-8.617 6.991-5.641 0-9.2-3.842-9.2-9.587m18.575 0c0-5.779 3.737-9.517 9.379-9.517 5.605 0 9.344 3.738 9.344 9.517 0 5.814-3.739 9.587-9.344 9.587-5.642 0-9.379-3.773-9.379-9.587m13.877 0c0-3.737-1.8-5.849-4.5-5.849-2.907 0-4.534 2.354-4.534 5.849 0 3.808 1.8 5.918 4.534 5.918 2.906 0 4.5-2.354 4.5-5.918m5.603.069c0-5.744 2.976-9.586 8.029-9.586a6.6 6.6 0 0 1 5.434 2.63h.1C51.557 6.091 51.557 0 51.557 0h4.6v21.56a8.083 8.083 0 0 0 .623 3.53v.173h-4.773a4.651 4.651 0 0 1-.45-2.18h-.07a6.54 6.54 0 0 1-5.467 2.527c-4.811 0-7.96-3.531-7.96-9.518m13.739 0c0-3.771-1.765-5.918-4.43-5.918-2.8 0-4.464 2.354-4.464 5.918 0 3.669 1.765 5.849 4.43 5.849 2.872 0 4.464-2.319 4.464-5.849m6.19-.035c0-5.745 3.876-9.551 9.1-9.551 5.017 0 8.824 3.634 8.824 9.1 0 .45 0 .762-.034 1.489H62.835c0 3.183 1.9 4.844 4.5 4.844a3.688 3.688 0 0 0 3.841-2.56h4.533c-.485 3.634-4.152 6.229-8.479 6.229-5.467 0-9.24-4.118-9.24-9.552m13.255-1.938a3.941 3.941 0 0 0-4.152-3.945 4.03 4.03 0 0 0-4.223 3.945Zm5.187 4.915H80.9c0 1.938 1.488 3.149 3.564 3.149 1.973 0 3.116-.76 3.116-1.9 0-1.626-1.281-1.765-5.019-2.768-4.014-1.142-5.606-2.527-5.606-5.4 0-3.253 2.873-5.606 7.267-5.606 4.777 0 7.441 2.353 7.441 5.918H87.2c0-1.558-1.074-2.63-2.977-2.63-1.7 0-2.7.726-2.7 1.8 0 1.176.8 1.592 3.149 2.214 3.288.831 7.752 1.455 7.752 6.057 0 3.461-3.218 5.745-7.96 5.745-4.844 0-8.028-2.631-8.028-6.576M93.592 0h5.019v4.5h-5.019Zm.208 6.852h4.6v18.411h-4.6Zm6.92 19.104h4.6c.45 2.076 1.973 2.907 4.153 2.907 3.15 0 4.326-1.731 4.43-4.292l.1-2.561h-.139c-.761 1.592-3.218 2.63-5.607 2.63-4.844 0-8.063-3.668-8.063-9.136 0-5.4 3.219-9 8.133-9a6.1 6.1 0 0 1 5.3 2.63h.069l-.034-2.284h4.6v17.895c0 4.809-3.737 7.509-8.79 7.509-4.983 0-8.375-2.526-8.756-6.3m13.186-10.348c0-3.426-1.766-5.434-4.43-5.434-2.7 0-4.465 2.147-4.465 5.365 0 3.253 1.731 5.433 4.4 5.433 2.8 0 4.5-2.145 4.5-5.364m6.778-8.754h4.6v2.423h.068a6.489 6.489 0 0 1 5.364-2.769c4.672 0 6.749 3.115 6.749 7.371v11.386h-4.6V13.982c0-2.6-1.384-3.808-3.459-3.808-2.735 0-4.119 2.112-4.119 5.261v9.828h-4.6Zm19.202 14.027h11.5v4.384h-11.5z" style="fill:#fff"/></svg>`,
|
||||
|
||||
alerts: {
|
||||
door_selected: ["Door", "successfully selected", "Door(s) successfully selected."],
|
||||
door_exists: "This door already exists - ",
|
||||
door_does_not_exist: "This door is not in the system. Please create one first.",
|
||||
},
|
||||
},
|
||||
camera: {
|
||||
move: "Mouse - Move",
|
||||
zoom: "Scroll - Zoom",
|
||||
reverse: "Reverse Camera - Middle mouse",
|
||||
exit: "Right click - Exit"
|
||||
},
|
||||
|
||||
control: {
|
||||
search: "Search for doors",
|
||||
search_placeholder: "Door group or door name",
|
||||
search_by_name: "Search by name",
|
||||
search_by_group: "Search by group",
|
||||
found: ["Found", "result(s)"],
|
||||
|
||||
number: "#",
|
||||
group: "Group",
|
||||
name: "Name",
|
||||
lock: "Lock",
|
||||
unlock: "Unlock",
|
||||
camera: "Camera",
|
||||
visit: "Visit",
|
||||
delete: "Delete",
|
||||
delete_group: "Delete group",
|
||||
|
||||
previous: "Previous",
|
||||
next: "Next"
|
||||
},
|
||||
|
||||
create: {
|
||||
alerts: {
|
||||
name_too_long: "The door name needs to be between 1 and 32 characters",
|
||||
name_out_of_scope: "The name includes illegal characters. (<strong>Allowed</strong> - Upper and lower case letters, numbers, <kbd>-</kbd>, <kbd>/</kbd>, <kbd>⎵</kbd>, <kbd>_</kbd>)",
|
||||
location_group_not_set: "You need to select a location group!",
|
||||
passcode_length_bad: "The length of the passcode can be from 0 to 8 numbers",
|
||||
passcode_out_of_scope: "The passcode can only have numbers",
|
||||
permissions_not_set: "For doors without a passcode you need to have at least one permission to set-up the door.",
|
||||
|
||||
// Success
|
||||
door_updated: "Door successfully updated.",
|
||||
door_created: "Door successfully created.",
|
||||
},
|
||||
|
||||
state_editing: "Editing",
|
||||
state_create: "Create a door",
|
||||
|
||||
select_a_door: "Select a new door or pick one from the list",
|
||||
door_selection: "Door selection",
|
||||
door_single: "Single door",
|
||||
door_double: "Double door",
|
||||
door_garage: "Garage door",
|
||||
door_gate: "Gate",
|
||||
door_double_gate: "Double gate",
|
||||
door_edit: "Edit selected",
|
||||
|
||||
button_update: "Update",
|
||||
button_submit: "Submit",
|
||||
button_delete: "Delete",
|
||||
button_cancel: "Cancel",
|
||||
button_clear: "Clear",
|
||||
|
||||
all_doors: "All doors",
|
||||
location: "Location",
|
||||
|
||||
copy: "Copy",
|
||||
paste: "Paste",
|
||||
|
||||
form: {
|
||||
alerts: {
|
||||
location_group_has_doors: "Cannot remove a location group with doors attached to it!",
|
||||
location_group_exists: "This group already exists.",
|
||||
job_name_too_long: "The job/gang name needs to be between 1 and 32 characters",
|
||||
job_name_out_of_scope: "The job/gang name includes illegal characters. (<strong>Allowed</strong> - Upper and lower case letters)",
|
||||
job_grade_nan: "The job/gang grade needs to be a number!",
|
||||
job_grade_too_large: "The job/gang grade needs to be a number between 0 and 16!",
|
||||
|
||||
identifier_too_long: "The identifier needs to be less than 64 characters"
|
||||
},
|
||||
|
||||
helpers: {
|
||||
door_name: "The name which will identify the door",
|
||||
location_group: "A named group which contains doors from the same location. E.g MRPD",
|
||||
location_group_new: "Create new",
|
||||
location_group_select: "Select location group",
|
||||
location_group_none: "No groups",
|
||||
job: "The job/gang name (left), and the job/gang grade (right). E.g. police 0",
|
||||
identifier: "The identifier(s) of people which can access the door controls.",
|
||||
ace: "The ace identifier which will be allowed to access the door.",
|
||||
discord: "The discord role ID which will be allowed to access the door",
|
||||
sound: "The sound which will be played when a door is locked and unlocked.",
|
||||
sound_select: "Select the sound file",
|
||||
locked: "The default state of the door. Ticked = locked",
|
||||
lockpick: "Enables or disabled lockpicking. Ticket = enabled",
|
||||
secret: "If selected the door will not display a lock and remain hidden when approached.",
|
||||
camera: "Enables door camera usability.",
|
||||
passcode: "A passcode which will be used to unlock the door. If there is no passcode set the door will not require it.",
|
||||
distance: "The distance at which the door will become usable.",
|
||||
autolock: "The amount of time in seconds after which the door will automatically lock.",
|
||||
item: "The name of the item which will be allowed to open the door"
|
||||
},
|
||||
|
||||
door_name: "Name",
|
||||
location_group: "Location group",
|
||||
permissions: "Permissions",
|
||||
job: ["Job/gang name", "Grade"],
|
||||
identifier: "Identifier",
|
||||
ace: "Ace",
|
||||
ace_placeholder: "doorlock.police",
|
||||
discord: "Discord",
|
||||
discord_placeholder: "779469416273281035",
|
||||
sound: "Sound",
|
||||
locked: "Locked",
|
||||
lockpick: "Lockpick",
|
||||
secret: "Secret",
|
||||
camera: "Camera",
|
||||
passcode: "Passcode",
|
||||
distance: "Distance",
|
||||
add: "Add",
|
||||
autolock: "Auto lock",
|
||||
item: "Item",
|
||||
item_placeholder: "Item name"
|
||||
},
|
||||
|
||||
selection: {
|
||||
select: ["Press", "LMB", "to select a door"],
|
||||
cancel: ["Press", "RMB", "to cancel selection"],
|
||||
amount_selected: ["You have", "door(s) selected."],
|
||||
}
|
||||
},
|
||||
|
||||
delete: {
|
||||
alerts: {
|
||||
success: "Successfully deleted"
|
||||
},
|
||||
notification: "This action will delete", // ... door name
|
||||
irreversible: "This action is irreversible!",
|
||||
are_you_sure: "Are you sure you want to delete this", // ... door / group
|
||||
yes: "Yes, I am sure!",
|
||||
no: "Cancel",
|
||||
|
||||
type: ["door", "group"]
|
||||
},
|
||||
|
||||
import: {
|
||||
select: "Select to import",
|
||||
select_helper: "Select a GABZ map to import its doors.",
|
||||
|
||||
imported: "Imported",
|
||||
imported_helper: "Remove doors from a GABZ map for unused maps",
|
||||
|
||||
permissions: ["Default permissions", "When importing doors this job / grade will be used as a default.", "When importing doors this identifier will be used as a default."],
|
||||
|
||||
|
||||
job: "Job",
|
||||
grade: "Grade",
|
||||
|
||||
identifier: "Identifier",
|
||||
|
||||
no_permissions: "You need to add at least one permission in order to import doors."
|
||||
},
|
||||
|
||||
navigation: {
|
||||
create_edit: "Create / Edit",
|
||||
control: "Control",
|
||||
import: "Import",
|
||||
settings: "Settings",
|
||||
},
|
||||
|
||||
selector: {
|
||||
icon: `<i class="bi bi-eye-fill"></i>` // from https://icons.getbootstrap.com/
|
||||
},
|
||||
|
||||
settings: {
|
||||
scale: "UI Scale",
|
||||
volume: "Sound volume"
|
||||
},
|
||||
|
||||
permissions: {
|
||||
framework: "Job/gang",
|
||||
identifiers: "Identifier",
|
||||
aceperms: "Ace",
|
||||
discord: "Discord",
|
||||
passcode: "Passcode",
|
||||
items: "Items"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,464 @@
|
||||
--███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
|
||||
--██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
|
||||
--█████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
|
||||
--██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
|
||||
--██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
|
||||
--╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
ESX, QBCore, vRP = nil, nil, nil
|
||||
|
||||
if Config.Framework == 'esx' then
|
||||
pcall(function() ESX = exports[Config.FrameworkTriggers.resource_name]:getSharedObject() end)
|
||||
if ESX == nil then
|
||||
TriggerEvent(Config.FrameworkTriggers.main, function(obj) ESX = obj end)
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
TriggerEvent(Config.FrameworkTriggers.main, function(obj) QBCore = obj end)
|
||||
if QBCore == nil then
|
||||
QBCore = exports[Config.FrameworkTriggers.resource_name]:GetCoreObject()
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'vrp' then
|
||||
local Proxy = module('vrp', 'lib/Proxy')
|
||||
vRP = Proxy.getInterface('vRP')
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--Add your own code here.
|
||||
end
|
||||
|
||||
function GetIdentifier(source)
|
||||
if Config.Framework == 'esx' then
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
return xPlayer.identifier
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||||
return xPlayer.PlayerData.citizenid
|
||||
|
||||
elseif Config.Framework == 'vrp' then
|
||||
local user_id = vRP.getUserId({source})
|
||||
return user_id
|
||||
|
||||
elseif Config.Framework == 'standalone' then
|
||||
return GetPlayerIdentifiers(source)[2]
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
return GetPlayerIdentifiers(source)[2] --return the players identifier here (string).
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--██████╗ ███████╗██████╗ ███╗ ███╗███████╗ ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗███████╗
|
||||
--██╔══██╗██╔════╝██╔══██╗████╗ ████║██╔════╝ ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝██╔════╝
|
||||
--██████╔╝█████╗ ██████╔╝██╔████╔██║███████╗ ██║ ███████║█████╗ ██║ █████╔╝ ███████╗
|
||||
--██╔═══╝ ██╔══╝ ██╔══██╗██║╚██╔╝██║╚════██║ ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ ╚════██║
|
||||
--██║ ███████╗██║ ██║██║ ╚═╝ ██║███████║ ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗███████║
|
||||
--╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝
|
||||
|
||||
|
||||
local function GetAllFivemIdentifiers(source)
|
||||
local temp_table = {}
|
||||
for c, d in pairs(GetPlayerIdentifiers(source)) do
|
||||
temp_table[#temp_table+1] = {full = d, trimmed = d:sub(d:find(':')+1, #d)}
|
||||
end
|
||||
return temp_table
|
||||
end
|
||||
local function PermsCheck_Identifiers(source, data, perms_type)
|
||||
local identifier = GetIdentifier(source)
|
||||
for c, d in pairs(data) do
|
||||
for cc, dd in pairs(GetAllFivemIdentifiers(source)) do
|
||||
if (dd.full == d:lower()) or (dd.trimmed == d:lower()) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if (perms_type == 'admin_perms' and Config.AdminAccess.Framework.ENABLE) or (perms_type == 'door_perms' and Config.DoorAccessPerms.Framework) then
|
||||
if d:lower() == identifier:lower() then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function PermsCheck_AcePerms(source, data)
|
||||
for c, d in pairs(data) do
|
||||
if IsPlayerAceAllowed(source, d) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function GetAllDiscordRoles(source)
|
||||
return exports.Badger_Discord_API:GetDiscordRoles(source)
|
||||
end
|
||||
local function PermsCheck_Discord(source, data)
|
||||
local discord_roles = GetAllDiscordRoles(source)
|
||||
for c, d in pairs(data) do
|
||||
for cc, dd in pairs(discord_roles) do
|
||||
if d == dd then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function PermsCheck_Items(source, data)
|
||||
if Config.Framework == 'esx' then
|
||||
for c, d in pairs(data) do
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local get_item = xPlayer.getInventoryItem(d)
|
||||
if get_item then
|
||||
local count = get_item.count
|
||||
if count > 0 then
|
||||
return true
|
||||
end
|
||||
else
|
||||
E('6034 - ['..d..'] is not a valid item.')
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
for c, d in pairs(data) do
|
||||
if QBCore.Functions.HasItem(source, d, 1) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your own framework item checks here.
|
||||
end
|
||||
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
for c, d in pairs(data) do
|
||||
if exports.ox_inventory:GetItem(source, d, false, true) >= 1 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function CheckAdminPerms(source)
|
||||
if Config.AdminAccess.Framework.ENABLE then
|
||||
if Config.Framework == 'esx' then
|
||||
local perms = ESX.GetPlayerFromId(source).getGroup()
|
||||
for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
|
||||
if perms == d then
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
local perms = QBCore.Functions.GetPermission(source)
|
||||
for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
|
||||
if type(perms) == 'string' then
|
||||
if perms == d then
|
||||
return true
|
||||
end
|
||||
elseif type(perms) == 'table' then
|
||||
if perms[d] then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif Config.Framework == 'vrp' then
|
||||
local perms = vRP.getUserAdminLevel(vRP.getUserId({source}))
|
||||
for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
|
||||
if perms == d then
|
||||
return true
|
||||
end
|
||||
end
|
||||
elseif Config.Framework == 'other' then
|
||||
--Add your own permissions check here (boolean).
|
||||
return true
|
||||
end
|
||||
end
|
||||
if Config.AdminAccess.Identifiers.ENABLE then
|
||||
local perms = PermsCheck_Identifiers(source, Config.AdminAccess.Identifiers.identifier_list, 'admin_perms')
|
||||
if perms then return true end
|
||||
end
|
||||
if Config.AdminAccess.AcePerms.ENABLE then
|
||||
local perms = PermsCheck_AcePerms(source, Config.AdminAccess.AcePerms.aceperms_list)
|
||||
if perms then return true end
|
||||
end
|
||||
if Config.AdminAccess.Discord.ENABLE then
|
||||
local perms = PermsCheck_Discord(source, Config.AdminAccess.Discord.discord_list)
|
||||
if perms then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function CheckDoorPerms_All(source, door_perms_data)
|
||||
if Config.DoorAccessPerms.Identifiers and door_perms_data.identifier and #door_perms_data.identifier > 0 then
|
||||
local perms = PermsCheck_Identifiers(source, door_perms_data.identifier, 'door_perms')
|
||||
if perms then return true end
|
||||
end
|
||||
if Config.DoorAccessPerms.AcePerms and door_perms_data.ace and #door_perms_data.ace > 0 then
|
||||
local perms = PermsCheck_AcePerms(source, door_perms_data.ace)
|
||||
if perms then return true end
|
||||
end
|
||||
if Config.DoorAccessPerms.Discord and door_perms_data.discord and #door_perms_data.discord > 0 then
|
||||
local perms = PermsCheck_Discord(source, door_perms_data.discord)
|
||||
if perms then return true end
|
||||
end
|
||||
if Config.DoorAccessPerms.Items and door_perms_data.items and #door_perms_data.items > 0 then
|
||||
local perms = PermsCheck_Items(source, door_perms_data.items)
|
||||
if perms then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
--██╗ ██████╗ ██████╗██╗ ██╗██████╗ ██╗ ██████╗██╗ ██╗
|
||||
--██║ ██╔═══██╗██╔════╝██║ ██╔╝██╔══██╗██║██╔════╝██║ ██╔╝
|
||||
--██║ ██║ ██║██║ █████╔╝ ██████╔╝██║██║ █████╔╝
|
||||
--██║ ██║ ██║██║ ██╔═██╗ ██╔═══╝ ██║██║ ██╔═██╗
|
||||
--███████╗╚██████╔╝╚██████╗██║ ██╗██║ ██║╚██████╗██║ ██╗
|
||||
--╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
if Config.LockpickItems.ENABLE and Config.LockpickItems.usable_lockpick_item then
|
||||
for c, d in pairs(Config.LockpickItems.lockpick_items) do
|
||||
if Config.Framework == 'esx' then
|
||||
ESX.RegisterUsableItem(d, function(source)
|
||||
TriggerClientEvent('cd_doorlock:LockpickDoor_usableitem', source)
|
||||
end)
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
QBCore.Functions.CreateUseableItem(d, function(source, item)
|
||||
TriggerClientEvent('cd_doorlock:LockpickDoor_usableitem', source)
|
||||
end)
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your own framework code here.
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveLockpickItem(source)
|
||||
if Config.Framework == 'esx' then
|
||||
for c, d in pairs(Config.LockpickItems.lockpick_items) do
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
local get_item = xPlayer.getInventoryItem(d)
|
||||
if get_item then
|
||||
local count = get_item.count
|
||||
if count > 0 then
|
||||
xPlayer.removeInventoryItem(d, 1)
|
||||
return true
|
||||
end
|
||||
else
|
||||
E('6035 - "'..d..'" is not a valid item.')
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||||
for c, d in pairs(Config.LockpickItems.lockpick_items) do
|
||||
if xPlayer.Functions.RemoveItem(d, 1) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your own framework checks here.
|
||||
end
|
||||
|
||||
if GetResourceState('ox_inventory') == 'started' then
|
||||
for c, d in pairs(data) do
|
||||
if exports.ox_inventory:GetItem(source, d, false, true) >= 1 then
|
||||
if Config.Framework == 'esx' then
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
xPlayer.removeInventoryItem(d, 1)
|
||||
return true
|
||||
|
||||
elseif Config.Framework == 'qbcore' then
|
||||
local xPlayer = QBCore.Functions.GetPlayer(source)
|
||||
xPlayer.Functions.RemoveItem(d, 1)
|
||||
return true
|
||||
|
||||
elseif Config.Framework == 'other' then
|
||||
--add your own framework code here.
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
--███████╗██╗ ██╗███╗ ██╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗
|
||||
--██╔════╝██║ ██║████╗ ██║██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
|
||||
--█████╗ ██║ ██║██╔██╗ ██║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
|
||||
--██╔══╝ ██║ ██║██║╚██╗██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
|
||||
--██║ ╚██████╔╝██║ ╚████║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║
|
||||
--╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
|
||||
|
||||
local function GetDoorPerms_Ideitifier_Discord(source)
|
||||
local temp_table = {}
|
||||
if Config.DoorAccessPerms.Identifiers then
|
||||
temp_table.identifiers = GetAllFivemIdentifiers(source)
|
||||
end
|
||||
if Config.DoorAccessPerms.Discord then
|
||||
temp_table.discord = GetAllDiscordRoles(source)
|
||||
end
|
||||
return temp_table
|
||||
end
|
||||
|
||||
local function CheckDoorPerms_Vrp(source, door_perms_data)
|
||||
local user_id = vRP.getUserId(source)
|
||||
for c, d in pairs(door_perms_data) do
|
||||
if vRP.getUserFaction(user_id) == d.name and vRP.getFactionRank(faction) >= d.grade then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function CheckDoorPerms_Ace(source, data)
|
||||
local temp_table = {}
|
||||
for c, d in pairs(data) do
|
||||
if IsPlayerAceAllowed(source, d) then
|
||||
temp_table[#temp_table+1] = d
|
||||
end
|
||||
end
|
||||
return temp_table
|
||||
end
|
||||
|
||||
|
||||
-- ██████╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ██████╗██╗ ██╗███████╗
|
||||
--██╔════╝██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝
|
||||
--██║ ███████║██║ ██║ ██████╔╝███████║██║ █████╔╝ ███████╗
|
||||
--██║ ██╔══██║██║ ██║ ██╔══██╗██╔══██║██║ ██╔═██╗ ╚════██║
|
||||
--╚██████╗██║ ██║███████╗███████╗██████╔╝██║ ██║╚██████╗██║ ██╗███████║
|
||||
-- ╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝
|
||||
|
||||
|
||||
RegisterServerEvent('cd_doorlock:Callback')
|
||||
AddEventHandler('cd_doorlock:Callback', function(id, action, data)
|
||||
local _source = source
|
||||
if action == 'check_admin_perms' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckAdminPerms(_source))
|
||||
|
||||
elseif action == 'get_door_perms_identifier_discord' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, GetDoorPerms_Ideitifier_Discord(_source))
|
||||
|
||||
elseif action == 'check_door_perms_all' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_All(_source, data))
|
||||
|
||||
elseif action == 'check_door_perms_vrp' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_Vrp(_source, data))
|
||||
|
||||
elseif action == 'check_door_perms_ace' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_Ace(_source, data))
|
||||
|
||||
elseif action == 'remove_lockpick_item' then
|
||||
TriggerClientEvent('cd_doorlock:Callback', _source, id, RemoveLockpickItem(_source))
|
||||
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
--███╗ ██╗ ██████╗ ████████╗██╗███████╗██╗ ██████╗ █████╗ ████████╗██╗ ██████╗ ███╗ ██╗███████╗
|
||||
--████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██║██╔════╝██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
|
||||
--██╔██╗ ██║██║ ██║ ██║ ██║█████╗ ██║██║ ███████║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
|
||||
--██║╚██╗██║██║ ██║ ██║ ██║██╔══╝ ██║██║ ██╔══██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
|
||||
--██║ ╚████║╚██████╔╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████║
|
||||
--╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
|
||||
|
||||
|
||||
function Notification(source, notif_type, message)
|
||||
if source and notif_type and message then
|
||||
if Config.Notification == 'esx' then
|
||||
TriggerClientEvent('esx:showNotification', source, message)
|
||||
|
||||
elseif Config.Notification == 'qbcore' then
|
||||
if notif_type == 1 then
|
||||
TriggerClientEvent('QBCore:Notify', source, message, 'success')
|
||||
elseif notif_type == 2 then
|
||||
TriggerClientEvent('QBCore:Notify', source, message, 'primary')
|
||||
elseif notif_type == 3 then
|
||||
TriggerClientEvent('QBCore:Notify', source, message, 'error')
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'cd_notifications' then
|
||||
if notif_type == 1 then
|
||||
TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'success', options = {duration = 5}})
|
||||
elseif notif_type == 2 then
|
||||
TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'inform', options = {duration = 5}})
|
||||
elseif notif_type == 3 then
|
||||
TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'error', options = {duration = 5}})
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'okokNotify' then
|
||||
if notif_type == 1 then
|
||||
TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'success')
|
||||
elseif notif_type == 2 then
|
||||
TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'info')
|
||||
elseif notif_type == 3 then
|
||||
TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'error')
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'ps-ui' then
|
||||
if notif_type == 1 then
|
||||
TriggerClientEvent('ps-ui:Notify', source, message, 'success')
|
||||
elseif notif_type == 2 then
|
||||
TriggerClientEvent('ps-ui:Notify', source, message, 'primary')
|
||||
elseif notif_type == 3 then
|
||||
TriggerClientEvent('ps-ui:Notify', source, message, 'error')
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'ox_lib' then
|
||||
if notif_type == 1 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'success'})
|
||||
elseif notif_type == 2 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'inform'})
|
||||
elseif notif_type == 3 then
|
||||
lib.notify({title = L('doorlock'), description = message, type = 'error'})
|
||||
end
|
||||
|
||||
elseif Config.Notification == 'chat' then
|
||||
TriggerClientEvent('chatMessage', source, message)
|
||||
|
||||
elseif Config.Notification == 'other' then
|
||||
--add your own notification.
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- ██████╗ ████████╗██╗ ██╗███████╗██████╗
|
||||
--██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗
|
||||
--██║ ██║ ██║ ███████║█████╗ ██████╔╝
|
||||
--██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗
|
||||
--╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║
|
||||
-- ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
|
||||
|
||||
|
||||
RegisterServerEvent('cd_doorlock:Debug')
|
||||
AddEventHandler('cd_doorlock:Debug', function()
|
||||
local _source = source
|
||||
print('^6-----------------------^0')
|
||||
print('^1CODESIGN DEBUG^0')
|
||||
print(string.format('^6Framework Identifier:^0 %s', GetIdentifier(_source)))
|
||||
if Config.DoorAccessPerms.Identifiers or Config.AdminAccess.Identifiers.ENABLE then
|
||||
for c, d in pairs(GetAllFivemIdentifiers(_source)) do
|
||||
print(string.format('^6Fivem Identifier: [Full: ^0%s^6] [Trimmed: ^0%s^6]', d.full, d.trimmed))
|
||||
end
|
||||
end
|
||||
|
||||
if Config.DoorAccessPerms.Discord or Config.AdminAccess.Discord.ENABLE then
|
||||
if GetResourceState('cd_devtools') == 'started' then
|
||||
print('^6Devtools debug table sent to client.^0')
|
||||
TriggerClientEvent('table', _source, GetAllDiscordRoles(_source))
|
||||
else
|
||||
print('^6cd_devtools is not started.^0')
|
||||
end
|
||||
end
|
||||
print('^6-----------------------^0')
|
||||
end)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user