lock door script

This commit is contained in:
KingMcDonalds
2024-09-07 14:08:09 -07:00
parent 55aafb0131
commit 5a0aa4afdd
120 changed files with 1778 additions and 1 deletions
Binary file not shown.
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
File diff suppressed because one or more lines are too long
@@ -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}]}
File diff suppressed because one or more lines are too long
@@ -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}]}
File diff suppressed because one or more lines are too long
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
File diff suppressed because one or more lines are too long
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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
@@ -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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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}]}
@@ -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}]}
@@ -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}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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"
}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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}]}
@@ -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 @@
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
+198
View File
@@ -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
}
+101
View File
@@ -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!',
},
}
+198
View File
@@ -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